![]() |
Struct, Record
Hallo,
habe folgendes Problem, es wäre schön wenn mir jemand weiter helfen könnte.
Delphi-Quellcode:
// check address on the bus
function CheckMDB ( devaddr: BYTE; dp: lpMDBEntry ): Integer; stdcall; external MDB_DLL; // devices at the bus type MDBEntry = record exist: Integer; // device exists supported: Integer; // supported by DLL manufacturer: Array [0.. 3] of Char; // manufacturer model: Array [0..12] of Char; // model end; lpMDBEntry = ^MDBEntry; Und hier ist das Problem ! CheckMDB ( 15, struct MDBEntry* mep ); Ich bekomme hier die Meldung: [Fehler] Server1.pas(197): Undefinierter Bezeichner: 'struct' [Fehler] Server1.pas(197): '(' erwartet, aber '*' gefunden [Fataler Fehler] Server.dpr(6): Verwendete Unit 'Server1.pas' kann nicht compiliert werden [edit=alcaeus]delphi-Tags eingefuegt. In Zukunft bitte selbst machen. Mfg, alcaeus[/edit] |
Re: Struct, Record
Scheint sich wohl ein C++ler zu uns verirrt haben :mrgreen:
Code:
Was willst du denn damit machen? Was willst du genau übergeben?
struct MDBEntry* mep
|
Re: Struct, Record
Vielleicht so:
Delphi-Quellcode:
@malo: Sieht eher nach C aus.
CheckMDB ( 15, @mep );
@Fragesteller: Bitte benutze Delphi-Code Tags zukunftig. |
Re: Struct, Record
Moin mcusa,
wenn Du die Funktion in Delphi importierst, kannst Du das auf zwei Wegen machen:
Delphi-Quellcode:
der Aufruf kann dann so erfolgen:
// 1. Variante: C-Stil
function CheckMDB (const devaddr: BYTE;const dp: lpMDBEntry): Integer; stdcall; external MDB_DLL; // 2. Variante: Borland-Stil function CheckMDB (const devaddr: BYTE;var dp: lpMDBEntry ): Integer; stdcall; external MDB_DLL;
Delphi-Quellcode:
ausserdem solltest Du, sicherheitshalber, aus dem record einen packed record machen.
// 1.
var pmdb : lpMDBEntry; begin pmdb := AllocMem(SizeOf(pmdb)); try // Felder in pmdb, soweit erforderlich, initialisieren CheckMDB(15,pmbd); // mit dem Aufruf weiterverarbeiten finally FreeMem(pmdb,SizeOf(pmdb)); end; end; // 2. var mdb : MDBEntry; begin // Felder in pmdb, soweit erforderlich, initialisieren CheckMDB(15,pmbd); // mit dem Aufruf weiterverarbeiten end; |
Re: Struct, Record
Moin Christian,
Zitat:
@mcusa: Kannst du bitte mal die C-Deklaration des Funktionsprototypen und ggf. auch der struct hier geben. Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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