Einzelnen Beitrag anzeigen

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