[Delphi] string i integer??

0

Dlaczego taki kod się wywala (invalid numeric input) i dlaczego dopiero przy drugiej pętli, czy nie można czytać naprzemian z pliku tekstowego zmiennych string i integer?
{ stałe i zmienne }
const n=6;
var
j,k,ileSas,pol,dl:integer;
a:array[1..100,1..100] of integer;
nazwa:array[1..100] of string;
plik:textfile;

{ nurtująca mnie część kodu }
for j:=1 to n do
begin
readln(plik,nazwa[j]);
read(plik,ileSas);
for k:=1 to ileSas do
begin
read(plik,pol);
read(plik,dl);
a[j,pol]:=dl;
end;
end;

{ Uwaga: plik jest otwarty do odczytu, po operacji jest prawidłowo zamykany}

Z góry dzięki za pomoc.

0

A na pewno masz dobrze zapisane dane w pliku (w odpowiedniej kolejności)?

--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC:
Kanał: #4programmers
Serwer: warszawa.ircnet.pl
Sieć: POLNet
Port: 6667

0

Błąd jes w użyciu readln a potem read. Jedno przechodzi do następnej lini w pliku a drugie nie! Dlatego wywala się dopiero po drugiej pętli

0

Powinno chyba być:
for j:=1 to n do
begin
readln(plik,nazwa[j]);
readln(plik,ileSas);
for k:=1 to ileSas do
begin
read(plik,pol);
readln(plik,dl);
a[j,pol]:=dl;
end;
end;
Tak mi się wydaje, wtedy linie się zgadzają...

--
Gigi
http://daniel.lublin.pl

0

Błąd jes w użyciu readln a potem read. Jedno przechodzi do następnej lini w pliku a drugie nie! Dlatego wywala się dopiero po drugiej pętli

Chyba nie koniecznie. Wydaje mi się, że ma zapisane to w ten sposób:

BlaBlaBla
1 2 3 4
BlaBla
12 4 9 5
Blablablabla
21 23 42 56

I wówczas ma sens odczytywanie najpierw całej linijki, a potem tylko po jednej liczbie (chyba, że się mylę)

--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC: #4programmers, warszawa.ircnet.pl (POLNet)

0

wg. mnie problem jest w tym że po skończeniu wykonywania drugiej pętli nie przechodzi do następnej linijki.
Ten kod jest chyba taki:

najpierw odczytuje stringa w pierwszej linijce i przechodzi do następnej.
potem odczytuje ile par punktów (pol i dł) jest w linijce.
potem zaczyna się druga pętla i musi odczytać wszystkie pary punktów.
I w tym momencie jest błąd bo nie przechodzi do następnej linijki!!!
Zmień pętlę wewnętrzną na coś takiego:
for k:=1 to ileSas do
begin
read(plik,pol);
if k "mniejsze" ileSAS then read(plik,dl)
else Readln(plik,dl);
a[j,pol]:=dl;
end;

Jak cholera wpisać znak mniejszości??

0

Jak cholera wpisać znak mniejszości??

& l t ; (bez spacji)

--

Delphi 6

Pozdrówka

0

niestety nadal nie wiem jak wpisać ten znak mniejszości

& znak - nie działa

co tam jeszcze trzeba wpisać dokładnie?

0

co tam jeszcze trzeba wpisać dokładnie?

&+l+t+; = <

0

<

Super dzięki
teraz zadziałało

[cya]

0
<quote>
0

Nikt nie patrzy na niego ;p

0

Kod podany przez Gigi działa tak jak chciałem. Dzięki wszystkim za pomoc.

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