![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ForceDirectories и Exception
Andy BitOff © (2008-10-28 17:16:00)Чего-то я не пойму, это у всех так или только у меня? Если у всех, то что за дела.
type
ESomeError = class(Exception);
...
try
if not ForceDirectories(edt_OutputDirName.Text) then begin
Raise ESomeError.Create('Не удалось создать каталог ' + edt_OutputDirName.Text);
end;
...
except
on E: ESomeError do Application.MessageBox(PChar(E.Message), 'Сообщение.', MB_ICONSTOP or MB_OK or MB_SYSTEMMODAL);
end;
При выполнении ForceDirectories с edt_OutputDirName.Text := , например, 'qwerty' происходит Exception, при этом, соответственно, мы не попадаем на возбуждение, а так же пропускается блок except.
В чем дело? Кто-нибудь знает?
Andy BitOff_ (2008-10-28 20:06:00) [1]> Anatoly Podgoretsky © (28.10.08 19:09) [4]
Да, чего-то стормозил, видимо отключена отладка модулей. В общем ступил.
Anatoly Podgoretsky (2008-10-28 19:09:00) [2]> Andy BitOff (28.10.2008 17:16:00) [0]
Есть же отладчик.
han_malign (2008-10-28 18:05:00) [3]
function ForceDirectories(Dir: string): Boolean;
var
E: EInOutError;
begin
Result := True;
if Dir = '' then
begin
E := EInOutError.CreateRes(@SCannotCreateDir);
E.ErrorCode := 3;
raise E;
end;
Dir := ExcludeTrailingPathDelimiter(Dir);
{$IFDEF MSWINDOWS}
if (Length(Dir) < 3) or DirectoryExists(Dir)
or (ExtractFilePath(Dir) = Dir) then Exit; // avoid 'xyz:\' problem.
{$ENDIF}
{$IFDEF LINUX}
if (Dir = '') or DirectoryExists(Dir) then Exit;
{$ENDIF}
Result := ForceDirectories(ExtractFilePath(Dir)) and CreateDir(Dir);
end;
Andy BitOff_ (2008-10-28 17:47:00) [4]Ну то что мы не возбудились, это-то я и сам понимаю ;)
Однако по логике не может ForceDirectories вернуть True при ForceDirectories('qwerty'), да и не возвращает потому, что вылазит не мой Exception. Т.е. Exception вылазит, но не этот; on E: ESomeError
P.S.
Чего-то в DMClient'е слетел пароль, а так его не помню. Так что буду пока Andy BitOff_
Сергей М. (2008-10-28 17:24:00) [5]
> мы не попадаем на возбуждение
Значит мы не возбудились - ForceDirectories вернула True.
Вот такие вот дела.