[Delphi] dynamiczna tablica z pliku txt

0

Po odczytaniu z pliku txt ilosci kolum i wierszy tworze dynamicznie tablice 2d o takich wlasnie wymiarach i teraz chcialbym w petli odczytac dane. Plik wyglada np tak:

2
3
12 14
8 25
14 0

2 to ilosc kolumn, 3 to ilosc wierszy a reszta to dane
no i teraz jak moge odczytac te dane ?
Jesli znam np liczbe kolumn (np 3)to moge latwo zrobic tak:

for I := 0 to NumOfRow-1 do
ReadLn({jakis plik},Tab[0,I],Tab[1,I],Tab[2,I]);

ale chcialbym zrobic tak:

for I := 0 to NumOfRow-1 do
for J := 0 to NumOfCol-1 do
/// no i co teraz ? co zastosowac ?

prosze o szybka odpowiedz.
Dzieki

0

moze :

for I := 0 to NumOfRow-1 do
begin
for J := 0 to NumOfCol-1 do
read(plik,tab[j,i] {czy jak tam ;]});
readln(plik,tab[NumOfCol-1,i]);
end;

--

0

Nie dziala poniewaz do tablicy zostaja zapisane tylko wartosci pobrane przez ReadLn a poprzez Read nic nie zostaje pobrane :(
Wiec poprawne dane mam tylko w ostatnich komorkach tablicy

0

może wziąźć wszysciutko readlnem i potem pooddzielać pos-em ?

Wiem że to głupie i wolne ale możliwe do wykonania ;p

--
Najpierw wypróbuj wszystkie możliwości potem pytaj;)

0

Glupie to nie jest ale stanowczo zbyt wolne jesli to beda duze tablice, czy naprawde nie mozna zrobic tego inaczej :-/

0

zmień plik żeby wyglądał tak:
2
3
12
14
8
25
14
0

For Y := 1 To NumOfRow-1 do
For Z := 1 To NumOfCol-1 do
Begin
Readln(TF, linia );
tab[Z,Y]:=linia ;
End ;

0

a moze tak:

for I := 0 to NumOfRow-1 do
for J := 0 to NumOfCol-1 do
begin
read(plik,tab[I,J]);
if J = NumOfCol-1 then readln(plik);
end;

Dawno nie kozystalem z takiego zapisu pliku ale jesli dobrze pamietam to kiedys wlasnie tak to robilem.

0

A może skorzystaj z plików *.ini ?? zapewniają lepszy dostep do danych zapisanych w nich

0

werw0e dobrze kombinował, ale zrobił mały błąd.
Powinno być tak:

var
P: TextFile;
NumOfCol, NumOfRow, k, j: Integer;
Tab: array of array of Integer;
begin
AssignFile(P, 'c:\q.txt');
Reset(P);
ReadLn(P, NumOfCol);
ReadLn(P, NumOfRow);
SetLength(Tab, NumOfRow, NumOfCol);
for k := 0 to NumOfRow-1 do
begin
for j := 0 to NumOfCol-1 do
Read(P, Tab[k, j]);
ReadLn(P);
end;
CloseFile(P);
end;

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