Einzelnen Beitrag anzeigen

Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Dyn. Record & Array, PChar treffen auf DLL's

  Alt 18. Jul 2008, 17:21
Zitat von Desmulator:
Jetzt komm ich zu der Dynamischen Array. Gibt es eine Möglichkeit diese innerhalb der DLL zu speichern, da ihre Elementanzahl, wie gesagt dynamisch ist.

Delphi-Quellcode:
  TCharRange = record
    Range : array of Char; //Hier können beliebig viele Chars enthalten sein.
    CaseIntensiv : Boolean;
  end;
Delphis Dynamische Arrays sind compilerspezifisch und der Aufbau ist offiziell nicht dokumentiert (soweit ich weiß).

Range ist ein Zeiger, welcher auf das erste Element zeigt (in deinem Fall also ein PChar). Wenn Range nil ist, dann ist das Array als leer (Länge 0) zu interpretieren. Vier Byte vor dem ersten Element befindet sich ein 32-Bit Integer im Speicher, in welchem die Länge oder der Index des letzten Elements steht (bin mir gerade nicht sicher... kann man im CPU-Fenster nachlesen, wenn man Length() verwendet).

Die Implementation dynamischer Arrays könnte jederzeit geändert werden - theoretisch (praktisch gibt es keinen Grund dafür, außer man hat einen 64-Bit Compiler).

ps: Alternative wäre, den Zeiger auf das erste Element und die Länge getrennt zu übergeben.
  Mit Zitat antworten Zitat