[delphi] débutant : Accès aux fichiers

débutant : Accès aux fichiers [delphi] - Delphi/Pascal - Programmation

Marsh Posté le 19-12-2002 à 14:26:58    

Pourquoi le code suivant (pris dans l'aide de Delphi et adapté) me fait il une violatino d'accès et comment corriger ?
 

Code :
  1. function TForm1.COF(koi : string):string;
  2. var
  3.    iFileHandle: Integer;
  4.    iFileLength: Integer;
  5.    iBytesRead: Integer;
  6.    Buffer: PChar;
  7. begin
  8.      iFileHandle := FileOpen(koi, fmOpenRead);
  9.      iFileLength := FileSeek(iFileHandle,0,2);
  10.      FileSeek(iFileHandle,0,0);
  11.      Buffer := PChar(AllocMem(iFileLength + 1));
  12.      iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
  13.      FileClose(iFileHandle);
  14.      FreeMem(Buffer);
  15. end;

Reply

Marsh Posté le 19-12-2002 à 14:26:58   

Reply

Marsh Posté le 19-12-2002 à 15:05:49    

spa terrible pour lire du texte dans un fichier cette méthode :/
Pourquoi t'emploies pas TFileStream et les string classiques de Delphi ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-12-2002 à 15:10:27    

je viens d'essayer TFileStream mais quand je fais  
 

Code :
  1. function TForm1.COF(koi : string):string;
  2. var
  3.    Fic: TFileStream ;
  4.    temp:string;
  5. begin
  6.      Fic := TFileStream.Create(koi,fmOpenRead);
  7.      Fic.Read(temp,fic.Size);
  8.      Fic.Free;
  9. end;


 
j'ai une erreur du même type quand j'arrive au "read"...

Reply

Marsh Posté le 19-12-2002 à 15:11:38    

Fic := TFileStream.Create(koi,fmOpenRead);
SetLength(temp, Fic.Size); // faut allouer la mémoire pour la chaine, mais au moins on ne devra pas se soucier de la libération
Fic.Read(temp[1],fic.Size); // 1 parce que c'est à 1 que commence la chaine. Si tu mets juste temp tu ne sais pas sur quoi tu tombes, soit le 1er octet d'une ShortString (sa taille) soit un morceau d'AnsiString/LongString, qui est un peu plus complexe
 
il faudra peut-être mettre @temp[1] s'il n'accepte pas temp[1] tout seul.


Message édité par antp le 19-12-2002 à 15:13:13

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-12-2002 à 15:14:43    

merci je regarde ça tout de suite !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed