1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| type TMap = record
Name : string[255];
Cubes : array[1..n] of vector3;
NBCubes : integer;
Cles: array[1..n] of vector3;
NBCles : integer;
Pieges : array[1..n] of vector3;
NBPieges : integer;
Start : Vector3;
Finish : Vector3;
MusicPath : string[255];
end;
function OuvrirFichier(Nom : TFileName; var mrec : TMap) : boolean;
var f : TFileStream;
i : integer;
begin
// Ouvre un fichier et affecte les données à un record
f := nil;
try
// Ouverture d'un flux sur le fichier en lecture.
// Le fichier reste accessible en lecture seule pour d'autres appli.
f := TFileStream.Create(Nom, fmOpenRead or fmShareDenyWrite);
try
f.Position := 0; // Début du flux
if (pos('.map', ExtractFileName(Nom)) > 0) then // Vérification du type du Fichier
begin
// Lecture du fichier
while (F.position < F.Size) do // Tant que la fin du fichier n'est pas atteinte faire :
begin
with mrec do // voir TMap pour savoir quelle type de donnée nous avons.
begin
// Lit la valeur et déplace la position en cours
f.ReadBuffer(Name, 255);
f.ReadBuffer(Cubes, n);
f.ReadBuffer(NBCubes, SizeOf(integer));
f.ReadBuffer(Cles, n);
f.ReadBuffer(NBCles, SizeOf(integer));
f.ReadBuffer(Pieges, n);
f.ReadBuffer(NBPieges, SizeOf(integer));
f.ReadBuffer(Start, SizeOf(Vector3));
f.ReadBuffer(Finish, SizeOf(Vector3));
f.ReadBuffer(MusicPath, 255);
end; // end with
end; // end while
Result := true;
end
else
begin
MessageDlg('Erreur ce n''est pas un fichier map.', mtError, [mbOk], 0);
Result := false;
end;
finally
// Libération du fichier
f.free;
end; // try.. finally
except
// Traitement des exceptions
Result := False;
on EInOutError do
begin
MessageDlg('Erreur d''E-S fichier.', mtError, [mbOk], 0);
end;
on EReadError do
begin
MessageDlg('Erreur de lecture sur le fichier.', mtError, [mbOk], 0);
end;
else
begin
MessageDlg('Erreur sur le fichier.', mtError, [mbOk], 0);
end;
end; // try..except
end; |
Partager