Skocz do zawartości

[Free Pascal] Zmienna plikowa w parametrze procedury


Atlantis86

Polecane posty

Pewnie pytanie wyda się banalne dla profesjonalistów, ale za nic nie mogę dojść do przyczyny...

Cel jest następujący: napisać program porównujący kilka algorytmów sortowania. Mam je w poszczególnych procedurach - działających i przetestowanych. Na wejściu przyjmują dwie wartości - jedna to "ciag" (typ array[0..k], gdzie k to ilość elementów) druga to właśnie ilość elementów.

Dane do posortowania mają pochodzić z pliku.
No więc definiuję zmienną plik:

[code=Pascal] var plik : file of ciag;OR-zl)+jhjW
assign (plik, adres pliku);
reset (plik); [/code]

No i tutaj zaczyna się problem... Bo gdy próbuję wywołać którąś ze wspomnianych procedur ze zmienną "plik" jako pierwszym argumentem, wyskakuje mi błąd podczas kompilacji:

Error: Call by var parameters have to match exactly: G

Kompilowane nie pod FPC. Ktoś wie co jest grane?
Link do komentarza
Udostępnij na innych stronach

CYTAT(Toster @ nie, 03 gru 2006 - 17:38) <{POST_SNAPBACK}>jesli to delphi to powinno byc AssignFile a nie Assign

To Free Pascal, ale zależy mi na tym, żeby kompilowało się wstecznie na Turbo Pascalu 7.0 - wiadomo na czym osoba, do której to trafi będzie chciała to sprawdzić? ;P


CYTATpozatym jesli zapis to rewrite a nie reset.

Odczyt gotowego pliku, tylko odczyt...


[quote] a po trzecie probojesz zrobic pewnie odczyt/zapis na zmiennej ktora nie jest tego samego typu co wpisales w file of [/quote]

Może, ale ja nie mogę się dopatrzeć błędu...

Tak wyglądają derklaracje:

[code=Pascal]
const
k = 25631;

type
ciag = array[0..k] of integer;

vaZZ[HXYYZH[OR(%uŹzŚ3$iŁŚy*ZąĆqG&6VGW&R'V&ĆW6'Bf\"6sFVvW\"OQZĆŚŁĄzŹqQąĄąŹŹ [/code]

Co jest nie tak????
Link do komentarza
Udostępnij na innych stronach

[quote] rety przeciek sam sobie na pytanie odpowiadasz
w twoim przykladzie masz bublesort ktore jako pierweszy parametr przyjmuje zmienna typu ciag. a w procedurze bublesort podajesz zmienna typu file of ciag. Dlatego ci nie dziala [/quote]

Żeby tylko to było takie proste... Próbowałem w definicji procedury zmienić "ciag" na "file of ciag" - problem faktycznie został wyeliminowany, jednak na jego miejsce pojawił się nowy...
A mianowicie wtedy bład pojawia się wewnątrz tej procedury, na pierwszym zapisie z użyciem "a[i]" wywala komunikat "Illegal qualifier". Wiem, że pewnie rozwiązanie jest banalne, ale ja na to wpaść nie mogę? wink.gif

A może jakaś prosta procedura, która będzie potrafiła przepisać całą zawartośc takiego pliku do zmiennej typu ciag? W pliku i tak nic nie ma być zapisywane, chodzi jedynie o odczyt tych danych i puszczenie ich na procedury.

Link do komentarza
Udostępnij na innych stronach

[quote] i użyj tego typu jako typu argumentu funkcji oraz jako typu zmiennej plik. [/quote]

Niestety - wtedy wywala problem, gdy natknie się na "a[i]" - odwołanie do danego miejsca w tej tabeli wewnątrz procedury - wywala "Illegal Qualifier"...
Najlepiej byłoby dać chyba jakąś procedurę, która przepisze zawartość pliku do zwykłej, zmiennej typu ciag...
Link do komentarza
Udostępnij na innych stronach

[quote] Niestety - wtedy wywala problem, gdy natknie się na "a[i]" - odwołanie do danego miejsca w tej tabeli wewnątrz procedury - wywala "Illegal Qualifier"...
Najlepiej byłoby dać chyba jakąś procedurę, która przepisze zawartość pliku do zwykłej, zmiennej typu ciag... [/quote]Napisz sobie procedurę, która wczyta/zapisze z pliku strukturę "ciag"...

Przeczytaj:
http://www.komputery-internet.net/turbo/pliki_nietekst.php
ORAZ TO: http://turbopascal.helion.pl/r-18.htm

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...