Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Inhalt einer TStringList in ein dynamisches String Array

  Alt 5. Mai 2009, 11:06
Zitat von Bernhard Geyer:
Zitat von himitsu:
Dynamische Arrays sollten ja eigentlich 'ne Referenzzählung besitzen
Wirklich? Wäre mir neu.
siehe FType.pas Abschnit "Compiler Intern Data-Types"

Delphi-Quellcode:
Const DynArrayInfo = SizeOf(Header); // Herader = RefCount + ElementCount
  MaxLengthOfMyType = (High(Integer) - DynArrayInfo) div SizeOf(TMyType);

Type TDynArrayInfo = packed Record
    RefCount: LongInt;
    ElementCount: LongInt;
    Data: packed Array[0..MaxLengthOfMyType-1] of TMyType;
  End;
und wie bekannt ist, zeigt der interne Pointer auf Data ...

PS: AnsiString und UnicodeString sind auch nur ein dynamisches Array (allerdings mit noch einem zusätzlichen 0#-Data-Feld am Ende) und WideString ist ein OLEStr

[add]
Zitat:
Aber der Code sieht mit der lokalen Variablen nach C/C++ aus und da wird mit return die Routine verlassen.
genau das meinte ich ... in Delphi ist das ja nicht so, aber viele übersetzen C-Code halt direkt und mit der nun "unnötigen" Temp-Variable
$2B or not $2B
  Mit Zitat antworten Zitat