Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EILT: DLL - Char[28] in Delphi = ???? (https://www.delphipraxis.net/91316-eilt-dll-char%5B28%5D-delphi-%3D.html)

Meta777 3. Mai 2007 10:26


EILT: DLL - Char[28] in Delphi = ????
 
huhu,

wie geht folgendes in delphi zu übersetzen:
Code:
typedef struct
{
char Name[29]; // name
.... //weitere Char[XX] Felder ausgelassen
unsigned char Pruefsumme; // Pruefsumme des Records
} BLahRecord;
Ich hab es mit String[29], Array[0..28] of Char und PChar versucht - ohne Erfolg.
wie lautet die richtige Übersetzung für "char NAme[29]"?
Und ist "unsigned char" = Byte?

Danke für die Hüülllfen

hoika 3. Mai 2007 10:28

Re: EILT: DLL - Char[28] in Delphi = ????
 
Hallo,


array[0..28] ist schon richtig
du musst aber nen packed record nehmen.

Und zweitens, char oder Byte ist egal.


http://scp.assarbad.net/delphi_c.htm (2. Seite)


Heiko

Meta777 3. Mai 2007 10:32

Re: EILT: DLL - Char[28] in Delphi = ????
 
Danke heiko,
hat ich schon probiert auch als packed record. Leider gehts noch nicht.
Aber vielleicht ist der Aufruf nicht korrekt?
Code:
ReadRecord(Record *Record);
Das heißt doch ic hmuss es als Pointer auf dem Record übergeben, oder?


EDIT:
Mein momentaner Aufruf: Aber es kommt nur Müll ins Record

Delphi-Quellcode:
var
  LRec: PRecord;
begin
  New(LRec);
  try
    FillChar(LRec^, SizeOf(LRec^), #0);
    ReadRecord(LRec);
    memOutput.Lines.Add(LRec^.Name); // Ist nur "Müll" drinne??!??!?!!?

hoika 3. Mai 2007 10:41

Re: EILT: DLL - Char[28] in Delphi = ????
 
Hallo,

zeig mal den C-Prototyp der Funktion + Variablen-Definition.
Vielleicht muss du in Delphi auch noch stdcall definieren.

Unter Delphi ist das als einfachstes als "var" zu definieren.
Wenn du das als Pointer machen willst, musst du @theVar übergeben.

in c:
void bla(TRec *theParam);

In Delphi kann es wie gesagt mit "var" vereinfacht werden,
die Zeiger-Arithmetik macht dann Delphi für dich.

Delphi-Quellcode:
type
  PRec = ^TRec;
  TRec = packed record
end;

proc bla(var theParam: TRec);
proc bla2(theParam: PRec);

var
  MyVar: TVar;
 
bla(MyVar);
bla2(@MyBar);
Heiko

Meta777 3. Mai 2007 10:45

Re: EILT: DLL - Char[28] in Delphi = ????
 
Ich Morehuhn...
hab staat stdcall "of object" geschrieben...

Thank you very much

Gottes Segen Dir :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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-2025 by Thomas Breitkreuz