Oppure

Loading
03/05/08 12:21
gismo
ok..ho fatto un pò di prove..però non mi funziona..
sicuramente sbaglio qualcosa..
ti posto il codice..dimmi se vedi l'errore..
per ovvi motivi ti posto solo i punti salienti..:)

//Codice DLL - c

//ministruttura di prova
struct Test{
	short int n;
};
..
//procedura da eseguire per il VB
//dovrebbe scrivere nel campo TYPE del VisualBasic il numero 2
void __stdcall prova(struct Test *Op){
	Op->n = 2;
}


Ora il codice nel VB:
'Dichiarazione funzione DLL
Public Declare Sub prova Lib "testDll.dll" (ByRef struct As Test)
'struttura uguale a quella del C
Type Test
    numero As Integer
End Type

all'evento click il valore 2 dovrebbe finire in una textbox con li seguente codice..
Private Sub Command1_Click()
Dim struct As Test
'richiamo la procedura definita
prova struct
'scrittura del numero della textbox
Text1.Text = CStr(struct.numero)
End Sub


al momento mi stampa solo 0 nelle textbox, sono abbastanza sicuro che il problema sia nel puntatore alla funzione C..anzi ne sono certo..
se ci capisci qualcosa sarebbe fantastico :k:

fammi sapere
grazie
aaa
03/05/08 12:29
gismo
RISOLTO..
non avevo modificato correttamente il file .def della DLL..
L'errore che mi visualizzava era il 453 (errore di RUN-TIME)..
per ora sono apposto..

grazie mille per il tempo che mi hai concesso..
aaa
04/05/08 14:46
gismo
purtroppo rieccomi qui..risolto un problema sono incappato in un'altro..
quello che devo fare adesso è estrarre/inserire elementi in un file tramite una dll in VB..
la routine è questa:
void __stdcall carica_flex(struct Dati *Op, short pos){

	FILE *F_Archivio;
	
	struct Dati Fdati;
	F_Archivio = fopen("Archivio_Nomi.txt","r");
	short i=0;
	while(feof(F_Archivio) == false){
		if(i==pos){
			fscanf(F_Archivio,"%s",&Fdati.Cognome);
			fscanf(F_Archivio,"%s",&Fdati.Nome);
			fscanf(F_Archivio,"%s",&Fdati.citta);
			fscanf(F_Archivio,"%s",&Fdati.indirizzo);
		}
	}
	strcpy(Op->Cognome, Fdati.Cognome);
	strcpy(Op->Nome, Fdati.Nome);
	strcpy(Op->citta, Fdati.citta);
	strcpy(Op->indirizzo, Fdati.indirizzo);

	fclose(F_Archivio);

}

praticamente legge tutto un file fino a record richiesto (pos) poi estrae il record lo mette in una struttura e in fino lo dovrebbe copiare nel puntatore della struttura in VB..
a livello algoritmico è molto semplice eppure non funziona..ho provato anche ad estrarre ed inserire direttamente nel puntatore *Op ma in VB alla chiamata del Sub tutto va in crash..
errori, suggerimenti, insulti :D??
fatemi sapere grazie..
aaa
04/05/08 17:58
gantonio
La struttura C e quella VB quali sono ?
aaa
04/05/08 20:36
gismo
si erano uguali..
comunque sono riuscito ad arrangiare ora funziona..
grazie cmq
aaa
04/05/08 20:44
gantonio
In che senso erano uguali? Perche' non le mostri?

Come hai risolto? Qual era il problema?
aaa