Les Snippets

Connexion

Inserer Bytes dans un Stream

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 15/04/2009 23:16:30 et initié par cirec [Liste]
Vue : 2950
Catégorie(s) : Fichier / Disque
Langages dispo pour ce code :
- Delphi 5



Langage : Delphi 5
Date ajout : 15/04/2009
Posté par cirec [Liste]

(* 
function InsertInStream( 
  buffer: Pointer;  Pointeur sur les données à ajouter 
  aOffset, Position de l'ajout dans le  stream si aOffset est > Size les données sont ajoutées  
                               à la fin du Stream 
  BufferSize: Int64;  Taille des données à ajouter 
  const aStream: TMemoryStream Le Stream à  modifier 
  ): Boolean; 
*) 
Function  InsertInStream(buffer: Pointer; aOffset, BufferSize: Int64;  
                        Const aStream:  TMemoryStream): Boolean; 
Var CurrentSize:  Int64; 
Begin 
  Result :=  Assigned(aStream); 
  If Result Then 
    With aStream Do  
    Try 
      CurrentSize := Size; 
      SetSize(Size +  BufferSize); 
      If aOffset <  CurrentSize Then  
        Move(Pointer(Integer(Memory)+aOffset)^,  Pointer(Integer(Memory)+aOffset+BufferSize)^, Size-BufferSize+aOffset)  
      Else 
        aOffset :=  CurrentSize; 
      Move(buffer^, Pointer(Integer(Memory)+aOffset)^,  BufferSize); 
    Except 
      Result  := False; 
    End; 
End; 

Remarque :
// Exemple sur Fichier texte
procedure TFrm_Main.Button3Click(Sender: TObject);
var MS: TMemoryStream;
    strAjout: string;
    aLen: Integer;
begin
  strAjout := 'Ligne ajoutée le, à:'+DateTimeToStr(Now)+#13#10;
  aLen := Length(strAjout);
  MS := TMemoryStream.Create;
  with MS do
  try
    if FileExists('TextTest.dat') then
      LoadFromFile('TextTest.dat');
    // Ajout en début de fichier
    if InsertInStream(@strAjout[1], 0, aLen, MS) then
      Memo1.Lines.LoadFromStream(MS)
    else
      ShowMessage('Echec de la modification !!!!');
  finally
    SaveToFile('TextTest.dat');
    Free;
  end;
end;

// Exemple sur fichier binaire séquentiel
type
  TNameRec = packed record
    Nom: string[15];
    Prenom: string[10];
    BDay: TDate;
  end;

procedure TFrm_Main.Button4Click(Sender: TObject);
var FS : TMemoryStream;
    aNameRec: TNameRec;
begin
  aNameRec.Nom := 'Caribensila';
  aNameRec.Prenom := 'Francky';
  aNameRec.BDay := Now;
  FS := TMemoryStream.Create;
  try
    if FileExists('TestRecord.dat') then
      FS.LoadFromFile('TestRecord.dat');
    // ajoute les données à la 3ème position
    if InsertInStream(@aNameRec, 2*SizeOf(TNameRec), SizeOf(TNameRec), FS) then
      ShowMessage('Modification réussit ^^')
    else
      ShowMessage('Echec de la modification !!!!')
  finally
    FS.SaveToFile('TestRecord.dat');
  end;
end;

Snippets en rapport avec : Byte, Stream, Inserer



Codes sources en rapport avec : Byte, Stream, Inserer

{Delphi} SYNTHÉTISEUR [BASS]
C'est les vacances, il ne fait pas très bon ... un temps parfait pour coder ! Voici un petit soft qu...

{Visual Basic, VB6, VB.NET, VB 2005} VB10 - MÉTHODE DE SAUVEGARDE PAR SERIALIZATION
Voila une méthode de sauvegarde par sérialisation, càd la sauvegarde d'un ensemble. Dans mon exempl...

{PHP} CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...)
Bonjour, Cette classe utilitaire permet de convertir une taille (d'un fichier) d'une unité à une ...

{Delphi} STREAM STRINGWRITER... UNE MICRO-LIBRAIRIE POUR ÉCRIRE DES CHAINES DANS UN FLUX
Cette micro-librairie (2 fonctions seulement) permet de lire et écrire des chaines de caractères dan...

{Visual Basic, VB6, VB.NET, VB 2005} INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET
Ce petit code permet d'ajouter tout type de fichiers dans oracle et par la suite de les récupérer, l...

{C# / C#.NET} REMPLACER UNE SÉQUENCE DE BYTE
Cette méthode sert à remplacer simultanément dans une séquence byte[] A toutes les sous-séquences by...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DE SOCKET EN VB.NET
Ce bout de code permet de gérer des sockets automatiquement, en effet on peux créer autant de socket...

{ASP / ASP.NET} RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Dans certains cas, on a besoin de pouvoir manipuler le Stream dans lequel écrit ASP.net. Par exemple...

{PHP} BITWISE HANDLER : GESTION DES BITS POUR GÉRER LES DROITS
Après la lecture de la source intéressante de malalam : http://www.phpcs.com/codes/SQUELETTE-GESTION...

{Delphi} TEXTURE PACKER - OU COMMENT GÉRER UNE BANQUE DE TEXTURES FACILEMENT !
Bonjour, voici un editeur de banques de textures : vous pouvez mettre n'importe quel bitmap de moin...