Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-50251
Sharik_212
2003-05-26 22:15
2003.06.16
Помогите по DbGrid


1-50367
NeshBriges
2003-06-04 02:07
2003.06.16
ExtractIcon


9-50188
Drimmer
2003-01-03 18:36
2003.06.16
бесконечный поворот мыши


14-50488
Gremlin
2003-05-30 11:40
2003.06.16
Про FTP


1-50298
dataMaster
2003-06-04 16:30
2003.06.16
Национальные названия





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский