Witam,
od wczoraj męczę się nad wyeliminowaniem błędu AccessViolation występującego po wywołaniu procedury zapisującej listę do pliku .dat - kompiluje bez problemu. Lista istnieje - jest wyświetlana wcześniej w ListView. Mógłby ktoś sprawdzić, gdzie może wystąpić błąd? Z góry wielkie dzięki za pomoc.
type PElement=^plyta;
plyta = record
Wykonawca : String[32];
NazPlyty : String[32];
Rok : Word;
Rodzaj : String[32];
Data : String[32];
next : PElement;
end;
type TDatebaseRec = Packed Record
Wykonawca : String[32];
NazPlyty : String[32];
Rok : Word;
Rodzaj : String[32];
Data : String[32];
end;
TDateBase = File Of TDatebaseRec;
var Plik: TDateBase;
var Dane: Array of TDatebaseRec;
var First : PElement;
var plik_wielkosc : Word;
(....)
procedure TForm1.Zapiszjako1Click(Sender: TObject);
var
nazwa : String[64];
StrucRec : TDatebaseRec;
AtList : PElement;
begin
if SaveDialog1.Execute then
begin
nazwa:=SaveDialog1.FileName + '.dat';
AssignFile(Plik, nazwa);
if Not FileExists(nazwa) Then
begin
ReWrite(Plik);
end
else
begin
Reset(Plik);
end;
AtList:=First;
while AtList.Next <> nil do **<--- W tym miejscu występuje błąd**
begin
StrucRec.Wykonawca:=AtList.Wykonawca;
StrucRec.NazPlyty:=AtList.NazPlyty;
StrucRec.Rok:=AtList.Rok;
StrucRec.Rodzaj:=AtList.Rodzaj;
StrucRec.Data:=AtList.Data;
Seek(Plik, FileSize(Plik));
Write(Plik, StrucRec);
AtList := AtList^.Next;
end;
if AtList.next = nil then
begin
StrucRec.Wykonawca:=AtList.Wykonawca;
StrucRec.NazPlyty:=AtList.NazPlyty;
StrucRec.Rok:=AtList.Rok;
StrucRec.Rodzaj:=AtList.Rodzaj;
StrucRec.Data:=AtList.Data;
Seek(Plik, FileSize(Plik));
Write(Plik, StrucRec);
end
end;
CloseFile(Plik);
end;