Accueil > Forum > > > > Extraire un block qui contien des chaines de caractere
Extraire un block qui contien des chaines de caractere
mercredi 18 avril 2007 à 22:44:40 |
Extraire un block qui contien des chaines de caractere

Napster
|
salut , mon souçi dans cette example et d'extraire des block qui se separent par 88AA et pour calculer leur checksum le checksum se calcule comme suite : example de la premiere ligne reper des blocks = 88AA ce qui est en bleu ces le checksum et pour avoire le checksum en calcule tout qui est en noire
B75D69AB8B3A28576B88AA0EF6B34A6C E9337BDCB939E2FFBF4BE51701DDAB1B B3A362C056C797CA98305F71216AA910 84054B0FE4EEB8915C74B72114E94B3D 99C2C9DD928A249F488AA8C6E860B909 06E1C325FF0B36616A035BA0CB4A5BAF 7D204323063E887BD257B6919F4C294B 1AC8F218296DDACF9AD1D72931AF409D 37BCE7655B82E6255C22666FA97C9E25 70454E398B8C6B0D688AAFECED27368D 2C60EF09110517C4D473A58F9163A256 29E302D8AC4079FF819BCB7EBBF81D62 E18D0555FFD5C93D5374DCD4513C88AA 8724EF544E247FD41DC21128B492F4F2 86EACE1D7289695CF08CCB560107953D 7CC512702E46A8EB311A87AD0FE29011 04FFA88AA6F8CA532A7666F7C68FAAD9 F07348E241253EFF82DD7DE12CD0FAC9 A5CAD97F4F04E898CAFB8671DA8697AF 8EDC06F5CF6A26E370C81F6288AA10C7 D51D2BD8D4E11DA15CD91741545EB2E1 7EE695159C0CF382E0883388AA44A892 13B9CB70616A0E49F2D93CF843FCB3B5 94809DB837927D8612A0D43751354E0C E9337BDCB939E2FFBF4B88AA01DDAB1B E5D7E6B88AA2B78C812E68F3EE884131 6C748A8042C443C0F1818607D39CB4D4 32B5417D72E201118FDDB91988AA664A pour mentionnée le fichier est leng il porte 2MO et pour claculate checksum je vien de le codez et merci d'avance le problem et comment extrairetout sa ?
|
|
mercredi 18 avril 2007 à 22:59:42 |
Re : Extraire un block qui contien des chaines de caractere

jelume
|
Bsr,
Charger le fichier entier dans une chaîne de caractères Remplacer tous les 88AA par un caractère spécial comme un ? par exemple Utiliser la fonction ExtractStrings d Delphi en utilisant le caractère ? comme séparateur Et dans le StringList résultat, chaque ligne contiendra un bloc de données
J-L
|
|
jeudi 19 avril 2007 à 02:22:59 |
Re : Extraire un block qui contien des chaines de caractere

f0xi
|
non, car ? ($3F) est present dans le fichier. si la fin de bloc est 88AA alors a l'instar des EOF (0D0A) des fichiers texte il faut les respecter. de plus on ne peu pas se permettre de stocker du raw dans un string (a cause des $00 probable), au mieux, dans un pchar et encore le must etant un simple pointeur. en plus dans un string il nous faudrait jongler avec les convertions char > byte et string > integer, ce qui en terme de performance ne serait pas le plus adequate. voici un exemple de lecteur, basé sur tlist. ne pas oublier de bien liberer la TBlocList a la fin (avec FREE ou FreeAndNil) pour desallouer la memoire utilisée par les pointeurs et la liste. type pBloc = ^TBloc; TBloc = record Buffer : pointer; BufferSize : integer; CheckSum : integer; end;
TBlocList = class(TObject) private fList : TList; function GetCount : integer; function GetBloc(index : integer) : TBloc; procedure SetBloc(index : integer; val : TBloc); public constructor Create; destructor Destroy; override; property Items[index : integer] : TBloc read GetBloc write SetBloc; function Add(const Bloc : TBloc) : integer; procedure Delete(const index : integer); property Count : integer read GetCount; procedure FreeList; procedure SaveToFile(const FileName : string); procedure LoadFromFile(const FileName : string); end;
constructor TBlocList.Create; begin inherited Create; fList := TList.Create; end;
destructor TBlocList.destroy; begin FreeList; fList.free; inherited Destroy; end;
function TBlocList.GetCount : integer; begin result := fList.Count; end;
function TBlocList.GetBloc(index : integer) : TBloc; var pBc : pBloc; begin pBc := fList.items[index]; result := pBc^; end;
procedure TBlocList.SetBloc(index : integer; val : TBloc); var pBc : pBloc; begin pBc := fList.Items[index]; with pBc^ do begin if Val.BufferSize <> BufferSize then begin FreeMem(Buffer, BufferSize); GetMem(Buffer, Val.BufferSize); end; CopyMemory(Buffer,Val.Buffer,Val.BufferSize); BufferSize := Val.BufferSize; CheckSum := Val.CheckSum; end; end;
function TBlocList.Add(const Bloc : TBloc) : integer; var pBc : pBloc; begin New(pBc); with pBc^ do begin GetMem(Buffer, Bloc.BufferSize); CopyMemory(Buffer, Bloc.Buffer, Bloc.BufferSize); BufferSize := Bloc.BufferSize; CheckSum := Bloc.CheckSum; end; result := fList.Add(pBc); end;
procedure TBlocList.Delete(const index : integer); var pBc : pBloc; begin pBc := fList.Items[index]; with pBc^ do FreeMem(Buffer, BufferSize); Dispose(pBc); fList.Delete(index); end;
procedure TBlocList.FreeList; var N : integer; pBc : pBloc; begin for N := fList.Count-1 downto 0 do begin pBc := fList.Items[N]; with pBc^ do FreeMem(Buffer, BufferSize); Dispose(pBc); fList.Delete(N); end; end;
procedure TBlocList.SaveToFile(const FileName : string); var N : integer; pBc : pBLoc; EOB : word; begin EOB := $AA88; with TFileStream.Create(FileName, fmCreate) do try for N := 0 to fList.Count-1 do begin pBc := fList.Items[N]; with pBc^ do begin WriteBuffer(Buffer^, BufferSize); WriteBuffer(CheckSum,4); WriteBuffer(EOB, 2); end; end; finally Free; end; end;
procedure TBlocList.LoadFromFile(const FileName : string); var BScan : byte; N : integer; COffset, LOffset : int64; pBc : pBLoc; begin COffset := 0; LOffset := 0; with TFileStream.Create(FileName, fmOpenRead) do try for N := 0 to Size-1 do begin ReadBuffer(BScan, 1); if BScan = $88 then begin ReadBuffer(BScan, 1); if BScan = $AA then begin COffset := Position; Position := LOffset; New(pBc); with pBc^ do begin BufferSize := (COffset - LOffset) - 4; GetMem(Buffer, BufferSize); ReadBuffer(Buffer^, BufferSize); ReadBuffer(CheckSum, 4); end; fList.Add(pBc); Position := COffset; LOffset := COffset; end; end; end; finally Free end; end;
par contre j'ai tout fait de tête alors il se peu qu'il y ai des erreurs ou un manque de performance... mais ça donne une approche du probleme. Croc (click me)
|
|
jeudi 19 avril 2007 à 02:25:21 |
Re : Extraire un block qui contien des chaines de caractere

f0xi
|
ah oui, je tiens a preciser que : EOB := $AA88 n'est pas une erreur car les bytes sont inversé lors de l'ecriture. on retrouvera bien 88AA dans le fichier :) Croc (click me)
|
|
mardi 1 mai 2007 à 18:42:12 |
Re : Extraire un block qui contien des chaines de caractere

Napster
|
salut , merci baucoup fOXI , tu peu me dire comment utuliser cette source ya pleins d'erreur je l'ais fait dans un Unit2 et je lais declarer dans les uses du Form . j'ai eu plein d'erreur comme fList :TList ; sa n'existe pas // erreur (9)
|
|
Cette discussion est classée dans : chaines, extraire, checksum, block, contien
Répondre à ce message
Sujets en rapport avec ce message
Calculateur de Block dans une Chaine de caractere [ par Napster ]
salut , j'ai un petit souci a ce calculateur de CRC32 voila un extrait de ma source binaire : 55 AA 01 01 00 17 17 6C 01 73 29 34 21 15 5A 5A00 00 7F
aide moi a extraire un ficher exe! [ par zizoutec ]
salut les experts :-)je suis nouveu sur c'est joli site et j'espere que je trouverai l'aide..bon mon probeleme un ficher registre mais je peux pas
extraire le moi ou annee d'une date longe [ par dhsofa ]
bonjour, j'ai un code qui donne le moi et l'annee d'une date longue exemple (10/11/2008)ce code est ecrit en clipper, est vous pouvez m'aidez de trans
Extraire des Frames d'une vidéo [ par benzebuth666 ]
Bonjour,Je voudrais pouvoir extraire des frames d'une vidéo, lue dans un Tpanel et controlée par un Tmediaplayer.En fait, je veux faire un bouton qui
Comment extraire le text d'un item de listbox [ par vieuxpere ]
Bonjour, je souhaiterai savoir comment extraire le text de l'item sur lequel je suis actuellement positionnée sur unelistbox.Quelque chose du genre :
Extraire 1 chaine a/ "substring()" a/ 1TAdoQuery [ par 810mcu ]
Bonjour a tout le monde, J ai regardé sans succès,
Extraire le répertoire de l’EXE si réseau [ par 810mcu ]
Salut à tous, <p class="MsoNorma
Extraire une image d'une vidéo [ par ludo2223 ]
Bonjour à tous,Je souhaiterais extraire une image d'une vidéo pour créer une fenêtre qui afficherait les aperçus de toutes les vidéos d'un répertoire.
Extraction sous chaine dans une variable [ par franklin007 ]
Bonjour,Etant débutant en delphi, je suis confronté à un problème.Je cherche un moyen d'extraire une sous chaine d'une chaine, et de placer la sous c
Option RANDOM Delphi [ par florian060190 ]
Bonjour, Je suis actuellement en train de réaliser un projet Algorithmique qu'il faudra ensuite executer sur Delphi. Nous avons en cours appri l'outil
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|