Recuperer certaines plages de donnees dans un fichier binaire

Résolu
hexwoodstock Messages postés 3 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 18 avril 2006 - 6 avril 2006 à 13:24
hexwoodstock Messages postés 3 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 18 avril 2006 - 18 avril 2006 à 17:10
Bonjour,
Je souhaiterais recuperer certaines plages de donnees dans un fichier binaire que j'ouvre avec MPHexeditor pour les afficher dans un tedit afin d'en faciliter la lecture et la modification.
Je n'ai aucune idée de la synthaxe...
Debutant sous Delphi

4 réponses

cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
6 avril 2006 à 13:59
un seul mot 'TStream' où 'TMemoryStream'
je n'ai pas ce composant sous les yeux mais normalement il possède un gestionnaire de Flux donc soit de un TFileStream soit un TMemoryStream(plus rapide)

le composant TStream offre un accès facile vers un fichier Binaire

Sert toi de Stream.position afin d'aller à l'endroit que tu souhaite
Sert toi de Stream.ReadBuffer(..) pour lire les données attention un transtypage s'avère être nécessaire
enfin sert toi de l'aide de Delphi pour plus d'infos concernant TStream :)

ça ne sert à rien de balancer du code bêtement, il faut déja connaître le fonctionnement des gestionnaires de Flux

tu as déja des indices ;)
@+
3
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
15 avril 2006 à 17:54
ah bah voilà !!! ça fait plaisir de voir quelqu'un qui fait un effort !!! d'habitude sur ce forum c'est à base de "hey j'ai un projet faites-le à ma place parce que j'ai pas que ça à faire moa !!!" mdr

Bon maintenant que tu sembles mieux comprendre le système des flux, là okay je peux te venir en aide !!!

HexEdit possède un événement "OnSelectionChanged" regarde dans l'inspecteur d'objets puis l'onglet "Evénements"

jusqu'à là c'est clair non ?
maintenant dans cette événement tu places ton code comme ceci

if HexEdit.SelCount <> 0 then
begin
HexEdit.SaveRangeToStream(TonStream , HexEdit.SelStart , HexEdit.SelCount)

end;//

Maintenant tu peux prendre soit un TStream où un TMemoryStream, le 1er n'offre pas de gestion d'enregistrement dans un fichier !!!

pour un TMemoryStream ne pas oublié de faire un "Clear" avant le tranfert des données dans ce flux.

@+
3
hexwoodstock Messages postés 3 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 18 avril 2006
15 avril 2006 à 14:27
Ta reponse m'a mis sur la piste de nombreuses choses sans pour l'instant pouvoir arriver a un resultat positif mais j'y travaille. Effectivement MPHexEditor semble gerer TMemoryStream mais l'aide de Delphi est si vaste (tant mieux) que cela va me demander du temps avant de l'eplucher et surtout de comprendre.(En fait c'est mon premier prog...)
Merci infiniment de ta reponse rapide

Debutant sous Delphi
0
hexwoodstock Messages postés 3 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 18 avril 2006
18 avril 2006 à 17:10
Super, je suis enfin arrivé a ce que je voulais grace a toi! Je n'est pas compris encore comment j'ai fait (Une bonne dose de chance sans doute) mais je vais essayer de comprendre avant d'alller plus loin...Milles merci a toi

Debutant sous Delphi
0
Rejoignez-nous