Program z rekordami o du?żej zmiennej...

0

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.

0

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;
0

Mi chodzi o zmienną w rekordzie która zmieści 5000 znaków.

0

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... ;-)

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1