Ok, poczytałem chwile o strumieniach, nie chce tylko tego skopiować ale także zrozumieć. Przy pierwszym uruchomieniu programu jest ok, zapisyje itp. Jednak przy kolejnym wywala mi takie coś:
Access violation t addres 7D38C2C n module 'user32.dll' Read of address 0000004
, po wcisnieciu OK pojawia sie kolejne okno z błędem, takim samym tylko z innymi liczbami
A to procedura odczytu, pewnie coś namieszałem:
procedure TForm1.ReadDate;
var
fsKart : TFileStream;
I : Integer;
begin
if not FileExists(FileName) then Exit; // Nie rob nic jezeli plik nie istnieje
fsKart := TFileStream.Create(FileName, fmOpenReadWrite); // odczytaj plik
SetLength(Dane, fsKart.Size div SizeOf(TZbior)); // ile jest danych??
For I := Low(Dane) to High(Dane) do
begin
fsKart.Read(Dane[i], SizeOf(TZbior));
ListBox1.Items.Add(Dane[i].Temat);
end;
fsKart.Free;
end;
EDIT: Kurcze zmeczony chyba jestem, blad naprawilem, zostaly mi resztki kodu po plikach typowanych dlatego cos sie kaszaniło. Za to teraz dziwnie mi zapisuje, tzn. jak edytuje plik "dane.dat" to są tam same kwadracki, a przy uruchomieniu programu zamiast moich rekordów w labeleditach są same ślaczki. Podaje więc jeszcze kod zapisu:
procedure TForm1.WriteDate;
var
fsKart : TFileStream;
I : Integer;
begin
fsKart := TFileStream.Create(FileName, fmCreate); // Utworz strumien
For I := Low(Dane) to High(Dane) do
begin
fsKart.Write(Dane[i], SizeOf(Dane[i])); // zapisz do pliku
end;
fsKart.Free; // zwolnij zmienna
end;
EDIT2: Bład naprawiony, nie zauwazylem że znowu mialem same stringi bez ograniczenia w [xxx], czyli powróciłem do początku [rotfl] ;( . Za ciezki dla mnie ten delphi, chyba wracam do grafiki...