AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

c DLL char++ übersetzen

Ein Thema von mfoerste · begonnen am 17. Sep 2019 · letzter Beitrag vom 18. Okt 2019
 
mfoerste

Registriert seit: 26. Sep 2005
10 Beiträge
 
Delphi 10.3 Rio
 
#1

c DLL char++ übersetzen

  Alt 17. Sep 2019, 12:04
Hallo,
ich kenne mich leider nicht gut mit Zeigern aus und muss jetzt eine fremde dll einbinden, die viel mit Zeigern arbeitet. Funktionen ohne Zeiger vom Typ char** konnte ich erfolgreich einbinden, aber mit bekomme ich es einfach nicht übersetzt.

Nach vielen Stunden des vergebenen Suchens möchte nun hier um Hilfe bitten.

Die Dll (in c geschrieben) hat eine einfache function, die nur eine LogMessage und deren Länge zurückgibt. Die Definition ist laut Hersteller wie folgt:
Code:
short int readLogMessage(unsigned char **logMessage,
                         unsigned long int *logMessageLength);
Ich habe u. a. versucht, dies so zu übersetzen:
Code:
function readLogMessage(logMessage:ppAnsiChar;
                        logMessageLength:PWORD):integer;stdcall;external 'fremdedll.dll';
Um an die Logmessage zu kommen habe ich mir folgenden Code überlegt, der leider nicht wirklich funktioniert:
Code:
type
TArrayOfAnsiChar = array of AnsiChar;
pArrayOfAnsiChar = ^TArrayOfAnsiChar;

var
msg: ppAnsiChar;
ergebnis,i: integer;
pmsg : pArrayOfAnsiChar;
msgLength: pWord;
str : string;

begin
  new(msg);
  new(pmsg);
  new(msgLength);
  ergebnis := readLogMessage(msg,msgLength);
  memo1.lines.add(inttostr(msgLength^));
  pmsg := pointer(msg);
  str := '';
  for i := 0 to msgLength^-1  do
  begin
    str := str + pmsg^[i];
  end;
  ShowMessage(str);
end;
msgLength^ gibt 305 zurück, was laut Hersteller der dll wohl realistisch sein soll. str hat folgenden Inhalt:

'0‚'#1'-'#2#1#2#6#9#4#0#$7F#0#7#3#7#1#1'€'#$10'StartTransa ction'#$0081#$14'a'#0's'#0'i'#0'g'#0'n'#0't'#0's'# 0'e'#0'_'#0'd'#0'‚YB'#0'e'#0'l'#0'e'#0'g'#0'^'#0'7 '#0'5'#0'.'#0'3'#0'3'#0'_'#0'7'#0'.'#0'9'#0'9'#0'_ '#0'0'#0'.'#0'0'#0'0'#0'_'#0'0'#0'.'#0'0'#0'0'#0'_ '#0'0'#0'.'#0'0'#0'0'#0'^'#0'1'#0'0'#0'.'#0'0'#0'0 '#0':'#0'B'#0'a'#0'r'#0'_'#0'5'#0'.'#0'0ƒ'#$E'K'#0 'a'#0's'#0's'#0'e'#0'n'#0'b'#0'…'#1' '#4' ÎŒ6,qPò³'#$19'Y½ZDHâo'#$13'ŠÍçBNhéh‹m¼Öœ™\0'#$A#6# 8'*†HÎ='#4#3#2#2#1'!'#$17#$D'190914143703Z'#4'G0E' #2'!'#0#$008F'øA$™I'#$0081')Ó–8'#$1D'šáÉ”¯oEÛâYEÛÓ 9#B[/ŒN'#2' *~§ƒs#'#5'(Øp\¬¢ívO'#$14'¥@ÉtÚÉÄFËMH_u¨¬'

Teilweise sieht es wie nullterminierte Strings aus.
Jemand eine Idee wie es richtig funktioniert?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz