Warum wird die Größe eines Delphi-Datensatzes nicht erhöht, wenn eine Prozedur eingeschlossen ist?

8

Ich habe zwei Datensätze mit den gleichen Feldern und einer von ihnen hat eine Reihe von Prozeduren. Warum ist die Größe beider Datensätze gleich?

%Vor%     
Salvador 16.01.2013, 03:00
quelle

2 Antworten

10

Das liegt daran, dass der Datensatz selbst nur die Daten enthält, aus denen der Datensatz besteht, und keine Prozeduren oder Funktionen. Die Prozeduren und Funktionen sind eine Art syntaktischer Zucker , um zu vermeiden, dass der Datensatz selbst als Parameter übergeben wird: die self Variable, die automatisch vom hinzugefügt wird Compiler für Sie.

Jede Methode, die Sie in einem Datensatz deklarieren, hat einen anderen Parameter für den Datensatz selbst, zum Beispiel:

%Vor%

wird geändert in:

%Vor%

Ende jeder Anruf, den Sie vornehmen, wird auch geändert, zum Beispiel:

%Vor%

wird für etwas geändert, das äquivalent ist zu:

%Vor%

Ich habe kein Delphi zur Hand, um zu überprüfen, ob der Parameter am Anfang oder am Ende der Parameterliste hinzugefügt wurde, aber ich hoffe, Sie haben eine Idee.

Natürlich gibt es dafür keine echte Syntax, da on the fly vom Compiler gemacht wird und somit zB die Prozedurnamen nicht geändert werden. Ich habe das getan, um meine Antwort leicht verständlich zu machen.

    
jachguate 16.01.2013, 03:04
quelle
0

Prozeduren nehmen keinen Platz ein. Der Compiler wird sie richtig verbinden. Ihre Adressen müssen sich nicht zur Laufzeit für jeden Datensatz im Speicher befinden. Wenn Sie sich die Darstellung von TData2 im Speicher ansehen, werden Sie die Prozeduren nicht finden.

    
evpo 16.01.2013 03:03
quelle

Tags und Links