Bład przy AssignFile

0

Kurcze, mam w którymś programiku procedurę zapisu pliku. Niby taka jak wszystkie inne, a jednak jest problem ;P. Otóż na niektórych komputerach (czytaj: na jednych wcale, na innych czasami, na jeszcze innych zazwyczaj, a na nielicznych zawsze) program się wywala w momencie wykonywania instrukcji AssignFile. Sprawdzałem w Helpie - nie podali żadnych możliwości wystąpienia błędu (no oprócz jednego przeciwwskazania - nie otwierać już otwartego pliku, dlatego upewniłem się, że mój program tego nie robi), więc nie mam zielonego pojęcia co jest grane -_-'.

0

Daj najpierw RewriteFile(TexFile);

0

Daj najpierw RewriteFile(TexFile);

Moje Delphi nawet o czymś takim nie słyszało ;p

0

Nie wiem, czy to pomoze, ale Delphi ma przykry zwyczaj niezauwazania bledow i/o przy pewnych instrukcjach. Blad ujawnia sie pozniej. Np. proba utworzenia juz istniejacego katalogu powoduje niejawny blad, ktory wyskakuje np przy Reset(F) duzo dalej w kodzie. Pamietaj tez, ze Reset na pliku readonly wymaga odpowiedniego ustawienia zmiennej FileMode PRZED otwarciem pliku. Wprawdzie twierdzisz, ze u Ciebie blad (BTW - jaki) jest przy AssignFile, ale sprawdz tez te rzeczy.

0

Ano sprawdzałem dokładnie. Dałem se pare wyznaczników, czy sie krzaczy na AssignFile, czy na Reset i z całą pewnością stwierdzam, że właśnie na Assign i tego nie rozumiem :(. Za to potem błędy są naturalnie przy kazdej operacji na tym pliku, bo nie jest on otwarty.

0

Ale jak sie krzaczy? Jaki jest blad?

0

Było ostantio wyłapywane przez try..except, przypuszczam że jakiś AccessViolation, ale pewności jeszcze nie mam. Jak (jeśli) mi wyskoczy to powiem ;)

PS. Niewiarygodne rzeczy się tu dzieją. <font color="black">Under investigation...</span>

0

Pochwalony! Popróbuj na różnych plikach, tzn utwórz sobie jakieś pliki i na nich także próbuj. Jeżeli tylko przy jakimś występuje błąd, to znaczy, że coś z tego (najprawdopodobniej) korzysta.

0

malo prawdopodobne - on zaklada nowy plik :)

0

No to chyba musi działać. Sprawdź dokładnie

var
t: textfile;

begin
AssignFile(t, 'c:/plik.txt');
Rewrite(t);
...
CloseFile(t);
end;
0

moze sprawdzic czy istnieje i robic w zaleznosci reset lub rewrite...
a w ostatecznosci operuj na dynamicznym tstringlist i go zapisuj :]

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