PDA

View Full Version : [c++ vb6] passaggio stringhe e ritorno


okay
23-02-2006, 08:03
da c++ chiamo una dll vb6 activex ma il valore di ritorno dalla dll vb6 sono una serie di segni uguali tipo pppppppppppppppppppppppppppppppppppp

c++

//c++ chiama dll vb6
TCHAR *strTemp;
char strReturn[]="StringaDaPassare";
strTemp = ptr->StrRevTest(_bstr_t (&strReturn));


dll vb6

'accetta la chiamata dal c++
Public Function StrRevTest(ByVal s As String) As String 'Long
Dim r As String

r = StrConv(s, vbUnicode)

r = StrReverse(r)

StrRevTest = StrConv(r, vbFromUnicode)
End Function


strTemp = ptr->StrRevTest(_bstr_t (&strReturn));
strTemp dovrebbe essere erassaPaDagnirtS

passando dei numeri è tutto ok. per le stringhe sò che è un pò complicato ma tutto si compila bene.

okay
23-02-2006, 11:23
up

okay
26-02-2006, 06:05
risolto.

per chi fosse interessato e cioè:
da exe passare una query per connettersi ad un db access remoto e fare tutte le query insert, delete e update oppure farsi ritornare una stringa dei campi del record del db remoto.

da c++ non ho trovato nulla, forse qualcosa ma non sono riuscito a farlo funzionare mentre in vb6 sono riuscito a collegarmi da exe e connettermi ad un db access posto in remoto e fare tutte le operazioni del caso.

lo devo fare da c++ in quanto con directplay sto sviluppando il multiplayer quindi la mia idea è stata di costruire una dll vb6 acivex richiamata da codice c++ (server/client del multiplayer).

Il motivo è questo:

Prima i giocatori per fare una partita in multiplayer dovevano vedersi in una chat oppure comunicarsi via telefono l'IP del giocatore che faceva da server poi il giocatore che fà da server imposta il gioco per tutti imosta la stanza/livello di gioco e lancia il server. Poi tutti i player si connettono all'IP del server che poi smista le azioni a tutti i player.

Con db access online non serve + telefonarsi oppure scambiarsi l'IP in una chat ma il client và in un menu appunto per giocare al multiplayer e invia una query al db acces in remoto gli ritornano i campi dei record e popola una listbox con il nick, ip, stanza di gioco dei server che hanno creato una sessione di gioco.

A questo punto un player decide: se vuole agganciarsi ad un server clicca sulla listbox e si collega al server per giocare con quel server oppure crea una propria sessione di gioco inviando i dati al db access inserendo il record dove tutti i client ci si possono connettere.

Una volta che il player server si disconnette prima della disconnessione invia una query di delete record al db access.

Ecco questo era il motivo per cui ho creato la dll vb6 acivex.


passare una stringa da c alla dll vb6 quindi manipolarla e farla ritornare al c e splittarla con stroke è stata un esperienza veramente affascinante basta solo il fatto che il vb non sà cosa è un puntatore essere riuscito a fare questo è veramente una cosa speciale... ;) ;)