Ktoś ma może kod źródłowy do programu który na zasadzie rokordów zapisuje do pliku o typie rekordowym kilka pol z czego jedno pole umożliwia zapisanie 5000 znaków np. pobranych z komponentu memo ?
Bardzo potrzebuje takiego programu ale nie radze sobie z jego napisaniem.
Mogę Ci podać swój kod, tylko musisz sprawdzić czy obsłuży taki rząd wielkości jaki podałeś.
type TPytanie = record
id:Integer;
Tresc: String[255];
Odp1,Odp2,Odp3: String[255];
Odp: Integer;
Pkt: Integer;
end;
type TTest = record
Ilosc: Integer;
Pytania: Array[1..256] of TPytanie;
Czas: Integer;
end;
var T: TTest;
................
procedure TFEdycja.Button1Click(Sender: TObject); //zapis do pliku
var
F: File of TTest;
begin
T.Czas:=StrToInt(Edit4.Text);
SaveDialog1.Execute;
If SaveDialog1.FileName='' then exit;
AssignFile(F,SaveDialog1.FileName);
TRY
Rewrite(F);
Write(F,T);
Finally
CloseFile(F);
End;
Showmessage(Format('Zapisano test do pliku o nazwie %s który zawiera %d pytań'',[SaveDialog1.FileName,T.ilosc]));
end;
procedure TFEdycja.Button2Click(Sender: TObject); //odczyt z pliku
var
F: File of TTest;
begin
OpenDialog1.Execute;
If OpenDialog1.FileName='' then exit;
AssignFile(F,OpenDialog1.FileName);
TRY
Reset(F);
Read(F,T);
Finally
CloseFile(F);
End;
i:=1;
Showmessage(Format('Wczytano Test o nazwie %s który zawiera %d pytań',[OpenDialog1.FileName,T.ilosc]));
FEdycja.Odczytaj; // tu procedurka która mi wypisuje wczytany rekord na forme w odpowiednie pola
end;
Mi chodzi o zmienną w rekordzie która zmieści 5000 znaków.
Jak to ktoś mądry kiedyś powiedział :) , jedyną możliwością jest tablica[1..5000] of char, albo jak kto woli of byte, żeby przechowywać kody znaków.
//DOPISANE
Generalnie w samym rekordzie można definiować tablice dynamiczne, ale jak potem chcesz zapisać ten rekord do pliku, to nie bardzo się da. Musiałbyś zaimplementować własną obsługę zapisywania do pliku, i potem odczytywania z niego. Korzyść z tablic dynamicznych jest taka, że nie rezerwujesz w ch.. pamięci od razu, tylko w czasie działania programu tyle, ile jest ci potrzebne. Ale jak ktoś ma za dużo RAMu... ;-)
co za problem? zadeklaruj sobie taki rekord, który będzie mieścił potrzebną Ci ilość znaków i już.
berl: przecież nie trzeba wczytywać całego pliku do pamięci.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.