Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.182 Beiträge
 
Delphi 12 Athens
 
#2

AW: Funktion einer dll ausführen klappt nicht

  Alt 12. Feb 2020, 16:34
Delphi-Quellcode:
function lou_translateString(
  tableList: PAnsiChar; // const char *tableList
  inbuf: PWideChar; // const widechar *inbu
  var inlen: Integer; // int *inlen
  outbuf: PWideChar; // widechar *outbuf
  var outlen: Integer; // int *outlen
  var typeform: formtype; // formtype *typeform
  spacing: PAnsiChar; // char *spacing >> ODER var spacing: AnsiChar
  mode: Integer // int mode
): Integer; stdcall;
  external 'liblouis.dll';
Referenzen dort übergeben, wo auch *Referenzen verlangt sind (z.B. spacing ist eine Referenz)
und Wide (Unicode) dort, wo auch Wide verlangt wird (inbuf/outbuf wind WIDE)

Was EXPORT_CALL ist, wissen wir nicht, aber bist du dir sicher dass es stdcall und nicht vielleicht cdecl ist?

Und PS: bitte [CODE]dein Code[/CODE] oder [DELPHI]dein Code[/DELPHI] damit man es besser lesen kann.



lou_translate... scheint keine eigene Error-Methode ala lou_GetLastError zu haben, also könntest du auch einfach mal machsehn ob sie GetLastError des Windows bentzen.
http://liblouis.org/documentation/liblouis.html

Delphi-Quellcode:
SetLastError(ERROR_FILE_INVALID); // 0 oder irgendein Fehler, um zu sehen ob es überhaupt verändert wurde
x := lou_translateString(...);
if x = 0 then
  RaiseLastOSError; //Show(GetLastError)
PS:
Zitat:
The function returns 1 if no errors were encountered2 and 0 otherwise.
Statt Int/Integer könnte man hier auch direkt LongBool verwenden. (True = OK)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Feb 2020 um 11:26 Uhr)
  Mit Zitat antworten Zitat