Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Вниз

Обработка ошибки   Найти похожие ветки 

 
Iris ©   (2008-09-26 11:43) [0]

Проблема в чем: есть код, который падает, если файл с таким именем уже открыт. Вроде бы написал исключение, но выскакивает сначала системное исключение, а потом уже мое сообщение.
Как сделать, чтобы появлялось только мое сообщение??
Пока под такой:
       
try
           Self.GridExcelIO.XLSExport( ChangeFileExt(SaveDialog.Files[0], ".xls") );
       except
           ShowMessage("Файл с таким же именем уже открыт! Для перезаписи закройте его, и повторите сохранение");
       end;


 
Cosinus   (2008-09-26 11:46) [1]

Например просто проверить сначала, а не открыт ли случаем файл с таким именем... )))


 
Ega23 ©   (2008-09-26 11:48) [2]


> Как сделать, чтобы появлялось только мое сообщение??


Запускать exe, а не из-под отладчика.
Либо галку снять Stop on Delphi Exceptions


 
Cosinus   (2008-09-26 11:51) [3]

Кстати да!
Я тоже об этом подумал, но пока проверял, уже все решилось )))

Если что вот еще нарыл, мало ли, может пригодится.

Как узнать, используется ли файл в данный момент другим приложением -----------------------------------------------------------------------------
function E9FileStatus(const Origin: string): boolean;
var
 F: TFileStream;
begin
{
   Значение             Описание
   fmCreate             Созда¸т файл с данным именем. Если файл существует, то открыть его в
                                режиме записи.
   fmOpenRead           Открыть файл только для чтения.
   fmOpenWrite          Открыть файл только на запись. При этом запись в файл заменит вс¸ его
                                содержимое.
   fmOpenReadWrite Открыть файл скорее для изменения содержимого чем для замены его.

   Режим доступа должен иметь одно из следующих значений:

   Значение            Описание
   fmShareCompat       Доступ к файлу совместим с FCB.
   fmShareExclusive    Другое приложение не может открыть файл для различных целей.
   fmShareDenyWrite    Другое приложение может открыть файл для чтения, но не для записи.
   fmShareDenyRead     Другое приложение может открыть файл для записи, но не для чтения.
   fmShareDenyNone     Разрешить другим файлам делать с файлом и чтени и запись.

   Если файл невозможно открыть, то Create сгенерирует исключение.
   Возвращает true если файл не заблокирован
}
 try
   F := TFileStream.Create(Origin, fmOpenReadWrite or fmShareExclusive);
   try
     Result := true;
   finally
     F.Free;
   end;
 except
   Result := false;
 end;
end;



 
Ega23 ©   (2008-09-26 11:55) [4]


> Как узнать, используется ли файл в данный момент другим
> приложением


Это только на момент создания FileStream.


 
Palladin ©   (2008-09-26 11:57) [5]

и откуда это недразумение взято?


 
Правильный$Вася   (2008-09-26 12:06) [6]


> Как узнать, используется ли файл в данный момент другим
> приложением

в интервале между проверкой и твоей попыткой использования может случиться, что угодно


 
Iris ©   (2008-09-26 12:07) [7]

всем спасибо


 
Vlad Oshin ©   (2008-09-26 12:09) [8]

я бы примерно так написал, потому что бесит, когда программа много вопросов задает
(не проверял, прямо тут в TEXTAREA вбивал )
i:=0;
s:=SaveDialog.Files[0];
repeat
    b:=true;
      try
          Self.GridExcelIO.XLSExport( ChangeFileExt(s, ".xls"); );
      except
          begin
            inc(i);
            b:=false;
            s:=s+"1";
          end;
      end;
until b or (i>9);

if i=0 then ShowMessage("Ок!")
else
if i<11 then ShowMessage("Файл записан как"+ S+ "потому, что требуемое имя занято")
         else ShowMessage("Много открытых файлов! Для перезаписи закройте, и повторите сохранение");



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
2-1222019809
Сергей
2008-09-21 21:56
2008.11.02
Алгорит записей в БД накладных...


15-1221041799
define
2008-09-10 14:16
2008.11.02
Обмен данными между оператором связи и службой webmoney.


2-1222147865
vegarulez
2008-09-23 09:31
2008.11.02
Вопрос про хук.


15-1220959204
vajo
2008-09-09 15:20
2008.11.02
Вот уж не думал, что тема про штрафы ГИБДД никому не интересна.


1-1201861006
Still Swamp
2008-02-01 13:16
2008.11.02
Обшуршивание компонент на предмет строк





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский