AGB  ·  Datenschutz  ·  Impressum  







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

Typdeklarationen in C und Delphi

Ein Thema von messie · begonnen am 23. Mär 2009 · letzter Beitrag vom 31. Mär 2009
Antwort Antwort
Seite 2 von 3     12 3      
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 13:58
Zitat von Zoot:
Zitat von messie:
Was ist denn bitte
Zitat:
typedef unsigned __int64
für ein Typ in Delphi? Denn cardinal endet ja bei 32 bit.

Grüße, Messie
UInt64.
Wieso kennt mein Delphi das nicht? Wo ist denn der Typ deklariert?

Grüße, Messie
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 14:05
Zitat von messie:
Wieso kennt mein Delphi das nicht? Wo ist denn der Typ deklariert?
Ja, den gibts leider erst ab Delphi 7.
Deklariere dir doch irgendwas anderes mit 8 byte größe und konvertier es hinterher.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 17:23
Ich habe jetzt erstmal einen int64 genommen, vielleicht brauche ich den Wert garnicht.

Mit der dll kann ich jetzt sprechen. Nun muss ich die noch dazu bringen, das Richtige zu tun.

Aus
Code:
DAQmxReadAnalogF64(TaskHandle taskHandle, int32 numSampsPerChan, float64 timeout, bool32 fillMode, float64 readArray[], uInt32 arraySizeInSamps, int32 *sampsPerChanRead, bool32 *reserved);
habe ich
Delphi-Quellcode:
function DAQmxReadAnalogF64(taskHandle: PTaskHandle;
                            numSampsPerChan: INT32;timeout: FLOAT64;fillMode: BOOL32;var readArray: array of double;arraySizeInSamps: UINT32;var sampsPerChanRead: INT32;var reserved: BOOL32): INT32 cdecl
gemacht. Beim Aufruf
DAQmxReadAnalogF64(TaskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,read,nil); bekomme ich aber die Meldung "die Typen der tatsächlichen und formalen Parameter müssen übereinstimmen", da finde ich den Fehler nicht. Ich vermute mal, dass readArray[] und array of double nicht kompatibel sind weil c ja eigentlich keine offenen arrays kennt.
Wie gehe ich damit um?

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 17:44
Zitat von messie:
Ich habe eine Headerdatei und eine c-lib, die per OLE auf die tatsächliche dll zugreift.
Schuss ins Blaue: Ich konnte nicht ganz rauslesen, welche Lib/DLL/... jetzt das OLE-Objekt ist, aber vielleicht kannst du ja direkt auf selbiges zugreifen, und etwaige Wrapper-Bibliotheken auslassen?
Uli Gerhardt
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#15

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 18:13
Genau das versuche ich hier gerade, indem ich direkt auf die hinter den Wrapper liegende dll zugreife. Das funktioniert auch schon etwas, aber die Übersetzung der dll-Zugriffe klemmt etwas.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 20:47
Zitat von messie:
Genau das versuche ich hier gerade, indem ich direkt auf die hinter den Wrapper liegende dll zugreife.
Ach so. Dann nur weiter so.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#17

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 21:36
Zitat von messie:
Aus
Code:
DAQmxReadAnalogF64(TaskHandle taskHandle, int32 numSampsPerChan, float64 timeout, bool32 fillMode, float64 readArray[], uInt32 arraySizeInSamps, int32 *sampsPerChanRead, bool32 *reserved);
habe ich
Delphi-Quellcode:
function DAQmxReadAnalogF64(taskHandle: PTaskHandle;
                            numSampsPerChan: INT32;timeout: FLOAT64;fillMode: BOOL32;var readArray: array of double;arraySizeInSamps: UINT32;var sampsPerChanRead: INT32;var reserved: BOOL32): INT32 cdecl
gemacht. Beim Aufruf
DAQmxReadAnalogF64(TaskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,read,nil); bekomme ich aber die Meldung "die Typen der tatsächlichen und formalen Parameter müssen übereinstimmen", da finde ich den Fehler nicht. Ich vermute mal, dass readArray[] und array of double nicht kompatibel sind weil c ja eigentlich keine offenen arrays kennt.
Da hast du vollkommen Recht! Aber bei dem Float-Array kannst du mogeln (machen die C-Programmierer dauernd):
Delphi-Quellcode:
function DAQmxReadAnalogF64(taskHandle: PTaskHandle;
                            numSampsPerChan: INT32;
                            timeout: FLOAT64;
                            fillMode: BOOL32;
                            var readArray: FLOAT64;
                            arraySizeInSamps: UINT32;
                            var sampsPerChanRead: INT32;
                            reserved: Pointer): INT32 cdecl;
...
  DAQmxReadAnalogF64(TaskHandle, 1000, 10.0, DAQmx_Val_GroupByChannel, data[0], 1000, read, nil);
...
Uwe Raabe
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 22:25
Ein offenes Array wird als zwei Parameter übergeben: Zeiger zu den Daten und höchster Index (d.h. Länge - 1). Außerdem solltest du natürlich kein Var nehmen, wenn du dich für Arrays entscheidest.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

Re: Typdeklarationen in C und Delphi

  Alt 24. Mär 2009, 22:34
dein Delphi könnte eventuell Types.TDoubleDynArray schon kennen
$2B or not $2B
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#20

Re: Typdeklarationen in C und Delphi

  Alt 26. Mär 2009, 10:53
Zitat von Uwe Raabe:
Aber bei dem Float-Array kannst du mogeln (machen die C-Programmierer dauernd):
Delphi-Quellcode:
function DAQmxReadAnalogF64(taskHandle: PTaskHandle;
                            numSampsPerChan: INT32;
                            timeout: FLOAT64;
                            fillMode: BOOL32;
                            var readArray: FLOAT64;
                            arraySizeInSamps: UINT32;
                            var sampsPerChanRead: INT32;
                            reserved: Pointer): INT32 cdecl;
...
  DAQmxReadAnalogF64(TaskHandle, 1000, 10.0, DAQmx_Val_GroupByChannel, data[0], 1000, read, nil);
...
Das hat nicht geklappt. Ich habe auch mal probehalber mit einem festen array versucht, geht auch schief.
data habe ich als array of FLOAT64 deklariert. Was mache ich da falsch?


Zitat von Apollonius:
Außerdem solltest du natürlich kein Var nehmen, wenn du dich für Arrays entscheidest.
Ich habe mich nicht entschieden, sondern bekomme das so vorgegeben. Aber wo ist das problem mit dem array als var-Parameter? Ich hatte das schon häufiger.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:27 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