Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#17

Re: Warum läßt Delphi das zu: Pointertyp(pBla).Member???

  Alt 16. Aug 2005, 12:44
Zitat von negaH:
Delphi-Quellcode:
asm
    MOV EAX,[EDX]
    MOV EAX,[EDX].Member
end;
Alles klar. Dies geht auch beim VC-MASM. Ist nix besonderes, da hier eben nur das Offset dazugerechnet wird. Stattdessen könntest du ja auch nehmen
Delphi-Quellcode:
asm
    MOV EAX,[EDX]
    MOV EAX,[EDX+<offset Member>]
end;
... aber das andere ist lesbarer. Ist also nix besonderes und dient auch nicht der Argumentation, weil es aus anderen Gründen so existiert.

Zitat von negaH:
Der Zugriff auf ein Member eines Records der den Zeiger benötigt erfolgt ohne syntaktisch explizite Dereferenzierung !
Die eckigen Klammern sind bereits eine Dereferenzierung. Diese spezielle Syntax kann man wie oben gezeigt, auch anders schreiben. Dann wird klarer was gemeint ist. Eine Dereferenzierung enthält der Ausdruck dennoch

Wäre es nicht so, müßte folgender Code durchgehen (was er nicht tut):
Code:
    MOV EAX, EDX.Member
Zitat von negaH:
Ja, exakt das ist eine Konsequenz aus der expliziten Derefernzierung, scheußlich das ist (Zitat: Joda).


@tommie-lie: Du weißt, ich gebe dir ungern recht ... hast es dir aber verdient. Die eckigen Klammern sind eben explizite Dereferenzierungen.

BTW: Man kann in Assembler in einem einzelnen Ausdruck nicht mehrere Dereferenzierungen vornehmen ... in Delphi geht dies.

Nachtrag: tommie-lie machte mich gerade darauf aufmerksam, daß vor Member noch ein Typ gehört
  Mit Zitat antworten Zitat