|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Extraire un block qui contien des chaines de caractere [ Algorithme / Compression, Split et Cryptage ] (Napster)
Informations & options pour cette discussion
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é 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 des tags HTML [ par BinOff ]
Voilà, je commence avec un fichier HTML ouvert en tant que source dans un memo1.Je souhaiterais extraire les noms des images incluses dans le source H
Date : comment extraire le jour de la semaine ? [ par DAR ]
La fonction "DecodeDate" retourne le jour, le mois et l'année d'une date, mais comment faire pour connaitre le jour de la semaine correspondant : lund
ExtracIcon : Help [ par Bruto ]
Salut,je voudrais extraire l'icône du programme sélectionné mais ma procedure n'est pas bonne. Pour extraire, j'utilise la fonction ExtractIcon:functi
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|