Smith4400
Messages postés39Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention20 août 2009
-
9 juil. 2009 à 16:33
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 2015
-
15 juil. 2009 à 23:44
salut les mec !!!!
moi j'ai un fichier Bin a modifer, j'ai fais un petit programme a faire ça..
Mon programme modifie un nombre d'octets exact a partir d'une adress exact
mais ci cette adress ne sera pas valide dans les prochains changements ????
Ma questions est :
Est ce qu'il y a une methode de recherche dans les fichier Bin ??
pour étres plus exact , faire un programme quand j'ouvre mon fichier Bin le programme Scan tous le fichier et il me donne l'adress des caracters que je cherche,
comme cherchez cette valeur "789C" et affichez tous le adress de cette derniere
merci
Smith
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 201510 11 juil. 2009 à 16:54
Bonjour,
Ca devrait marcher avec ça :
const L_BUFF = 32768;
function posi_bin( fName : string; key:string) : integer;
// ATTENTION : la position retournée vient de la founction POS
// des strings. Elle commence à 1. Enlevez 1 pour si vous
// voulez commencer à 0 et -1 signifiera non trouvé.
// (les caractère BIN non affichables fonctionnent avec des strings si
// elles sont renseignées avec SetString)
var buff : array[0..L_BUFF-1] of char;
buff_str : string;
myFile : file;
ALire : integer;
NbLus : integer;
NbBloc : integer; // si taille fichier > L_BUFF
Posit : integer; // résultat
begin
result := 0;
if not FileExists(fName) then
begin result:-2; // -2 fichier non trouvé
exit;
end;
system.assign(myFile, fName);
system.reset(myFile, 1); // blocs de 1 octet
NbLus := 0;
NbBloc := 0;
Posit := 0;
ALire := L_BUFF;
while (Posit=0) and (not eof(myFile)) do
begin
blockread(myFile, ALire, NbLus);
if NbLus > 0 then
begin
setstring(buff_str, buff, NbLus);
Posit := system.pos(key, buff_str);
NbBloc := NbBloc +1;
end;
end;
// comme il peut y avoir plusieurs blocs avant de trouver
if posit >0 then
result := ((NbBloc-1)*L_BUFF) + Posit
else
result:= posit;
end;
Salut.
solilog
Vous n’avez pas trouvé la réponse que vous recherchez ?
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 13 juil. 2009 à 16:04
Un programmeur n'attend pas , il travaille sur sa solution , il potasse et il concocte quelque chose, il passe pas son temps à faire *** son monde et demander 15 000 choses sur le même sujet.
je te conseille de bosser une bonne fois , revois toutes tes bases de programmation et apprend à bosser tout seul.
Un forum , ça sert à aider les gens, pas à travailler à leur place !!!
solilog
Messages postés273Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention18 avril 201510 15 juil. 2009 à 23:44
Bon Smith400, si tu ne sais pas lire ... ou t'es encore plus miro que mois (vu la taille de tes 1ers posts). Je t'ai mis le source d'une fonction qui fait ce que tu veux.
Tu la copies, tu la testes dans une form avec un dialog et voilà. Non mais tu vas te bouger, tu restes là avec des "j'attends vos répences, merci..." alors que tu as la solution depuis 4 jours!
Bonne nuit
solilog