Einzelnen Beitrag anzeigen

hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: c DLL char++ übersetzen

  Alt 15. Okt 2019, 15:12
Hallo,

ich wollte jetzt nicht den x ten Thread zur TSE Programmierung eröffnen und der Code der hier geschrieben wurde sieht schwer nach A-Trust aus
Bei mir sieht die ganze Sache komplett anders aus.

Delphi-Quellcode:
function TSE_readLogMessage(var logMessage: TBytes; var logMessageLength: LongWord): ShortInt; stdcall; external 'fremdedll.dllname 'readLogMessage';

procedure SaveBytesToFile(const Data: TBytes; const Len: LongWord; const Filename: String);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(Filename, fmCreate);
  try
    if Data <> nil then
      Stream.WriteBuffer(Data[0], Len);
  finally
    Stream.Free;
  end;
end;

procedure ReadLogMessage(BinFilename: String);
var
  res: ShortInt;
  log: TBytes;
  len: LongWord;
begin
  log := nil;
  len := 0;

  res := TSE_readLogMessage(&log, &len);
  setLength(log, len);
  SaveBytesToFile(log, len, BinFilename);
end;
Ich bekomme da genau so einen Quark raus, wie bei dem JAVA Beispiel.
Das einzige was richtig funktioniert sind die ganzen ExportDataFilteredByxxxxx funktionen. Start und FinishTransaction war auch nicht so kritisch. Wo ich komplett auf dem Schlauch stehe sind die Rückgabewerte. Nirgens ist definiert was z.B ERROR_START_TRANSACTION_FAILED für einen Wert hat.
Es gibt ein C Beispiel mit header dateien, in diesen stehen negative Rückgabewerte für die Konstanten z.B -5001. Ich bekomme als Rückgabe entweder eine 0 oder z.B 116. Hat da jemand eine Idee?
Chris
  Mit Zitat antworten Zitat