String Ausgabe einer Delphi DLL
-
Hallo an alle im Forum
ich habe ein kleines Problem mit der Ausgabe eines Strings vom Typ PChar
und zwar habe ich mit delphi eine kleine DLL geschrieben die mir einen String vom Typ PChar ausgibt.Mit Delphi funktioniert es einwandfrei doch mit dem BCB hab ich so meine Schwierigkeiten.
Hier gibt er mir eine Reihe unbekannter Zeichen aus warum ??
QuellCode
void __stdcall Test(){ TTest * pTest = 0; HINSTANCE h = LoadLibrary("Test.dll"); if(h) { pTest = (TTest*)GetProcAddress(h, "VName"); if(pTest) { Form1->ListBox1->Items->Add(PChar(pTest)); } FreeLibrary(h); } }und im Header
typedef void (__stdcall *TTest)();wer kann mir ein paar Tips geben , bin schon langsam am verzweifeln

Bin über jeden Tip dankbar
Daniel
-
Hallo
Was erwartest du denn?
- Du definierst einen Funktionspointer der a. keinen Rückgabewert hat und b. keinen Parameter besitzt. Wo soll da eine Zeichenkette herkommen?
- Du lädst aus der Datei eine Funktion aber anstatt die (immer noch nichts zurückgebende) Funktion aufzurufen willst du die Adresse dieser Funktion als eine Zeichenkette an den AnsiString-Konstruktor übergeben.
Da brauchst du dich nicht zu wundern wenn du nur Unsinn rausbekommst.Ich weiß jetzt nicht ob und wie globale exportierte Variablen aus DLLs geladen werden können. Aber vermutlich wäre es viel einfacher und sinnvoller anstelle der exportierten Variable eine eigene Funktion zu exportieren, die nichts weiter macht als die interne Variable zurückzugeben. Und schon kannst du wie gewohnt eine Funktion laden und bekommst mit dem Aufruf einen sinnvollen Wert.
bis bald
akari