![]() |
Übergabe eines CStrings in Delphi an eine DLL-Funktion
Folgendes Problem:
Ich habe mich mit jemanden zusammengeschlossen und wir haben vor für die DVBs-Karte Nexus, die von TechnoTrend / Hauppauge hergestellt wird, ein Programm zu schreiben mit dem man TV gucken kann. TechnoTrend hat hierfür ein SDK herausgebracht. Allerdings ist dies in C++ und wir wollen das in Delphi umsetzen. Die Karte zu initialisieren haben wir bereits geschafft. Als nächster Schritt muß jetzt allerdings die Firmware der Karte geladen werden. Dies geschieht über eine Funktion die in einer DLL integriert ist (wie alle weiteren Funktionen auch). Um auf die Funktionen zuzugreifen, müssen die Funktionen in einer Klasse eingebettet sein (was kein Problem ist). Hier ist nun die entsprechende C++-Funktion die die Firmware auf die Karte überträgt (der genaue Funktionsname ist geändert, damit wir nicht gegen die Lizenzbestimmung von TechnoTrend verstoßen):
Code:
"CString" ist in unseren Augen der Typ, der an die Routine übergeben werden muß. "path" ist die Variable die den Pfad zur Firmware enthält.
DVB_ERROR xyz(CString* path);
Im Beispiel, das dem SDK beiliegt, sieht der Aufruf wie folgt aus (Funktionsname: siehe weiter oben):
Code:
"abc" steht für die Klasse und "xyz" ist die Funktion.
CString sPath,s2,s3;
GetExePath(sPath,s2,s3); sPath += CString("Boot\\") + "24" + CString("\\") ; error = abc.xyz(&sPath); Unsere Frage: wie sieht der 2. Teil entsprechend in Delphi aus? Das Erstellen der Klasse für den Funktionsaufruf ist bereits erledigt und funktioniert. Wir haben schon einige Variationen mit PChar probiert. Diese enden allerdings in einer "Access Violation" die sich (komischerweise?) auf die "MFC42.dll" bezieht. |
Re: Übergabe eines CStrings in Delphi an eine DLL-Funktion
ist wohl was erweitertes als ein string.. sowas wie ein objekt.. also ne intelligenter string :)
![]() |
Re: Übergabe eines CStrings in Delphi an eine DLL-Funktion
Zitat:
Zitat:
Habt ihr ein NDA unterschrieben? Zitat:
|
Re: Übergabe eines CStrings in Delphi an eine DLL-Funktion
Hallo
Ich bin der zweite Mitspieler :-) Mhm deswegen haben andere Software auch einen Wrapper in c++ geschrieben. Gibts wirklich keine Möglichkeit? MFG |
Re: Übergabe eines CStrings in Delphi an eine DLL-Funktion
Zitat:
Zugriff auf die Funktionen der DLL: Die Funktionen der DLL sind in einzelne Bereiche aufgeteilt. Da gibt es z. B. einen Bereich der sich allgemein mit dem Board befasst. Ein weiterer ist für den Frontend (Betriebssystem) zuständig. Wieder ein anderer für ein angeschlossenes CI (Common Interface = dient der Entschlüsselung von PayTV-Programmen über eine Abo-Karte). Diese einzelnen Bereiche werden über eine Klasse angesprochen. Vereinfacht ausgedrückt: Es soll z. B. die Version des Frontends ausgegeben werden. Diese Funktion hat beispielsweise den Namen "FrontendVersion". Die Klasse heißt z. B. "NexusFrontend". Dann ergibt sich daraus folgendes: NexusFrontend.FrontendVersion Durch die Splittung der Funktionen in Bereiche wird das Ganze übersichtlicher und man weiß sofort, wo welche Funktion hingehört bzw. kann anhand der Klasse sehen, für welchen Bereich der Karte sie zuständig ist. Was wir nun gemacht haben: wir haben von jedem Bereich eine Klasse erstellt (abgeleitet von TObject) und die dazugehörigen Funktionen als "Public" deklariert. Das hab ich (in Kurzform) damit gemeint. :-D Zitat:
Das "Lizenzabkommen" von TechnoTrend gibt es ![]() |
AW: Übergabe eines CStrings in Delphi an eine DLL-Funktion
Hallo,
bin auch am programmieren mit Borland Builder 6.0 Ebenso Nexus Karte Hätte interesse an Quellcode. Grüße Zorro |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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