![]() |
Re: C++ DLL in delphi einbinden
Kann es sein, dass die Namen anders sind bzw. nicht mitexportiert werden? In dem Fall bräuchte man noch name bzw. index.
|
Re: C++ DLL in delphi einbinden
Ich schätze, dass StartMessung(Ex) und StopMessung die Funktionen sind, die den Ausgang regeln sollten.
Deshalb würde ich mal vorschlagen, dass du 2 Buttons hinzufügst, die dir temporär die Messung Startet und Stoppen. Dann kannst du schaun, ob es an deinem Code oder an der DLL/Hardware liegt. Nachdem das aber noch ungeklärt is: Zitat:
@Phistev (In der hoffnung, dass ich dich nicht falsch verstanden habe): Ich glaube nicht, dass es beim Importieren fehlt. Wenn da etwas fehlschlägt, gibts ne schöne AV (afaik zumindest). Und von der wird er uns wohl hoffentlich erzählt haben, wenns tatsächlich eine solche geben sollte ;) |
Re: C++ DLL in delphi einbinden
Ich wollte das .h File sehen nicht das konvertierte Delphi-File.
Es ist kein Wunder das es nicht funktioniert. "array of" ist nie eine gueltige Konversion einer C Funktion. Am besten das .h File direkt an mich schicken. robert_marquardt att gmx dott de |
Re: C++ DLL in delphi einbinden
ich frage meinem Betreuer nach dem C Code.
in der Dokumentation steht: EXPORT_APIintStartMessungEX(int*pChldx,int chCount){call this function to start data acquistion} EXPORT-APIintGetBlockValues(float*const pValues) EXPORT-APIintGetBlockValuesEx(float*const pValues,int numVec) {call this function to get new data values from amplifier} |
Re: C++ DLL in delphi einbinden
Hallo Herr Robert,
ich werde Ihnen eine mail schicken.Danke |
Re: C++ DLL in delphi einbinden
Jetzt bräuchte man noch zum Makro "EXPORT" die Deklaration. Kann bisher alles mögliche von der Aufrufkonvention her sein - usw.
|
Re: C++ DLL in delphi einbinden
Wie Robert M. schon sagt:
Delphi-Quellcode:
dürfte nicht stimmen, könnte eher so aussehen:
pValues: array of single
Delphi-Quellcode:
mit Inc(Puffer) oder PSingle(Integer(Puffer) + i*AnzahlDaten+j)^ kommst du dann an die weiteren Werte.
pValues: PSingle
|
Re: C++ DLL in delphi einbinden
Wenn die C-Variante bei __stdcall vor dem Zeiger auf das erste Element den Index des letzten Elements (High) als Integer auf dem Stack ablegt, dann kann man mit 'Offenen Arrays' arbeiten um sich die Arbeit zu erleichtern (sollte man vielleicht als overload in Betracht ziehen)
Delphi-Quellcode:
// 1:1
procedure Foo(A: PInteger; H: Integer); stdcall; overload; var I: Integer; begin for I := 0 to H do begin ShowMessage(IntToStr(A^)); Inc(A); end; end; // open array procedure Foo(A: array of Integer); stdcall; overload; var I: Integer; begin for I := 0 to High(A) do ShowMessage(IntToStr(A[I])); end; // test procedure TForm1.Button1Click(Sender: TObject); var I: Integer; A: array [0..3] of Integer; begin // 1:1 for I := 0 to High(A) do A[I] := I; Foo(Addr(A[0]), High(A)); // open array Foo([0, 1, 2, 3]); end; |
Re: C++ DLL in delphi einbinden
Das mit dem "array of" ist etwas gefaehrlich und ausserdem ist die uebliche Konvention das die Laenge nach dem C-Array folgt.
Das Zip war korrupt. Haette ich nicht inzwischen DSL waere ich auch noch sauer, denn ich habe nur nach dem .h File gefragt und offensichtlcih ein ganzes Projekt bekommen. Die Unis sind auch nicht mehr was sie mal waren. Frueher konnten die Leute wenigstens lesen. |
Re: C++ DLL in delphi einbinden
Zitat:
(oder vielleicht liest ein C++-Entwickler mit und lernt dabei Delphi *g*) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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