Autor Téma: FileStream.seek access violation  (Přečteno 111 krát)

Offline szs

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: XE2
FileStream.seek access violation
« kdy: 18-06-2019, 11:49:09 »
Ahoj,

 mám velkou prosbu. Už několik dní se trápím s tím proč, kód, který by měl fungovat, nefunguje a nikde to nemůžu vygooglit. Háže access violation at.. na řádku FSourceFile.Seek(0, soBeginning).
 Zkoušel jsem i Position:=0, soFromBeginning nebo fmShareDenyNone.

Zkoušel jsem v Delphi 2010 a XE2.




procedure TForm1.Button2Click(Sender: TObject);
var  FSourceFile: TFileStream;
       PreambleBuf: TBytes;
begin

  FSourceFile := TFileStream.Create('c:\Users\ja\Documents\test.txt', fmOpenReadWrite);

  SetLength(PreambleBuf, 100);
  FSourceFile.Read(PreambleBuf, Length(PreambleBuf));
  FSourceFile.Seek(0, soBeginning);  // potřebuji vrátit na začátek pro následné načítání a to nejde
  ...

end;



Díky moc za jakoukoliv pomoc!

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 798
  • Karma: 43
    • Verze Delphi: 10.3
Re:FileStream.seek access violation
« Odpověď #1 kdy: 18-06-2019, 13:16:16 »
Místo
Kód: Delphi [Vybrat]
  1.  FSourceFile.Read(PreambleBuf, Length(PreambleBuf));
bych zkusil
Kód: Delphi [Vybrat]
  1.  FSourceFile.Read(PreambleBuf[0], Length(PreambleBuf));

Tak, jak to máš, si nejspíš přepíšeš data v zásobníku.