Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: c DLL char++ übersetzen

  Alt 17. Sep 2019, 12:56
Üblicherweise sind solche Zeiger auf Zeiger ein Hinweis darauf, dass hier die DLL eine Variable beschreiben möchte. Deshalb würde ich schon readLogMessage anders formulieren.

Vielleicht geht es so:

Delphi-Quellcode:
function readLogMessage(var logMessage: pAnsiChar;
                        var logMessageLength:Integer):integer;stdcall;external 'fremdedll.dll';
und dann

Delphi-Quellcode:
var
 msg: pAnsiChar;
 ergebnis: integer;
 msgLength: integer;
 str : Ansistring;

begin
  ergebnis := readLogMessage(msg,msgLength);
  memo1.lines.add(inttostr(msgLength));
  SetLength(str, msgLength);
  AnsiStrings.StrLCopy(PAnsiChar(str), msg, msgLength);
  ShowMessage(String(str));
end;

Geändert von samso (17. Sep 2019 um 13:00 Uhr) Grund: msgLength ist long int => Integer und Kopierfehler
  Mit Zitat antworten Zitat