lundi 25 juin 2007

Comment Delphi compare les valeurs de pointeur ?

On peut très bien faire des convertions forcées entre des pointeurs et des entiers dans Delphi. Cela ne pose pas de problème particulier. Le type Tobject qui est un pointeur sur une instance de classe, peut lui aussi être converti en entier, comme le montre l’exemple suivant. Que se passe t-il alors au niveau code machine en ce qui concerne les comparaisons entre deux pointeurs ?


procedure TForm1.Button1Click(Sender: TObject);
var


lst:TStringList;
a:integer;
begin
lst:=TStringList.create;
lst.AddObject('test',TObject(10));
lst.AddObject('test2',TObject(18));
lst.AddObject('test2',TObject(180));
a:=lst.IndexOfObject(TObject(18));
showmessage(IntTostr(a));
lst.Free;
end;


En regardant les sources de IndexOfObject on a :

function TStrings.IndexOfObject(AObject: TObject): Integer; begin  
 for Result := 0 to GetCount - 1 do
if GetObject(Result) = AObject then Exit;
Result := -1;

end;

A partir de ça le compilateur génère le code suivant : (en vu CPU pas à pas dans le code de la méthode IndexOfObject). :

Le compilateur de delphi converti la comparaison entre pointeurs en comparaison entre entiers ( cmp eax,ebp-$08 ). Il compare ici la valeur contenue dans le registre eax ($A, 10 en décimal) qui est la première valeur du tableau Tobject, à la valeur qui se trouve à l’adresse EBP-$08 c’est à dire $12 qui donne 18 en décimal. En fait Delphi ne sait pas faire de différence entre pointeur et entier, tout simplement parce que cette distinction n’existe pas au niveau CPU. C’est pour lui la même chose, tout est entier sur 32 bits. L’apparente différence entre un entier et un pointeur n’est qu’un pur artifice du langage de Delphi.

Quelques liens à propos de l'AS/400

Une société qui propose du temps machine sur internet

Netshare400.com




Documentations techniques fournis par IBM

AS-400 Online Library - Books in French

AS-400 Online Library - English Language Library Contents




Initiation à la programmation cobol sur AS/400

Programmation en
COBOL sur AS-400


Apple I Replica Creation


Pour ceux qui ne le saurais pas, la société Apple est née dans un garage en 1976. Le premier micro commercialisé par cette société était une carte mère pour amateur avec un 6502, un contrôleur clavier et un contrôleur vidéo intégré.

30 ans plus tard, l'Apple I est devenu un pièce de collection d'une valeur inestimable. Certaines personnes, par amusement ont fait un kit pour construire un clone de l'apple I. Tom Owad décrit dans cet ouvrage le Replica I. Il s'agit d'un livre pour débutant, où tout est décrit pour faire ses soudures, repérer les composants. Le basic de l'apple est aussi abordé. La dernière partie du livre est consacré à un hack d'un mac SE. Ce livre est un vrai régal. On a droit aussi l'aspect historique et à quelques photos d'apple I montés.

Apple I Replica Creation de Steve Wozniak (Préface), Tom Owad (Auteur)

Broché: 416 pages
Editeur : Syngress Publishing; Édition : Pap/Cdr (17 février 2005)
Langue : Anglais
ISBN-10: 193183640X
ISBN-13: 978-1931836401

Quelques liens à propos de SAP R/3

tous ce qui concerne les fichiers IDOC, les connecteurs DCOM, RFC, etc...

SAP Interfacing Technology

Truc et astuce à propos du langage ABAP

ABAP Hints and Tips - Upload and Download ABAP Source Code

Toujours à propos d'ABAP

SAP Repository

Extrait de la doc SAP concernant les interfaces COM SAP

SAP-Bibliothek - SAP Automation RFC and BAPI Interfaces (BC-FES-AIT)