Zapis tablic dynamicznych

0

Jak zapisać tablice dynamiczną na twardy a następnie odczytać ją z niego?

0

Może tak:

// ZAPIS
var
  tablica: array of string;
  i: integer;
  t: textfile;
begin
  ...
  AssignFile(t, 'C:\plik.txt');
  Rewrite(t)
  for i := Low(tablica) to High(tablica) do
    writeln(t, tablica[i]);
  CloseFile(t);
end;
// ODCZYT
var
  tablica: array of string;
  i: integer;
  t: textfile;
begin
  ... // określenie wielkości tablicy!!!!
  AssignFile(t, 'C:\plik.txt');
  Reset(t)
  for i := Low(tablica) to High(tablica) do
    readln(t, tablica[i]);
  CloseFile(t);
end;
0

OooOo Matko!!

// ODCZYT
var
Tablica: array of string;
i: Integer;
t: TextFile;
begin
AssignFile(t, 'C:\plik.txt');
Reset(t)
repeat
SetLength(Tablica,Length(Tablica)+1);
readln(t, tablica[i]);
until EoF(t);
CloseFile(t);
end;

Już prędzej tak będzie działać.

0

Odczyt można też tak:

var
 s: TStringList;
 i: integer; 

begin
 s:=TStringList.Create;
 s.LoadFromFile('C:\plik.txt');
 setLength(tablica, s.count);
 for i:=0 to high(tablica) do tablica[i]:=s.Strings[i];
end;

BTW low(tablica) chyba zawsze będzie 0, nie?

0

Odczyt można też tak:(...)

Hmm dla danego przypadku tablicy stringów to tak, ale jak już jest inna tabelka to odpada..

BTW low(tablica) chyba zawsze będzie 0, nie?

Dla dynamicznych tak, dla stałych nie zawsze bo mozna zdefiniować tabela: array [5..9] of cośtam.

[Dopisane] Użycie TStringList wymaga dodania SysUtils co zwiększa plik wyjściowy o około 110kB :) Niektórych to wali, ale mi to duża różnica. WinAPI r0x

/* Chcesz małe? Przejdź na asm. Pod Windowsem piszesz jak w WinAPI, a masz najmniejsze z możliwych i całkowitą kontrolę nad kodem. A tak w ogóle. Wiesz jak można zmniejszyć kod stosując własne try..except zamiast wbudowanych w kompilator? */

0

[Dopisane] Użycie TStringList wymaga dodania SysUtils co zwiększa plik wyjściowy o około 110kB :) Niektórych to wali, ale mi to duża różnica.

Od czego są UPX i.t.p.?

Mi zmniejszyło z ponad 1 mega do 300 KB :)

0

Jesli tablica jest tablicą typu statycznego o stałej wielkości (np integer, char, string[x], record (bez string)) to polecam BlockWrite i BlockRead i file of typtablicy.

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