 |
|
 |
|
 |
77 - FICHIERS TYPÉS AVEC DELPHI 8
|
|
|
|
PRÉSENTATION :
Lecture/écriture des fichiers typés avec Delphi 8.
NOTES :
Voir ici pour une description complète de cette méthode : Utilisation des fichiers typés sous Delphi 8
CODE :
Unit UFileRecord;
Interface
Uses Classes;
Type
TFileRecord=Class Abstract(TObject)
Private
FNom :String;
FStream :TFileStream;
FTaille :Integer;
Protected
Property Stream:TFileStream Read FStream;
Property Taille:Integer Read FTaille Write FTaille;
Procedure ReadShortString(Var Chaine:ShortString;Longueur:Integer);
Procedure WriteShortString(Const Chaine:ShortString;Longueur:Integer);
Public
Constructor Create;
Destructor Destroy;Override;
Procedure AssignFile(Const NomFichier:String);
Procedure Reset;
Procedure ReWrite;
Procedure Seek(N:Integer);
Function EOF:Boolean;
Function FileSize:Integer;
Procedure CloseFile;
End;
Implementation
Uses SysUtils;
{ TFileRecord }
Procedure TFileRecord.AssignFile(Const NomFichier: String);
Begin
FNom:=NomFichier;
End;
Constructor TFileRecord.Create;
Begin
Inherited Create;
FStream :=Nil;
FTaille :=1;
FNom :='';
End;
Destructor TFileRecord.Destroy;
Begin
If Assigned(FStream) Then FStream.Free;
Inherited;
End;
Function TFileRecord.EOF: Boolean;
Begin
If Assigned(FStream) Then
Result:=FStream.Position>=FStream.Size
Else
Result:=True;
End;
Function TFileRecord.FileSize: Integer;
Begin
If Assigned(FStream) Then
Result:=FStream.Size Div FTaille
Else
Result:=0;
End;
Procedure TFileRecord.Reset;
Begin
If Assigned(FStream)
Then FreeAndNil(FStream);
If FNom<>''
Then FStream:=TFileStream.Create(FNom,fmOpenReadWrite);
End;
Procedure TFileRecord.ReWrite;
Begin
If Assigned(FStream)
Then FreeAndNil(FStream);
If FNom<>''
Then FStream:=TFileStream.Create(FNom,fmCreate);
End;
Procedure TFileRecord.Seek(N: Integer);
Begin
If Assigned(FStream) Then
FStream.Position:=N*FTaille;
End;
Procedure TFileRecord.CloseFile;
Begin
If Assigned(FStream)
Then FreeAndNil(FStream);
End;
Procedure TFileRecord.ReadShortString(Var Chaine:ShortString;Longueur:Integer);
Var Buffer:Array Of Byte;
i:Integer;
Begin
SetLength(Buffer,Longueur+1);
FStream.ReadBuffer(Buffer,Longueur+1);
Chaine:='';
For i:=1 To Buffer[0] Do Chaine := Chaine+AnsiChar(Buffer[i]);
End;
Procedure TFileRecord.WriteShortString(Const Chaine: ShortString;Longueur: Integer);
Var Buffer:Array Of Byte;
i:Integer;
Begin
SetLength(Buffer,Longueur+1);
For i:=0 To Longueur Do Buffer[i]:=Byte(Chaine[i]);
FStream.WriteBuffer(Buffer,Longueur+1);
End;
end.
|
| |
 |
|
 |
Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ©
2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être
faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.