Einzelnen Beitrag anzeigen

Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: DLL mehrere Strings auslesen

  Alt 20. Mär 2009, 13:58
Mein Vorschlag wäre ja das ganze aufzusplitten:

in der DLL zwei Funktionen:

Delphi-Quellcode:
function GetNetworkAdapterCount: integer;

function GetNetworkAdapter(index: integer; buffer: PChar; size: integer): integer;
Der Aufruf müsste dann nach folgendem Schema erfolgen (Pseudocode):

Code:
ac = GetNetworkAdapterCount;
for i = 0 to ac - 1
begin
  size = GetNetworkAdapter(i, nil, 0);
  -> erstelle einen Buffer mit der Länge size
  GetNetworkAdapter(i, buffer, size);
  -> verwende Buffer weiter.. z.B. als String
     in eine Stringlist oder in ein Array
end;
GetNetworkAdapter wird also 2 mal pro Wert aufgerufen.

Im ersten Aufruf weiss die DLL durch buffer = nil dass sie die Länge des Strings zurückgeben muss.

Beim zweiten Aufruf kopiert sie den String aus der DLL in den Buffer der ja in der Anwendung selbst definiert ist. Wichtig ist das kopieren, denn wenn der Buffer in der DLL freigegeben wird, ist nicht sicher ob da wirklich noch daten drin sind.

Alternativ kannst du wie oben schon erwähnt auch callbacks einsetzen.
  Mit Zitat antworten Zitat