Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: Probleme mit Datentypen bei einer DLL

  Alt 21. Jun 2012, 14:12
Normalerweise übergibt man einen Speicherbereich, den man selbst reserviert hat,...
In dem konkreten Fall wäre die Art der Datenübergabe aber schon plausibel.
Es gibt ja offensichtlich mehrere Fehlermeldungen, die über einen errorCode ausgewählt werden.
Die Strings liegen in dem Fall hartcodiert im Speicherbereich der DLL und der Aufrufer bekommt lediglich einen Zeiger zurück.
Delphi-Quellcode:
function xyzErrMsg(errorCode : Word): PAnsiChar; stdcall; external xyzdll name 'ErrMsg';

var
  Meldung : AnsiString; // nicht PAnsiChar !
  Fehlernummer : Word;
Begin
  Fehlernummer := 42; // nicht vergessen die Fehlernummer zu setzen!!!
  Meldung := xyzErrMsg(Fehlernummer); // Zeiger auf 0-terminierten String wird automatisch in einen Delphi-String umgewandelt. (Compiler Magic)
  ShowMessage(Meldung);
Andreas

Geändert von shmia (21. Jun 2012 um 14:15 Uhr)
  Mit Zitat antworten Zitat