Skocz do zawartości

Odczytywanie danych z pliku txt


Grela

Rekomendowane odpowiedzi

Potrzebuje sklecić jakoś linijke kodu, która odczytuje parametry a, b i c z pliku(są to liczby) i każde parametry w pliku to jedna linijka czyli np.

 

3 5 0

3 2 9

2 8 0

 

 

I odrazu wypisze mi je, próbowałem to jakoś napisać, ale nie działa.

 

Czy ktoś mógłby mnie jakoś nakierować, albo jakiś przykład podać?

Odnośnik do komentarza
Udostępnij na innych stronach

GML
file_text_readln(fileid) //Omija resztę linii i ustawia "kursor" na początku następnej.</span></span>

i to

GML
string_char_at(str,index) //Zwraca znak znajdujący się na pozycji index w string'u str.</span></span>

Dwie funkcje, które powinny cię nakierować.

 

Edit: Plus pętla for.

Odnośnik do komentarza
Udostępnij na innych stronach

chociaz niepracuje s delfi ani z pascal to zasady pracy z file so bardzo podobne do pracy v prawie kazdym jezyku, tylko znadz sobie pravidlovy zapis (syntax). :)

nieviem jestli to ta tva syntax, ale warto tu zbadac.

 

-to co pisal @ALT jest dobre do txt file i da sie stosowac procedury.

 

-jezeli v file masz zavse 3 columny odseparovane znakiem space, to mozes uzyc tez binarnego odczytyvania z file.

v bin czytas byte po byte a to jest v takim przypadku korzystne, bo latvo napisac pentle bez vycinania stringow i analizy jakie one so.

 

mam nadzieje, ze chociaz trosecke cie nakierovalem.

Odnośnik do komentarza
Udostępnij na innych stronach

Szczerze, to nie rozumiem z Twojego pierwszego posta. Nie wiem czy rozumieć to jako: a=350, b=329, c=280; czy jako: a=3, b=5, c=0 potem z następnej linijki a=3, b=2, c=9 itd.

Dawno nie pisałem w Pascalu, ale patrząc po jakiś swoich starych programach, to będzie to mniej więcej coś takiego:

(rozpatruje pierwszy przypadek, bo chyba o to Ci chodziło)

var
t: text;
a,b,c, err: integer;
tmp: string;

procedure usunspacje;
var 
i: integer;
begin
for i:=1 to length(tmp) do
begin
if tmp[i]=32 then 
begin
delete(tmp,i,1); {32 to znak spacji, zmniejszamy licznik i, zeby odczytal poprawnie nastepny znak}
i:=i-1;
end;
end;
end;

begin
assign(t,'nazwapliku'); {wczytanie pliku do zmiennej t}
reset(t); {"uruchomienie" pliku}
{normalnie po ludzku dalbym tu petle for, ale skoro rozrozniasz na zmienne a,b,c to robimy krok po kroku}
readln(t,tmp); {odczytanie linii}
usunspacje;
val(tmp, a, err); {konwertuje stringa na liczbe}
readln(t,tmp);
usunspacje;
val(tmp, b, err);
readln(t,tmp);
usunspacje;
val(tmp, c, str);
close(t); {zamkniecie pliku}
end.

 

Jeżeli drugi przypadek, to zrobiłbym to obiektowo. Klasa wiersz i tam procedura rozdzielająca na a, b i c. Odczyt na podobnej zasadzie, tylko tym razem uruchamia się w pętli i z kazdym wierszem tworzymy nowy obiekt wiersz w tablicy tych obiektow.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...