Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Dyn Array of Record aus DLL

  Alt 24. Nov 2006, 15:17
Hmmm ... pchar also. Den Typ verwende ich sonst auch für die Übergabe von Strings in DLLs.
Eine Speichermanager will/kann/darf ich nicht verwenden, da meine Anwendung mit einer weiteren DLL arbeitet, die sich mit dem Delphi-Speichermanager nicht verträgt (laut Dokumentation, und tut sie auch nicht).

Was passiert eigentlich im Speicher wenn ich der Delphi-DLL
a) einen String,
b) ein PChar,
c) einen Zeiger auf einen String übergebe ??

gibt es da irgendwo etwas zum nachlesen?

Ich habe aus dem DynRecord mal ein Object ( = class (TObject) ) gemacht und ebenfalls den Zeiger in die DLL gegeben.
Das gleiche. Nach FreeLibrary ist das Object zerstört.

Ich dachte bis jetzt, dass bei der "normalen" Übergabe von Variablen eine Kopie im Speicher stellt mit der dann (im meinem Fall die DLL) weiter gearbeitet wird. Da die Übergabe von Delphi-Strings in eine DLL ohne Speichermanager nicht funktioniert, dachte ich mir, ich zeige der DLL wo die Daten stehen indem ich nur einen Pointer rüber reiche.
So gebe ich der DLL quasi nur eine Zahl, die Daten stehen im Adressbereich der Hauptanwendung und ich kann auf den Speichermanager verzichten.

Naja, freilich das klapp solange wie sich die Größe der Daten nicht ändert ...
Das scheint wohl mein Denkfehler zu sein. Aber wie denkt man es richtig?

Ich werde erst mal die Strings in PChar ändern. Mal sehen ob das klappt.
Wie holt man Speicher für diese "Strings" korrekt?
  Mit Zitat antworten Zitat