var MaChaine : string; Taille : Integer; //Ecriture de MaChaine : Taille :length(MaString);//Taille(en octets) longueur de la chaîne. FileStrm.WriteBuffer(Taille,SizeOf(Taille));//On écrit d'abord la taille de la chaîne qui va suivre(un Integer, donc) ... FileStrm.WriteBuffer(MaString[1],Taille);//...puis la chaîne en transmettant un pointeur sur son 1er caractère, et sa taille. //Lecture de MaChaine : FileStrm.ReadBuffer(Taille,SizeOf(Integer));//Lit la taille de la chaîne. SetLength(MaString,Taille);//Allocation d'assez d'espace dans la chaîne. FileStrm.ReadBuffer(MaString[1],Taille);//Lecture de la chaîne grâce à la transmission d'un pointeur (MaString[1]).
Taille := length(MaString) * SizeOf(MaString[1]);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionTRssFeed = record Index: Integer; Link: string[1000]; Title: String[255]; DateAdd: TDate; LastUpdate: TDateTime; LastResult: (Succes, Failed, New); Folder: Integer; end; TRSSFeedFile = file of TRssFeed;
for int1 := 1 to length(MyListActuelle) do Write(TRSSFeedFile, MyListActuelle[int1-1]);
Quand la taille de la variable n'est pas fixée, l'astuce consiste à d'abord écrire sa taille dans le fichier sous la forme d'un Integer, puis la variable elle-même.
A la lecture, on lira d'abord cette taille et on créera une variable de cette taille du type requis. Puis on lui affectera le contenu du fichier.
Taille := length(MaString) *2;
var F : TFileStream; BufSize: Integer; Str1: UTF8String; Str2: String; [...] F.ReadBuffer(BufSize, 4); SetLength(Str1, BufSize); F.ReadBuffer(Str1[1], BufSize); Str2 := UTF8ToString(Str1); [...]
var F : TFileStream; BufSize: Integer; Str1: UTF8String; Str2: String; [...] Str1 := UTF8String(Str2); BufSize := Length(Str1); F.WriteBuffer(BufSize, 4); F.WriteBuffer(Str1[1], BufSize); [...]