PDA

Visualizza la versione completa : [vb] & c++ Credo......Aiuto...URGENTE


snap_ml
04-07-2002, 17:06
Vorrei sapere se queste istruzioni sono in c++ o in un altro linguaggio, dovrebbero essere funzioni per convertile file.txt in formato .dop
in qualsiasi linguaggio sono, e' possibile ottenere la stessa cosa con vb?

Queste sono le funzioni che operano la conversione
======================




/* IEEE floating point format to Microsoft Basic floating point format
*/
int fieee2msbin(float *src, float *dst) {
union {
float a;
u_long b;
} c;
u_short man;
u_short exp;

c.a = *src;
if (c.b) { /* not zero */
man = c.b >> 16;
exp = ((man << 1) & 0xff00) + 0x0200;
if (exp & 0x8000 != (man << 1) & 0x8000)
return 1; /* exponent overflow */
man = man & 0x7f | (man >> 8) & 0x80; /*
move sign */
man |= exp;
c.b = c.b & 0xffff | (long)man << 16;
}
*dst = c.a;
return 0;
}

/* Microsoft Basic floating point format to IEEE floating point format
*/
int fmsbin2ieee(float *src, float *dst) {
union {
float a;
u_long b;
} c;
u_short man;
u_short exp;

c.a = *src;
if (c.b) { /* not zero */
man = c.b >> 16;
exp = (man & 0xff00) - 0x0200;
if (exp & 0x8000 != man & 0x8000)
return 1; /* exponent overflow */
man = man & 0x7f | (man << 8) & 0x8000; /*
move sign */
man |= exp >> 1;
c.b = c.b & 0xffff | (long)man << 16;
}
*dst = c.a;
return 0;
}



Vi prego aiutatemi

Maldito
04-07-2002, 17:29
C o C++

dalla sintassi mi pare cos...

snap_ml
04-07-2002, 17:31
ma che cosa vuol dire ammesso che sia c?
Ditemelo almeno a parole, cosi' poi me lo traduco io in vb

Level
04-07-2002, 23:11
Allora, vediamo un po'. Mi sembra che non parli di traduzione di file da un formato a un altro ma di "traduzioni" di numeri da un formato a un altro (dal floating point di IEEE a quello di Microsoft Basic).
Il linguaggio C++.

La prima funzione riceve 2 argomenti ( 2 puntatori a float, src e dst, un puntatore una variabile che contiene un indirizzo di memoria) e restituisce un intero (int fiee(....).
Poi viene dichiarata una union (una locazione di memoria condivisa da due o pi variabili diverse) chiamata c. Per accedere ai dati di una union si usa la sintassi c.a (in questo caso ad esempio c' l'istruzione successiva c.a=*src).

if(c.b) = viene eseguito il codice nella parentesi graffa successiva se c.b vero, cio se diverso da 0.

Poi c' scritto >> che non fa parte della sintassi C o C++.
Ipotizzo che il codice sia stato preso da una pagina HTML(XML, insomma da Web e quindi >> viene tradotto in >> che in C++ rappresenta l'operatore di shift per i bit. In questo caso l'operatore di shift a destra che fa spostare di un posto a destra tutti i bit della variabile mettendo uno 0 sulla sinistra).

La stessa traduzione viene effettuata per &amp; ( tradotto in &, l'operatore AND bit per bit in C++), per &lt;&lt; tradotto in << (shift a sinistra)

La barra | indica l'operatore OR: l'istruzione
man |= exp;
una forma contratta di man = (man | exp).
I numeri tipo 0x8000 sono scritti in esadecimale.
Il simbolo != sta per diverso ( <> in VB )
Passare il puntatore di una variabile a una funzione in C++ si pu paragonare a passarla by ref in VB.
Scrivere (long)man significa fare un cast di man, che er un u_short e il suo valore viene convertito in long (il clng(variabile) di VB).

Tutto il codice compreso tra i simboli /* e */ commento ( se il commento su una linea pu essere preceduto da //.

Con un po' di tempo traduciblissimo in VB.
.................................



ciao.

snap_ml
05-07-2002, 08:50
Ti ringrazio tantissimo Level!!!:D
Ti prego, aiutami a tradurlo in due funzioni di vb6!
Te ne sarei molto riconoscente!!
Se puo' aiutarti io ho anche i due file, il txt e anche il file che che e' il risultato della traduzione dei valori che ci sono sul txt.
Se possono servire te li posso mandare o mettere anche sul forum, dimmi un po' tu!!!

2 domande sceme:
Non sara' mica possibile richiamare queste funzioni da vb?
E se si creasse una libreria in c e le si passassero i valori da vb6?

p.s. Purtroppo anche se volessi imparare il c non saprei neanche da dove inziare.


Grazie ancora:ciauz:

Loading