begin process at 2012 02 17 02:24:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Besoin de traduction de routine en visual C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin de traduction de routine en visual C++

samedi 28 février 2004 à 22:45:43 | Besoin de traduction de routine en visual C++

nandofive

Voila j' ai obtenue la routine de décompression de fichier BMP mais on me la fourni en visual C++

Si certaine personnes peuvent m' aider a la traduire en visual basic merci

code:--------------------------------------------------------------------------------
BOOL CWECompress::_DeCompress(BYTE **BufDest, BYTE *BufSrc)
{
BYTE *ptrRes = *BufDest;

LONG k3;
ULONG i,j;
BYTE k,k2;

i = 0;

while (TRUE)
{
if ((i & 0x100) == 0) // (i < 0x100) or (0x1000 <i < 0x10FF) ...
{
k = *BufSrc & 0xFF; // Get data and do data % FF
BufSrc++; // add pointer
i = k | 0xFF00; // i = 0xFF unito a k

}

k2 = *BufSrc & 0xFF; // get data

if (((BYTE) i & 1) == 0) // t = 0 se i pari, t = 1 se i dispari
// Literal
{
*ptrRes = (BYTE) k2; // res = k2
ptrRes++;// add pointer
BufSrc++;
}
else
{
if ((k2 & 0x80) != 0) // k2 & 0x80 != 0 Solo se k2 > 0x80 il controllo passa
// Caso in cui abbiamo 1 solo byte per il comando,
// nbit move = 4, nbitrepeat = 4
{
BufSrc++;// add pointer

if ((k2 & 0x40) != 0) // k2 & 0x40 != 0 Solo se k2 > 0xC0 il controllo passa
{
// blocco per copiare i bytes in plain mode
// nrepeatmax = 0xFE-0xB9 = 69 7 bit
// nrepeatmin = 0xC0-0xB9 = 7

k = k2 & 0xFF;// k = k2 & 0xFF
k3 = k - 0xB9;// k3 = k - 0xB9 k3 = numero ottenuto sottraendo k2 fatto passare
if (k == 0xFF)
break; // esci dal ciclo

// ciclo che copia i k3 bytes in plain mode
while(k3-- >= 0) //sicuramente k3 > 0
{
k2 = *BufSrc & 0xFF;// get data
BufSrc++;// add pointer
ptrRes++;// add pointer
*(ptrRes - 1) = (BYTE) k2; // write k2 on ptrRes

}

i = i >> 1;// i SHR 1
continue;
}

// questo j mi dirà quanto dovrò spostarmi indietro per ripetere k3+1 volte il
// ciclo (max 16)
// max j = 16, k3 = 4 con BF
j = (k2 & 0x0F) + 1;// k2 & 0x0F = prendo gli ultimi 4 bit e sommo 1
k3 = (k2 >> 4) - 7;// k2 >> 4 = tolgo gli ultimi 4 bit,e tolgo 7;
// k3 mi dice quante volte devo ripetere il byte + 1 volta del ciclo + 1 messa in precedenza
// es. 90 -> j = 1 [1 byte indietro], k3 = 90 >> 4 - 7 = 9 - 7 = 2
// -> 2 + 1 + 1 = 4 volte

}
else
{
// 2 bytes per il comando tipo 24 01
// nbit move = 14, nbitrepeat = 6

j = *(BufSrc + 1) & 0xFF;// get data (prendi il byte successivo)
BufSrc += 2;// add pointer by 2
k3 = (k2 >> 2) + 2;// k3 = togli ultimi 2 bit + 2 (24 = 11 volte infatti)
j = j | (k2 & 3) << 8;// j = j | (k2 & 3)*256
// max j = 1024, k3 = 33 con 7F FF
// numero di bytes da arretrare per poi scrivere k3 volte i bytes ritrovati
// es 24 01 -> j = 01 | (24 & 3) << 8 = 1 | 0 = 1, k3 = 24 >> 2 + 2 = 9 + 2 = 11
// -> 11 + 1 + 1 = 13 volte
}

// ciclo per ripetere k3 volte + 1 il byte a partire dalla posizione -j
for ( ; k3>=0; k3--) // loop until k3>=0
{
*ptrRes = *(ptrRes - j) & 0xFF;// write data from first (far j bytes) for k3 times
ptrRes++;

};

}

i = i >> 1;

}

return TRUE;
}


PS : Peut on déduire de cette routine la routine de compréssion merci.
dimanche 29 février 2004 à 00:58:38 | Re : Besoin de traduction de routine en visual C++

nandofive

Je précise bien aidé . Mon intention n' est pas de le faire faire par quelqu' un d' autre.

PS : Je n' est pas les bases suffisantes pour y arrivé seul.

Merci
dimanche 29 février 2004 à 16:12:50 | Re : Besoin de traduction de routine en visual C++

nandofive

C' est bon mon problème est résolu. J' ai compilé ce code dans une dll avec Builder C++.

Merci qd même.


Cette discussion est classée dans : byte, k2, k3, ptrres, bufsrc


Répondre à ce message

Sujets en rapport avec ce message

Passage d'un tableau de byte à une fonction encapsulé dans un ACtiveX Dll [ par novik ] J'aimerai pouvoir passer un tableau de Byte a ma fonction (Activex Dll)lors de l'appel j'ai une erreur Type Mismatch.Or lorsque j'appelle cette foncti Empêcher le dépassement de capacité [ par christophe ] Bonjour,Comment peut on empêcher le dépassement de capacité sur un numérique : Exemple d'un byte ou l'on affecte 300 ! Qql'un a une routine de vérific Comparaison de 2 fichiers... [ par MaTHieU ] Salut, pourriez vous m'aider à faire la comparaison de 2 fichiers en mettant dans une listbox les bytes qui sont différents de la manière suivantes... byte et offset [ par MaTHieU ] salut, je voudrai savoir comment connaitre l'offset d'un byte dans un fichier !Merci Comment récupérer l'adresse d'une variable de type long ou byte ou.... sous VB 4 ??? [ par TheMarz ] Pour utiliser certaines API win32, j'ai besoin de passer en paramètre des adresses de variables de type Long, Byte ou autre. Malheureusement, l'entrep pb dans les objets field [ par nicolas ] je lis ds les msdn que les valeurs associés au type des enregistrements sont :Constant Value Description adVarWChar 202 Null-terminated Unicode charac Lecture binaire SOS!!!! [ par couriousous ] Hello!!Je cherche depuis un moment pour savoire comment lire un fichier binaire depuis un nombre de byte X d'une longueur Y ou j'usquau byte ZIl me fa pb recuperation de l'adresse mac sous winNT [ par andrea ] Bonjour, J'ai un probleme lorsque j'essaie de recuperer l'adresse mac d'un ordinateur qui est sous NT cela me renvoie toujours la valeur suivant 0.0.0 .NET : Stocker un tableau de tableau de Byte dans un fichier [ par Scurio ] SalutEst-ce que quelqu'un à une idée pour stocker de façon simple un tableau de tableau de Byte dans un fichier pour pouvoir le récupérer par la suite Transtypage : Byte() ---> String [ par jockos ] Bonjour,Existe t-il une fontion VB toute faite qui permette de TRANSTYPER un tableau dynamique Binaire (Byte()) en une chaine de caractères (String).E


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales