[delphi]Odczyt danych co jest nie tak ?

0

Dzień dobry
Chciałbym odczytać dane zapisane w postaci naukowej np 3.281e-01 1.546e-02-1.338e+00 z pliku tekstowego. Mam jakis bląd chyba cos przy końcu i nie moge odczytać tych danych.

type
Tpunkty = record
X, Y : real
end;
var f:textfile; //zmienna pomocnicza do obsługi plików
  tab : array of Tpunkty ;
i:integer;

begin

if opendialog1.Execute then

begin

assignfile(f, opendialog1.FileName);

reset(f);

i:=0;

Image1.Repaint;   //zabezpieczenie na wypadek ponownego wczytania pliku ale już z inna serią danych, czyli        wyczyszczenie pola wykresu

while not eof(f) do

begin

i:=i+1;             // zliczanie ilości wczytanych punktów do tablicy Tab    
SetLength(Tab, 3);
read(f, tab[i].x); //wczytanie do tablicy Tab współrzędnej X

read(f, tab[i].y); //wczytanie do tablicy Tab współrzędnej Y

end;
closefile(f);
begin

Showmessage(FloatToStr(tab[2].X));
end;
end;
end;
0

SetLength(Tab, 3);
może na
SetLength(Tab, i + 1);

0

Nie to nie w tym rzecz pojawia m sie bład teraz ze zmienna 'i' mozę nie być zainicjalizowana

0

Błąd czy komunikat? User nie musi nacisnąć klawisza, tak więc jest to hint, że ten blok może się nie wykonać. I wywal poza pętlę SetLength(Tab, 3);

0

Ale co moze być przyczyna tego w tym przypadku ?

0

if OpenDialog1.Execute() - user może wcisnąć anuluj i kod się nie wykona. Jak nie chcesz takich komunikatów to opakuj takie fragmenty kodu w {$WARNINGS OFF} <kod> {$WARNINGS ON}

0

nie, delphi nie jest takie głupie
jak pisze że i może nie być zainicjowana to znaczy że gdzieś korzystasz zanim zainicjujesz - można go oszukać żeby nie pokazał komunikatu ale nigdy, przynajmniej u mnie w delphi 7, nie generował sam z siebie trefnych komunikatów
a na pewno w tym przypadku się by nie wyświetliło
imo - ten komunikat nie dotyczy tej części kodu

za to połączenie porad "zamień 3 na i + 1" i "wywal setlength poza pętle" może spowodować taki komunikat jeśli źle zastosowałeś

i może powinieneś wczytywać jako string a potem konwertować na real

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