bardzo dziwny problem z poleceniem RESET

0

Witam!
Oto sprawca całego zamieszania

GenerujRaport2(plik:string;plik_prac:string;plik_doc:string);
var TF:TextFile;
begin
if not fileexists(plik) then exit;
assignfile(TF,plik);
reset(TF);
//pozostałe instrukcje
closefile(TF);
end;

Tak to w skrócie wygląda. Napisałem kiedyś programik i teraz chce go przerobić. Więc przekopiowałem dobrze działającą procedurę GenerujRaport i zmieniłem jej nazwę na powyższą. Chciałem przerobić procedurę GenerujRaport2 tak, żeby spełniała nowe wymogi, ale pojawił się problem, którego nie potrafię rozwiązać.
Programik kompiluje się bez błedów, natomiast w momencie RESET(TF) wywala błąd "File Not Found" :|
Nie wiem co jest grane, bo przecież wcześniej jest test fileexists(TF) i on przechodzi pomyślnie.
Czy ktoś może mi pomóc i rozwiązać ten problem, może przełączyłem jaką opcję i teraz takie rzeczy się dzieją.

Z góry dzięki

Pozdrowionka
Bierny

tak ma wyglądać pierwsza linijka ;-)

GenerujRaport2(plik:string; plik_prac:string; plik_doc:string);

//Wiesz co to sa tagi < delphi > ?? uzywaj ich - lofix

0

Zamiast Reset() zrób ReWrite() powinno działać a chyba wiesz co znaczy FileNotFound... LoL

0

Przecież dał

if not fileexists(plik) then exit;
assignfile(TF,plik);

A poza tym, autor posta może chce coś odczytać z pliku, a Rewrite() mu to skutecznie uniemożliwi.

Sprawdź przed Reset() zawartość zmienniej "plik" - Najlepiej przez

ShowMessage('|' + Plik +'|');

Znaczki "|" ja zawsze stosuje, żeby sprawdzić czy nie ma tam jakichś niechcianych spacji...

0

Dzięki za pomoc, ale już rozwiązałem problem :D

W kwestii wyjaśnienia:
Najlepsze jest to, że próbowałem dawać rewerite, żeby zobaczyć gdzie jest problem, ale on też wywalił "File Not Found" :|
Sprawdzałem też ścieżkę do pliku, wszystko gra.
Najzabawniejsze jest to, że kiedy napiszę dokładnie taką samą procedrurę w nowej aplikacji, to wszystko działa.

0

Skoro robi się to co sie robi, to widocznie błąd jest gdzie indziej, zresztą procedurka (w takim stanie w jakim ją pokazałeś) jest jak najbardziej w porządku. Może jedynie jeśli sam plik ma ustawione dodatkowe atrybuty (hidden/sysfile/readonly), trzeba ustawić filemode...

filemode:=
fmOpenRead or     //albo po prostu 0
fmShareDenyNone;  //=64 ($40)- jeśli chcesz pozwolić na dzielenie dostępu

[do postu poniżej]
To widocznie w tej procedurce ujawnia się wcześniejszy bład :/
Sprawdź po prostu inne krytyczne miejsca.

0

Plik który otwieram to zwykły plik tekstowy, który został wczesniej przez ten program utworzony (raport) Nie ma żadnych atrybutów.

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