Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Besoin de traduction de routine en visual C++ [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (nandofive)

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é 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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.