Hallo himitsu!
Danke für deine Hilfe.
Ich quäl mich echt schon seit Tagen rum.
Hier noch ein paar Infos. Ich glaube ich hab da einen groben Denkfehler. Vielleicht kommt jemand drauf:
Zu sagen ist noch, dass WideChar und formtype folgendermaßen definiert sind:
Code:
typedef unsigned int widechar; // hat das irgend einen Einfluss?
typedef unsigned short formtype;
Und die Aufrufe sind mit stdcall definiert:
Code:
#define EXPORT_CALL __stdcall
Hier nochmals die Deklaration der Funktion:
Code:
function lou_translateString(
tableList: PAnsicCar; // const char *tableList
inbuf: PWideChar; // const widechar *inbuf
var inlen: Integer; // int *inlen
outbuf: PWideChar; // widechar *outbuf
var outlen: Integer; // int *outlen
var typeform: formtype; // formtype *typeform
var spacing: AnsiChar; // char *spacing >> ODER var spacing: AnsiChar
mode: Integer // int mode
): Integer; stdcall; external 'liblouis.dll';
Hier meine Deklarationen:
Code:
type
formtype = Word; // unsigned short
var
i: Integer;
tab: AnsiString;
input, output: WideString;
begin
tab := 'de-g2.ctb'; // Umgebungsvariable LOUIS_TABLEPATH sollte zuvor auf Tabellenpfad gesetzt werden
Input := 'Das ist ein Test';
inlen := Length(input);
output := '';
outlen := inlen;
typeform := 0;
spacing := #0;
i := lou_translatestring(
PAnsiChar(tab),
PWideChar(input), inlen,
PWideChar(output), outlen,
typeform, spacing, 0);
if i = 0 then
ShowMessage('Fehler')
else
ShowMessage('OK');
end;
Irgend etwas mache ich aber immer noch falsch. Es klappt einfach nicht.
Ich denke das Problem ist bei "input" und "output". Muss man die beiden Variablen irgendwie anders übergeben oder definieren?
Danke schon mal für euer Gehirnschmalz
Christian
PS: Ich hab auch liblouis angehängt. Darin befinden sich alle Tabellen und die
dll und liblouis.h zum Nachmachen