000
10.09.2007, 10:05 Uhr
MurmelMaster
|
Hi,
bin leider etwas unerfahren was VB und DLL Importe angeht, weshalb die folgende Frage wohl ziemlich trivial ist. SuFu habe ich genutzt aber nichts gefunden. Es geht darum einen String an die DLL Funktion zu geben und dort mit Daten/Zeichen zu füllen. Hierzu kommt es allerdings zu einem Fehler wenn ich es ByRef übergebe und der String wird nicht mit den entsprechenden Daten gefüllt.
Ich habe folgende Funktion aus einer C DLL importiert.
Visual Basic: |
Declare Function Dispatcher Lib "RSF_Assistent.dll" _ Alias "_Dispatcher@12" _ (ByVal dwMsg As Long, ByRef pszStringData As String, ByRef pliNumData As Long) As Long
|
Aufgerufen wird diese Funktion in VB wie folgt:
Visual Basic: |
Dim liResult As Long Dim sDate As String Dim liDummy As Long liResult = Dispatcher(4, sDate, liDummy)
|
Die Dispatcher-Funktion :
C++: |
long __declspec(dllexport) WINAPI Dispatcher( DWORD dwMsg, // Message char *szStringData, // String data long *plNumValues // Numeric data ){ // Dispatcher switch(dwMsg){ case RSF_MSG_ONFILENEW: NewJob(); break; case RSF_MSG_ONFILELOAD: LoadFile(szStringData); break; case RSF_MSG_ONFILESAVE: SaveFile(szStringData); break; case RSF_MSG_GETDATE: GetDate(szStringData); break; default: return(VB_TRUE); } return(VB_TRUE); } // Dispatcher
|
Letztendlich die GetDate-Funktion:
C++: |
DWORD GetDate(char* pcDate){ pcDate = (char*)malloc(25*sizeof(char)); sprintf(pcDate,"%s",strJobData.pcDate); return VB_TRUE; }
|
Dadurch das ich Speicher alloziere, verhindere ich zwar den Fehler aber der String in Basic bleibt unverändert. Danke im Voraus für die Hilfe.
mfg MM Dieser Post wurde am 10.09.2007 um 10:07 Uhr von MurmelMaster editiert. |