Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: DLL XE4 in Delphi 6 ohne sharemem

  Alt 8. Apr 2020, 16:07
Ich hab auch schmerzlich feststellen müssen, das scheinbar die Länge von Records begrenzt ist ... wir hatten hier so ein Monster von 150 shortstrings. Der kam nicht ganz auf der anderen Seite an
Eventuell war es was mit der Speicherausrichtung in den records.
* entweder selbst festlegen, wie die sein soll, oder immer PACKED verwenden
http://docwiki.embarcadero.com/RADSt...ields_(Delphi)

Ich bin mir aber ganz sicher dass es nicht am Record selbst lag, denn eine Grenze gibt es nicht.
Record als CONST-Parameter (oder VAR) wird nur als Referenz übergeben, also garnichts kopiert.

Ohne CONST/VAR/OUT wird der Value übergeben, also eine Kopie auf den Stack gegeben.
Auch als lokale Variable liegt der Record auf dem Stack.
Und wenn nicht genug Speicher auf dem Stack ist, dann knallt es, aber es wird garantiert nichts abgeschnitten.


Übergeben wird jedenfalls definitiv immer alles, aber wenn auf beiden Seiten mit einer unterschiedlichen Speicherausrichtung oder unterschiedlichen Speichergrößen (Char, PChar, Integer/NativeInt, ...) gearbeitet wird, dann stimmen die Offsets im Record natürlich nicht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat