Entwickler-Ecke

Dateizugriff - Fragen zu DLL Datei?


jackie05 - Sa 13.09.08 22:57
Titel: Fragen zu DLL Datei?
Hallo,
ich habe folgendes problem und zwar, möchte ich meine Delphi DLL Datei in eine andere Programmiersprache einbinden, das ist kein problem für micht, aber ich muss als Rückgabetyp PChar benutzen statt string.

Delphi-Quelltext
1:
2:
3:
4:
function HelloWorld(): pchar; stdcallexport;
begin 
  result := 'Hello World!';
end;


diese Funktion kann ich problemlos mit Blitz3D aufrufen, aber wenn ich funktionen schreibe und noch parameter übergebe:

Delphi-Quelltext
1:
2:
3:
4:
function TestFunktion(MSG: string): pchar; stdcallexport;
begin
  result := 'Hallo, '+MSG;
end;


dann bekomme ich eine fehlermeldung, wenn ich diese funktion versuche aufzurufen mit Blitz3D.

woran könnte der fehler eigentlich liegen?

Wenn ich funktionen schreibe, ohne weitere Parameter, dann funktioniert alles.

Ich bedanke mich schonmal im Voraus.

MfG


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 14.09.2008 um 00:03


Boldar - Sa 13.09.08 23:05

user profile iconjackie05 hat folgendes geschrieben:

...PChar benutzen statt string...


Du gibts die Antwort doch schon selbst^^


jackie05 - So 14.09.08 00:03

Ja, ich meine wenn ich funktionen aufrufen möchte die noch weitere Parameter haben, dann geht das nicht.
Ich bekomme in Blitz3D folgende fehlermeldung:
Memory access violation

Irgendwas mache ich falsch in der DLL Datei mit der funktion.

wie könnte ich das problem lösen?

MfG


Tilman - So 14.09.08 00:06

Naja dein Parameter ist ja gerade eben ein string und kein PChar, das wird es dann doch wohl sein :-)


jackie05 - So 14.09.08 01:30

Danke Dir.

Ich könnte das auch so machen:

Delphi-Quelltext
1:
2:
3:
4:
function TestFunktion(MSG: string): pchar; stdcallexport;  
begin  
  result := PChar('Hallo, '+MSG);  
end;


Ich muss diesen Parameter als String definieren, da ich in meine anderen Funktion Stringverarbeitung mache und PChar ist da wohl schlecht dafür geeignet.

Irgendwie funktioniert das nicht, naja, ich werde es mal irgendwie versuchen.

MfG


Delete - So 14.09.08 02:56

Du kannst problemlos einen PChar nach String casten und umgekehrt. Allerdings wirst du noch ein paar Probleme bekommen. Wie es richtig geht kannst du hier nachlesen: http://www.michael-puff.de/Artikel -> StringDLL.shtml