Newsgroup: it.comp.lang.visual-basic
Titolo: Dll in Visual Basic

Allora sto impazzendo da 2 giorni,
sto costruendo un'applicazione in c++ builder...
mi serviva una funzione che generasse il codice fiscale a partire da nome
cognome.etc
la trovo su internet ma è in visual basic 6
costruisco una dll activex  in vb che contiene una sola funzione all'interno
di Class1 , questa:
Public Function CalcoloCodFis(
           ByVal Cognome As String, ByVal Nome As String,
           ByVal txtDataNascita As String, ByVal Sesso As String,
           ByVal Provincia As String,  ByRef cf As String) As Integer
l'ultimo parametro contiene il risultato (il codice fiscale). l'intero che
restituisce è del tutto inutile. compilo e genero il file
"CodiceFiscale.DLL"
testo la dll con un progetto in vb e tutto và liscio.
torno alll'applicazione c++........ continuate voi.............
ho provato a richiamare la funzione tramite queste istruzioni:
typedef /*extern  "C" */__declspec(dllimport) int  (*codfiscfunctype)(LPSTR
,LPSTR ,LPSTR ,LPSTR ,LPSTR,LPSTR );
.......
{
HINSTANCE hModule;
codfiscfunctype codfiscfunc;
 HINSTANCE codfiscHandle;
 codfiscHandle = LoadLibrary("CodiceFiscale.DLL");
      if ((codfiscfunc = (codfiscfunctype) GetProcAddress(codfiscHandle,
"CalcoloCodFis")) == 0)
        {
         // errore
        }
     LPSTR* cf=new LPSTR;
     *cf="pipo";
int ris = (codfiscfunc)("ramundo","massimo","7/10/1972","M","bho",*cf);
FreeLibrary(hModule);
}
DOVE SBAGLIO???
codfiscfunc E' COSTANTEMENTE UGUALE A NULL!!!!!

[cut tut]
Non saprei aiutarti...
Io posterei su icpw32 (it.comp.programmare.win32)
Alex
°°° Posted from X-Privat Free NNTP server - 
www.x-privat.org
 °°°

di Class1 , questa:
Cioe' tu fai un activex solo per non riscrivere la funzione in C?
-- 
ciao, hal

 
Non ho ben capito, ma se la funzione č scritta in VB e compilata da VB 
quello che ottieni č una dll ActiveX e non una dll standard richiamabile 
direttamente da C/C++.
Ciao

 DOVE SBAGLIO???
senza polemiche... sbagli a fare la funzione (a meno che tu non lavori al
ministero delle finanze)
Il codice fiscale è quello che ti viene assegnato dallo stato. Punto.
Generarlo in locale espone a rischi troppo elevati, e neanche molto
improbabili, pensa alle persone che hanno il doppio nome, per es.
--
Salutoni
Sergio

 codfiscfunc E' COSTANTEMENTE UGUALE A NULL!!!!!
Tre cose:
1) Le DLL in Vb sono sempre ActiveX ergo ti conviene usare il late binding
ovvero l'equivalente C di
createobject("CodiceFiscale.Class1")  e poi invocare il metodo pubblico
CalcoloCodFis
2)  Gestione stringhe; copio e incollo da 
www.visual-basic.it/
-in VB le stringhe sono dei tipi BSTR e cosě vanno dichiarati in VC; (ByVal
in VB, BSTR in VC); le stringhe in VB sono in formato UNICODE ma lo stesso
VB provvede a trasformarle in formato ANSI prima che il codice C venga
eseguito;
3) Il risultato lo recuperi per riferimento anzichč fartelo restituire dalla
funzione; potrebbe essere qui l'inghippo, proprio in virtů del punto 2.
x:termoPilucco.

[*CSSoft* = 
news...@cssoft2001.com
 in
news:bkf301$12j2k$
1...@ID-173193.news.uni-berlin.de
] ha scritto:

No, IMHO, anche perchè lo Stato ne ha cappellati un po'.
Comunque, può servire da controllo o, persino, per generarlo per chi non lo
sa/ricorda.
Ovvio (?) che se riporto su una mia (emessa) fattura un CF e/o PIVA errati
sono in fallo (una volta erano 50.000 Lit. di multa, non so ora), salvo
dimostrare che quello era quanto assegnato dallo Stato...

allora mettiamola cosě....
dove trovo il codice c++ che mi genera il codice fiscale?
:-))


 lavori al ministero delle finanze)
Ma il Cod Fisc lo stato lo genera con dei criteri ben precisi guardando dati
personali di nascita al 99,99% dei casi.
Suppongo che si vada in conflitto (e che l stato forzi il cod fisc) nel caso
di persone nate:
stesso nome, stesso cognome, stessa data, stesso luogo che mi pare anche
meno di un 0,01%...


 anche meno di un 0,01%...
questo, in linea di principio è vero. ma, ad esempio, una volta ho
accompagnato in ospedale una mia amica, e mentre la visitavano sono andato a
fare le pratiche per l'accettazione. non avevo il tesserino del suo cf, ma
la sua carta d'identità: hanno generato il cf e lo hanno cannato in pieno
(hanno considerato solo il primo nome e non il secondo) tant'è che la mia
amica ha dovuto perdere una mattina per far rimettere le cose a posto.
Altro caso: un errore di battitura mentre si digitano i dati. il codice
ricavato sarà ovviamente scorretto.
poi, ovviamente, si può fare tutto quello che si vuole...
--
Salutoni
Sergio

 meno di un 0,01%...
Lavoro su programmi che usano nella P.A.
Ti assicuro che i casi sono tanti e anche se fossero pochi non si puň
rischiare in un processo produttivo.
Il calcolo che forniamo nei nostri programmi č sempre evidenziato come
codice fiscale supposto che non puň in alcun modo sostituire quello fornito
dall'assistito (da introdurre a mano).
Querst'ultimo, peraltro, deve anche assicurarsi di fornire l'utimo
assegnatogli, visto che in alcuni casi viene modificato dal Ministero del
Tesoro stesso.
x:termoPilucco.

 :-))
Scusa se mi intrometto.
Dici che stai scrivendo un'applicazione in C++ Builder e che ti serve una
funzione che ti calcoli il CF. Bene, allora conosci ovviamente il C++. Hai
trovato una funzione belle che pronta scritta in VB, a questo punto non
penso che per te sia un problema riscrivertela in C++ no? O sbaglio? Tanto
se hai i sorgenti  di quella scritta in VB...
Ciao,
Mattia

 > allora mettiamola cosě....

ok mi arrendo... traduco il codice.... mai che si riesca a risparmiare
lavoro.....

 rischiare in un processo produttivo.
Mi piacerebbe approfondire in quali casi, non avrei mai detto!


 scorretto.
Certo però anche se lo detto io possono sbagliare lo stesso...
Però pare che termopilucco dica proprio che la mia testi è errata poichè ci
sono
parecchi casi così...


 Certo però anche se lo detto io possono sbagliare lo stesso...
no :-) il codice fiscale ha il carattere di controllo, il mio nome, il mio
cognome e le mia data di nascita no.
--
Salutoni
Sergio

 Mi piacerebbe approfondire in quali casi, non avrei mai detto!
Nei comuni grandi capita: non è necessario avere lo stesso nome, basta avere
le consonanti, la data di nascita e il sesso in comune.
In tal caso il Min. delle Finanze si assicura di produrre CF univoci
modificando tipicamente l'ultima lettera.
E tale procedura non è assolutamente prevedibile.
x:termoPilucco.

 basta avere le consonanti, la data di nascita e il sesso in comune.
Tieni ragione, un tempo avevo un programmino e l'ho provato su chi
conoscevo...
certo abitavo in un paesino :-)


 ha scritto nel messaggio
news:bkf1nj$1b$1...@canarie.caspur.it...

Se ho ben capito non hai creato una normale dll ma un oggetto COM.
Devi quindi agganciarti tramite il COM. Cosa fatta automaticamente da VB che
appunto e'
l'ideale per utilizzare ActiveX, COM, ecc... In C++ non e' per niente
banale, comunque
se ti cerci la documentazione COM puoi provare.
Jojoz

 modificando tipicamente l'ultima lettera.
Sicuro che il Min. cambia l'ultima lettera. Quella e' un codice di controllo
calcolato un base alle precedenti.
Per quello che mi ricordo il codice fiscale e' cosi' generato:
prima, terza e qurta consonante del nome (se ce ne sono abbastanza,
altrimenti si usa anche le vocali ma non so in quale ordine)
prima, seconda e terza consonante del nome (se ce ne sono abbastanza,
altrimenti si usa anche le vocali ma non so in quale ordine)
ultime due cifre dell'anno di nascita
una lettera che identifica il mese
giorno di nascita (per le donne: giorno di nascita + 40)
4 carattri che identificano il comune di nascita
1 carattere di controllo
Ciao
Jojoz

 lavoro.....
Strano concetto di "risparmiare lavoro"...
scriversi un'activex in vb e interfacciarlo dal c per non scrivere una
funzione...
...a meno che per "risparmiare lavoro" tu intendessi che te lo facesse
quelcun'altro...   ;)
ciao
ugo

 il mio cognome e le mia data di nascita no.
Giusto stringe di molto il campo in effetti!
