Bonjour,
j'aimerais pouvoir comparer 2 fichiers texte, plus globalement 2 fichiers, voire les différences à l'octet prêt.
Voici ce que j'ai tapé :
[code]
OpenDialog1->InitialDir = "C:\\";
OpenDialog1->Title = "Exécutable texte original";
if (OpenDialog1->Execute())
{
AnsiString fich_org = OpenDialog1->FileName;
FILE *fichier_org;
bool fichier_org_ouvert = false;
char buf_org[255];
OpenDialog1->InitialDir = "C:\\";
OpenDialog1->Title = "Exécutable texte #2";
if (OpenDialog1->Execute())
{
AnsiString fich_numd = OpenDialog1->FileName;
FILE *fichier_numd;
bool fichier_numd_ouvert = false;
char buf_numd[255];
if ((fichier_org = fopen(fich_org.c_str(), "rb" )) == NULL)
ShowMessage("Impossible d'ouvrir le fichier " + ExtractFileName(fich_org));
else
fichier_org_ouvert = true;
if ((fichier_numd = fopen(fich_numd.c_str(), "rb" )) == NULL)
ShowMessage("Impossible d'ouvrir le fichier " + ExtractFileName(fich_numd));
else
fichier_numd_ouvert = true;
if (fichier_org_ouvert && fichier_numd_ouvert)
{
int i=0;
while (! feof(fichier_org))
{
fseek(fichier_org, i, SEEK_SET);
fread(buf_org, 1, 1, fichier_org);
fseek(fichier_numd, i, SEEK_SET);
fread(buf_numd, 1, 1, fichier_numd);
if (buf_org != buf_numd)
{
Memo2->Lines->Add(buf_numd); //affiche les !=
}
i++;
}
}
fclose(fichier_org);
fclose(fichier_numd);
StatusBar1->Panels->Items[0]->Text = buf_org[30] + buf_numd[30];
}
}
mais mon Memo2 contient
uô
êô
sô
ô
ô
ô
(ô
Pô
oô
rô
tô
uô
gô
uô
eô
sô
eô
)ô
ô etc.......
même quand mes 2 fichiers texte sont identiques !!!
Où ai-je fait l'erreur à votre avis ?
N'oubliez pas que je voudrait comparer tout types de fichiers, à l'octet prêt ...
merci d'avance
---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com