![]() |
Re: Typdeklarationen in C und Delphi
Zitat:
Grüße, Messie |
Re: Typdeklarationen in C und Delphi
Zitat:
Deklariere dir doch irgendwas anderes mit 8 byte größe und konvertier es hinterher. |
Re: Typdeklarationen in C und Delphi
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:
habe ich
DAQmxReadAnalogF64(TaskHandle taskHandle, int32 numSampsPerChan, float64 timeout, bool32 fillMode, float64 readArray[], uInt32 arraySizeInSamps, int32 *sampsPerChanRead, bool32 *reserved);
Delphi-Quellcode:
gemacht. Beim Aufruf
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
Delphi-Quellcode:
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.
DAQmxReadAnalogF64(TaskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,read,nil);
Wie gehe ich damit um? Grüße, Messie |
Re: Typdeklarationen in C und Delphi
Zitat:
|
Re: Typdeklarationen in C und Delphi
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 |
Re: Typdeklarationen in C und Delphi
Zitat:
|
Re: Typdeklarationen in C und Delphi
Zitat:
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); ... |
Re: Typdeklarationen in C und Delphi
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.
|
Re: Typdeklarationen in C und Delphi
dein Delphi könnte eventuell Types.TDoubleDynArray schon kennen :angel:
|
Re: Typdeklarationen in C und Delphi
Zitat:
data habe ich als array of FLOAT64 deklariert. Was mache ich da falsch? Zitat:
Grüße, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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