Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Visual Basic 6.0 / VBA » Falsche Übergabe von Parametern an DLL Funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2007, 14:09 Uhr
MurmelMaster



Ich habe den Thread noch einmal im C++ Unter-Forum gepostet, da das ja ein gemischtes Problem ist und dort mehr Aktivität herrscht. Diesen Thread bitte schließen, sorry für den Doppelpost.

mfg
MM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Visual Basic 6.0 / VBA ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: