StringGrid jak pobrać ilość wiersz z txt

0

Witam

Mam pliczek tekstowy a w nim zawartość np.

aaaaaaaaaa
bbbbbbbbbb
ccccccccccc
ddddddddd
eeeeeeeeee

mam taki kodzik

var
f: TextFile;
k: Integer;
strTemp: String;
begin
AssignFile(f, FileName);
Reset(f);

with StringGrid do
begin
ColCount :=2;
RowCount := ??

for k := 0 to RowCount - 1 do
begin
Readln(f, strTemp);
Cells[0,k] :=Copy(strTemp,0,8);
Cells[1,k] :=Copy(strTemp,10,999);;
end;
end;
CloseFile(f);
end;

Jak pobrać ilość wierszy które są w pliku txt oczywiście w tym pliku nie będzie podana liczba wierszy.
Z góry dzieki za odpowiedz [browar]

0

Np. tak:

//...
  RowCount:=0;
  while not Eof(f) do
  begin
    RowCount:=RowCount+1;
    Readln(f, strTemp);
    //...
  end;
//...
0

...Procedura Inc generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora dodawania (+)...

//...
  RowCount:=0;
  while not Eof(f) do
  begin
    Inc(RowCount);
    Readln(f, strTemp);
    //...
  end;
//...
0
Młody napisał(a)

...Procedura Inc generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora dodawania (+)...

//...
  RowCount:=0;
  while not Eof(f) do
  begin
    Inc(RowCount);
    Readln(f, strTemp);
    //...
  end;
//...

A ja zawsze myślałem, że jest odwrotnie :| . Komu tu wierzyć?

0
Młody napisał(a)

...Procedura Inc generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora dodawania (+)...

//...
  RowCount:=0;
  while not Eof(f) do
  begin
    Inc(RowCount);
    Readln(f, strTemp);
    //...
  end;
//...

bzdura !!! napisalem kod z funkcja dodawania poprzez + i taki sam kod z inc w delphi 7 - po kompilacji oba kody wygladaly IDENTYCZNIE w asm...

0
Młody napisał(a)

...Procedura Inc generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora dodawania (+)...

//...
  RowCount:=0;
  while not Eof(f) do
  begin
    Inc(RowCount);
    Readln(f, strTemp);
    //...
  end;
//...

Delphi takiego kodu nie skompiluje, gdyż RowCount jest w naszym przypadku własnością (property) komponentu StringGrid.

0
Tomek2010 napisał(a)

Witam

Mam pliczek tekstowy a w nim zawartość np.

aaaaaaaaaa
bbbbbbbbbb
ccccccccccc
ddddddddd
eeeeeeeeee

mam taki kodzik

var
f: TextFile;
k: Integer;
strTemp: String;
begin
AssignFile(f, FileName);
Reset(f);

with StringGrid do
begin
ColCount :=2;
RowCount := ??

for k := 0 to RowCount - 1 do
begin
Readln(f, strTemp);
Cells[0,k] :=Copy(strTemp,0,8);
Cells[1,k] :=Copy(strTemp,10,999);;
end;
end;
CloseFile(f);
end;

Jak pobrać ilość wierszy które są w pliku txt oczywiście w tym pliku nie będzie podana liczba wierszy.
Z góry dzieki za odpowiedz [browar]
Pomijając to, że nie robisz żadnej obsługi błędów (chociażby nie reagujesz na sytuacje, kiedy plik wejściowy nie istnieje), ja na twoim miejscu załadowałbym wszystko do TStrings (metodą LoadFromFile), tam od razu jest propert: Count

Oczywiście - ktoś zarzuci, że moje rozwiązanie zajmować będzie więcej pamięci - może i tak. Tylko kod aplikacji będzie dużo czytelniejszy, a pamięć i tak zostanie zwolniona na końcu funkcji. Wydajnościowo (przy wilokrotnym wywoływaniu procedury ładującej dane) będzie podobnie - a czytelność i prostota programu wzrośnie.

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