Форум: "Основная";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
ВнизПочему программа не может с первого раза открыть файл? Найти похожие ветки
← →
Chaos (2003-06-03 17:22) [0]Всем привет. Если кто знает, объясните мне почему
программа не может с первого раза открыть/перезаписать
файл.Привожу два исходных кода:
1. Тут не открывает
(файл существует, не только для чтения)
if od1.Execute then
begin
assignfile(FParams,OD1.FileName);
{$i-}
reset(FParams);
if IOResult=0 then
begin
read(FParams,PS);
closefile(FParams);
...
end
else Application.MessageBox("Не могу открыть файл","Error");
{$i+}
end;
2.Тут открывает, т.е. проблема решена, но как???
я не пойму.объясните кто может и кому не лень :)
добился лишь экспериментальным путем, попробовал
открыть два раза подряд
if od1.Execute then
begin
assignfile(FParams,OD1.FileName);
{$i-}
reset(FParams);
if IOResult<>0 then reset(FParams);
if IOResult=0 then
begin
read(FParams,PS);
closefile(FParams);
...
end
else Application.MessageBox("Не могу открыть файл","Error");
{$i+}
end;
← →
Chaos (2003-06-03 18:04) [1]ну напишите хоть кто-нибудь
наверняка кто-то же сталкивался с таким-же!!!
← →
Serginio (2003-06-03 18:10) [2]Когда я вижу такой код у меня такая ностальгия проступает по древним временам Turbo Pascal. А чем TFileStream тебе не нравится???
← →
Andrews (2003-06-03 18:16) [3]В режиме отладки посмотри что происходит...
← →
Song (2003-06-03 18:46) [4]Посмотри чему равен IOResult. Второй - неправильный. Reset может вообще не исполнится.
← →
Chaos (2003-06-04 09:05) [5]>Song
IOResult=183
Второй не исполнится если файла нет или он уже открыт
Но второй вариант работает, и я не пойму почему не работает первый
>Andrews
Смотрел...а на что там собственно смотреть? Assign сработал, Reset - ошибка 183
>Serginio
Ностальгия, говоришь..Если остались пережитки паскаля, значит кто-то ими пользуется..Почему бы не я? Лучше бы дельное что-то сказал
Всем кто ответил-спасибо
← →
Morfein (2003-06-04 11:50) [6]>Chaos
>Ностальгия, говоришь..Если остались пережитки паскаля, значит
>кто-то ими пользуется..Почему бы не я?
>Лучше бы дельное что-то сказал
Чем пользуешься, то и получаешь. Смотри http://delphimaster.net/view/1-1054631182/, пост Morfein (03.06.03 19:04)
← →
Sandman25 (2003-06-04 11:50) [7]Я посмотрел исходный текст _ResetFile в System.pas, но там много ассемблера, а я в нем не спец. Единственное мое предположение - что первый Reset как-то умудряется изменить переменную FileMode из 2 в 0 и поэтому второй Reset проходит. Установите FileMode сразу в 0.
← →
Serginio (2003-06-04 12:38) [8]>>Ностальгия, говоришь..Если остались пережитки паскаля, значит >>кто-то ими пользуется..Почему бы не я? Лучше бы дельное что-то >>сказал
Так я дельное тебе и говорю. Так как специально для работы с файлами существует CLX класс TFileStream (Если конечно нет желания возится с API) и соответсвено хренова туча режимов открытия файлов. А то, что ВЫ не желаете обучаться и хотитие вылезти на каких то древних подходах не дает ВАМ профессионального развития.
← →
SVM (Perm) (2003-06-04 12:43) [9]IOResult проверь перед первым Reset.
← →
NickBat (2003-06-04 12:59) [10]Если файл существует его открываем через Reset
Если файла нет, открываем через Rewrite
И никаких ошибок.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c