Einzelnen Beitrag anzeigen

Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: MyExportedFunction with VAR Params : ARRAY OF PChar?

  Alt 9. Dez 2004, 08:08
Das liegt daran, wie dynamische Array's in Delphi verwaltet werden. Dazu gab es hier schön öfter was. Ein dynamisches Array ist ein Pointer auf einen Speicherbereich, bei dem die ersten vier Bytes die Länge darstellen und danach die einzelnen Elemente (in deinem Fall viele PChars). übergibts du jetzt ein dynamisches Array als var Paramater dann wird quasi ein Zeiger auf einen Zeiger übergeben.

Wenn du kompatibel zu anderen Programmiersprachen sein möchtest musst du auf Strings und dynamische Arrays verzichten.

Du könntest allerdings ein statisches Array daraus machen und nur die Adresse übergeben
Delphi-Quellcode:
type
  PPCHarArray = ^TPCharArray;
  TPCharArray = Array[0..65535] of PChar;

MyExportedFunction( Param1 : INTEGER; Params : PPCharArray)
Dann sollte man entweder mit Params^[0] oder Params[0] (weiss jetzt nicht was funktioniert) auf die Elemente zugreifen können. Allerdings brauchst du dann noch einen Paramater um die Elementanzahl zu übergeben.

Ob es generell mit PChars korrekt klappt kann ich jetzt nicht versprechen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat