Как избежать ошибок при создании файла?

Форум для программистов

Сообщение Strateg » Пн ноя 10, 2003 9:08 am

Создаю файл (Rewrite). И наткнулся на такую проблему. Файл автоматом создается в каталоге с программой. Программа была записана на CD-диск. И соответственно страшно выругалась на попытку запустить ее с диска. Каким образом можно вообще избежать появления ошибок перед пользователем и спокойно обрабатывать ее появление (либо если есть операторы.. функции.. процедуры, проверяющие возможность создать файл по указанному пути...). Мне посоветовали использовать блок
try
except
On Error:...;
end;
Но в этом случае ошибка перед пользователем все-равно у меня появилась. (По факам прочел еще несколько советов, но не помогло ничего <!--emo&:(-->Изображение<!--endemo-->...) Может я чего-то недопонимаю? Напишите, плз, короткий код, вызывающий ошибку и перехватывающий ее (то есть, чтобы она не выводила сообщение с ошибкой). Спасибо.
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

Сообщение sm@rt » Пн ноя 10, 2003 10:52 am

Гы. А ты не пробовал файл тупо создавать не в текущей директории а во временной например. Все уважающие себя программы именно так и делают <!--emo&:)-->Изображение<!--endemo--> Чаще всего это "C:\windows\temp" но вообще в идеале вытягивать из environment variable %TEMP%.
А посоветовали правильно
Код: выделить все
var
f : Text;
begin

try
  AssignFile(f, 'myfile.dat');
  rewrite(f);
except
  AssignFile(f, 'c:\windows\temp\myfile.dat');
  rewrite(f);
end;
Красота и массовые расстрелы спасут мир.
sm@rt
Генерал-майор
 
Сообщений: 2935
Зарегистрирован: Вт фев 25, 2003 4:42 pm
Пункты репутации: 0

Сообщение Strateg » Пн ноя 10, 2003 11:48 am

2sm@rt
Абьясняю для нипанятливых.
1) try... бла-бла-бла... ошибка появляется в виде сообщения!!!
2) файл нужно создать возле exe файла если он такое возможно и не создавать вообще, если это невозможно.
3) Мне нужен пример, в котором либо проверяется второе, либо недопускается первое.
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

Сообщение StayAtHome » Чт ноя 13, 2003 11:19 pm

2Strateg
1. Можешь привести кусок кода, на котором выскакивает сообщение (вместе с блоком try-except)
2. Попробуй вложеность:
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
var
f : Text;
begin
try
  try
    AssignFile(f, 'myfile.dat');
    rewrite(f);
  except
    AssignFile(f, 'c:\windows\temp\myfile.dat');
    rewrite(f);
  end;
finally
end;<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Последний раз редактировалось StayAtHome Сб ноя 22, 2003 11:43 am, всего редактировалось 1 раз.
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение sm@rt » Пт ноя 14, 2003 8:28 am

<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Абьясняю для нипанятливых.<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Таковых здесь не вижу
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->1) try... бла-бла-бла... ошибка появляется в виде сообщения!!!<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Это понятно. Кстати она появляется при запуске самой проги или при ее запуске в Дельфи?
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->2) файл нужно создать возле exe файла если он такое возможно и не создавать вообще, если это невозможно.<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Этого ты раньше не говорил......
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->3) Мне нужен пример, в котором либо проверяется второе, либо недопускается первое.<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Как правильно сказали код в студию.
Красота и массовые расстрелы спасут мир.
sm@rt
Генерал-майор
 
Сообщений: 2935
Зарегистрирован: Вт фев 25, 2003 4:42 pm
Пункты репутации: 0

Сообщение dAnIK SeNT » Пт ноя 14, 2003 12:48 pm

2Strateg
Во-первых, если ты запускаешь прогу из среды Дельфи, cообщение об ошибке будет всегда (где-то это в настройках встречается).
Во-вторых, AssignFile использовать очень настоятельно не рекомендуется - гораздо лучше работать через TFileStream. И ошибки отлавливать на два порядка легче.
Последний раз редактировалось dAnIK SeNT Пт ноя 14, 2003 12:49 pm, всего редактировалось 1 раз.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение StayAtHome » Сб ноя 15, 2003 11:26 am

2dAnIK SeNT
Объясни, пожалуйста, недостатки AssignFile, и преимущества TFileStream т. к. я сам его иногда пользую.
Особенно интересует требовательность к ресурсам и скорость работы. Сорри за оффтоп, но для меня это важно.
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение dAnIK SeNT » Сб ноя 15, 2003 3:03 pm

2StayAtHome
Недостаток в очень плохой совместимости с виндой и мультипотоковостью. И в трудностях с обработкой ошибок. Можно эксес вайолейшеном по харе получить <!--emo&:)-->Изображение<!--endemo-->.
Насчет скорости и ресурсов не измерял, не знаю.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Strateg » Пн ноя 17, 2003 7:19 am

2All Спасибо. На мастерах дельфи нашел кусок книги С. Тейксейра, К. Пачеко. Там вроде что-то подобное объясняется. Буду потихоньку разбираться. Ежли разберусь - отписать в тему?
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

Сообщение alex977 » Пн ноя 17, 2003 10:49 am

2Strateg

<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
На мастерах дельфи нашел кусок книги С. Тейксейра, К. Пачеко.
<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->

Можно и полную версию найти <!--emo&;)-->Изображение<!--endemo-->
alex977
Ст. сержант
 
Сообщений: 42
Зарегистрирован: Пн апр 28, 2003 12:44 pm
Пункты репутации: 0

Сообщение Strateg » Пн ноя 17, 2003 1:04 pm

2alex977
!!!!!!!!!!!!!!!!!!!
эмоции, плавно переходящие в овации!!!!

!!!!!!
сорри..... не флуд.....
можешь добыть??!!!
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

Сообщение Mishail » Пн ноя 17, 2003 11:35 pm

2 Strateg
<a href='http://delphiplus.nagano.ru/docsdelphi5.html' target='_blank'>http://delphiplus.nagano.ru/docsdelphi5.html</a>
<a href="http://www.foobar2000.ru/" target="_blank">Изображение</a>| <!--coloro:#009900--><span style="color:#009900"><!--/coloro--><a href="http://irc.run.net/Pix/ircmap.txt" target="_blank">RUSNet:</a> #miranda #foobar2000 #mozilla<!--colorc--></span><!--/colorc-->
Mishail
Полковник
 
Сообщений: 1196
Зарегистрирован: Ср апр 03, 2002 9:30 pm
Откуда: Владивосток
Пункты репутации: 0

Сообщение Strateg » Вт ноя 18, 2003 7:19 am

2Mishail
Огромное человеческое спасибо!
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

Сообщение dAnIK SeNT » Вт ноя 18, 2003 11:24 pm

2Strateg
Может я мануалов подкину. Пачеко и Тексейра у меня есть версия 6.0 на английском (+ на русском в бумажном виде <!--emo&:)-->Изображение<!--endemo-->), а 5.0 - на русском и английском.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Strateg » Ср ноя 19, 2003 6:52 am

2dAnIK SeNT
5 на русском я скачал с вышеуказанной ссылки, а шестой не помешает, даже на английском. Спасибо. Скинь на ybayanista(sobaka)pisem.net
Последний раз редактировалось Strateg Ср ноя 19, 2003 7:23 am, всего редактировалось 1 раз.
хм...!
Strateg
Полковник
 
Сообщений: 1016
Зарегистрирован: Пт май 24, 2002 7:26 am
Откуда: Краснодар
Пункты репутации: 0

След.

Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1