AGB  ·  Datenschutz  ·  Impressum  







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

Struct, Record

Ein Thema von mcusa · begonnen am 16. Jul 2005 · letzter Beitrag vom 17. Jul 2005
Antwort Antwort
mcusa

Registriert seit: 14. Jul 2005
Ort: TR
1 Beiträge
 
#1

Struct, Record

  Alt 16. Jul 2005, 21:41
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]
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#2

Re: Struct, Record

  Alt 16. Jul 2005, 21:44
Scheint sich wohl ein C++ler zu uns verirrt haben

Code:
 struct MDBEntry* mep
Was willst du denn damit machen? Was willst du genau übergeben?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Struct, Record

  Alt 16. Jul 2005, 22:49
Vielleicht so:
CheckMDB ( 15, @mep ); @malo: Sieht eher nach C aus.
@Fragesteller: Bitte benutze Delphi-Code Tags zukunftig.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Struct, Record

  Alt 17. Jul 2005, 11:20
Moin mcusa,

wenn Du die Funktion in Delphi importierst, kannst Du das auf zwei Wegen machen:

Delphi-Quellcode:
// 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;
der Aufruf kann dann so erfolgen:

Delphi-Quellcode:
// 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;
ausserdem solltest Du, sicherheitshalber, aus dem record einen packed record machen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Struct, Record

  Alt 17. Jul 2005, 17:30
Moin Christian,
Zitat von Christian Seehase:
Delphi-Quellcode:
// 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;
Deine Varianten sind aber nicht gleichbedeutend mit seiner Übersetzung oben. Du verwendest im Endeffekt eine Referenz auf eine Referenz auf einen Record. Er nur eine einfache Referenz.

@mcusa: Kannst du bitte mal die C-Deklaration des Funktionsprototypen und ggf. auch der struct hier geben. Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz