Oppure

Loading
03/05/08 9:37
gismo
ok ci riprovo..
con la struttura precedente è stato memorizzato in un file un record.. il file si chiama anagrafe.dat
ecco il codice di questi primi passi..
struct anag{
int numero;
char cognome[20];
char nome[20];
}
struct anag Anag;
..
FILE *fp; 
void main(){
//apro il file
fp = fopen("Anag.dat", "w");

//leggo il campo del record
fscanf(fp, "%s", &Anag.cognome);
..
}


supponendo che nel file il record sia memorizzato così:
1
Rossi
Mario
In teoria l'output dovrebbe essere "Rossi"..
allora quello che vorrei fare..è inserire "Rossi" in un form VB in una textbox o simili..:k:
ora indago sul CopyMemory..
spero di essere stato chiaro adesso..
fammi sapere
grazie per la pazienza:D
aaa
03/05/08 9:53
gantonio
Va bene ... ma nel codice VB devi prevedere una dichiarazione di una funzione che sta nella DLL.
Poi dovrai richiamare questa funzione da VB passando quello che serve e ottenendo quello che vuoi.

Ad esempio, potrai dichiarare la funzione

Declare Function GetRecord Lib "TuaDLL.dll" () As Long

che esegua la funzione GetRecord all'interno della tua dll che restituisce un puntatore alla struttura letta.

Quel valore long, lo passerai alla CopyMemory per trasferire (come ti dicevo) i dati nella variabile strutturata del VB.

OPPURE, potrai dichiarare la funzione in questo modo

Declare Sub GetRecord Lib "TuaDLL.dll" (ByRef st As TipoStruttura)

e passare cosi' alla tua dll il puntatore all'area di memoria VB dove hai dichiarato la tua variabile strutturato cosi' che il codice C la riempia SENZA necessita' di CopyMemory.

Se hai problemi, inviami il progetto VB e C e ti suggerisco il codice ...

P.S. Ma perche' non fai tutto in VB? Oppure tutto in C?
Ultima modifica effettuata da gantonio 03/05/08 9:54
aaa
03/05/08 9:58
gismo
ok grazie mille davvero..
beh è una cosa didattica..lo scopo è interfacciarsi col le dll quindi mi tocca..
grazie ancora..:k:
aaa
03/05/08 10:11
gantonio
Ah ... allora leggi questo

Utilizzare codice C/C++ con Visual Basic
visual-basic.it/articoli/…

... ti potra' essere utile ...
aaa
03/05/08 10:20
gismo
si lo stavo già leggendo..
per non ho ancora ben chiaro una cosa..
una volta passato il "puntatore" TYPE alla funzione..per accedere ai campi in c..
faccio TYPEVb->"campoVB" = "input"?
cioè campoVB deve coincidere col nome del campo del TYPE in Vb non a altro..?
aaa
03/05/08 10:33
gantonio
Il nome non ha importanza ... e' importante il tipo di dato che deve essere uguale ...

Un int per il C deve essere un Long per il VB


aaa
03/05/08 10:53
gismo
si..ma come faccio a memorizzare nel campo del TYPE (VB) i valori che voglio dalla funzione c?
es:
se io ho un TYPE con un campo "nome" passo alla funzione tutto il TYPE per riferimento..(per lo stesso discorso che mi hai detto te..)
ma poi dentro alla funzione C come accedo al campo nome per modificarlo?
aaa
03/05/08 11:10
gantonio
Te l'ho gia' detto ... devi passare la variabile strutturata ByRef in modo che alla funzione C arrivi il puntatore agli elementi ...

aaa