Traduction C vers VB

Résolu
Signaler
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
-
GRENIER Alain 8-)

J'ai trouvé sur le Net un petit bout de code en C mais n'y connaissant rien mais rien quelqu'un pourrait-il me le transcrire en VB ?
Ce code nous décode la RUN LIST dans le système NTFS
Avec mes sincères remerciements

Voici le code en C
# include <stdio.h>

struct s_element {
int Offset, Length;
};

struct s_element runlist[] = {
{ 0x100, 0x14}, \ données quelconques \
{ 0x18, 0x10},
{ 0x15, 0x5},
{ 0x0, 0x27},
{ 0x5, 0x20}
};

int main(int argc,char **argv)
{
int index, V, L, LRef, R, cont;
struct s_element begin, end ;

index = 0;
end = runlist[index]; L LRef end.Offset;
V = 0;

do {
R = 16 - (V%16);
if (R == 16) {
printf ("Compression unit beginning at VCN %x\n", V);
begin = end;
}
if (end.Length >= R) {
if (begin.Offset)
if (end.Offset)
printf (" %x clusters at LCN %x\n"
" Unit not compressed\n", R,L );
else
printf (" %x unused clusters: compressed unit\n", R);
else
printf (" 10 zeroed clusters:sparse unit\n);
L += R;
V += R;
end.Lenfth -= R;
}
else {
printf (" %x clusters at LCN %x\n", end.Length, L);
V += end.Length;
}

if (end.Length = 0)
cont = 1
else
if (++index <(sizeof(runlist)/sizeof(struct s_element)))
{
end = runlist[index];
L= LRef += end.Offset;
cont = 1;
}
else
cont = 0;
} while (cont);
exit(0)
}

5 réponses

Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
4
Alors...

Type s_Element
offset as integer
length as integer
End Type

Sub main()

dim index, V, L, LRef, R, cont as integer
dim begin as s_Element, end as s_Element

index = 0
end = runlist(index)
L = end.Off
LRef = end.Offset
V = 0

Do

R = 16 - (V Mod 16)
if R = 16 Then
msgbox "Compression unit beginning at VCN ", vbinformation, V
begin = end
End if

if end.Length >= R Then
if begin.Offset Then
if end.Offset Then
msgbox "x clusters at LCN "
else
msgbox %x unused clusters: compressed unit\n"
end if
else
msgbox "10 zeroed clusters:sparse "
end if

L = L +R
V = V + R
end.Length = end.Length - R

else
msgbox "x clusters at LCN "
V = V +end.Length
End if

if end.Length = 0 then
cont = 1
else
if (index + 1) < (slen(runlist)/len(struct s_element)) then

end = runlist(index)
L= end.Offset
LRef = LRef + end.Offset
cont = 1

else
cont = 0

End if

} while (cont)

end

End sub

private Sub runlist(index)
'// Données quelconques
End sub

Bon, voilà. Y a surement des buges, mais c'est le truc principale, à toi de t'adapter.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
if (end.Length = 0)
ceci est une affectation et non une comparaison, vu le 'else' qui suit on denote une grave erreur de debutant.

Ce code est d'une nullite affligeante, il y a des pages sur le net qu'il faut savoir refermer encore plus vite qu'elles se sont ouvertes.

ciao...
BruNews, Admin CS, MVP Visual C++
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
4
Heu... tu parles de ma traduction ?...
Parceque si oui, t un peu dure... lol
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Du simili C qu'il y a au dessus bien entendu.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
4
Ok lol
Ca va alors :p