Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.30;
Скачать: CL | DM;

Вниз

CopyFiles отключить контроль ошибок   Найти похожие ветки 

 
belmol   (2009-07-02 11:50) [0]

есть код
 {$I-}
 CopyFiles( Handle, [ExtractFilePath(Application.ExeName)+"TempDirectory\update.exe"],ExtractFilePath(Application.ExeName),true,false);
 RemoveDir(ExtractFilePath(Application.ExeName)+"TempDirectory");
 {$I+}

где
function CopyFiles( Handle : Hwnd; Src : array of string; Dest : string;
Move : Boolean; AutoRename : Boolean ) : Integer;
var
SHFileOpStruct : TSHFileOpStruct;
SrcBuf : TBuffer;
begin
CreateBuffer( Src, SrcBuf );
with SHFileOpStruct do
  begin
    Wnd := Handle;
    wFunc := FO_COPY;
    if Move then wFunc := FO_MOVE;
    pFrom := Pointer( SrcBuf );
    pTo := PChar( Dest );
    fFlags := FOF_NOCONFIRMATION and FOF_SIMPLEPROGRESS;
    if AutoRename then fFlags := FOF_RENAMEONCOLLISION and FOF_SIMPLEPROGRESS;
    fAnyOperationsAborted := False;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;
Result := SHFileOperation( SHFileOpStruct );
SrcBuf := nil;
end;

при отсутствии фаила с директории он начинает ругаться и говорить что ошибка копирования, как ее убрать, чтоб если ошибка , то наплевать, продолжить выполнение.. т.е. не показывать никаких сообщений об ошибке.
вроде как вычитал что вот это
 {$I-}     {$I+}
либо {$IOChecks off} {$IOChecks on}
но что то ни то ни то не отключает контроль ошибок.


 
Palladin ©   (2009-07-02 12:10) [1]

эти директивы влияют только на стандартые методы ввода/вывода

заверни в try/except


 
belmol   (2009-07-02 12:12) [2]

пробовал.. не идет...


 
Сергей М. ©   (2009-07-02 12:15) [3]


> belmol


Что мешает проверить наличие файла непосредственно перед тем как копировать его ?


 
Сергей М. ©   (2009-07-02 12:19) [4]


> Palladin ©   (02.07.09 12:10) [1]


> заверни в try/except


SHFileOperation не возбуждает исключений - это же API-функция..

Она, afair, показывает диал.окно с инф-цией об отказе в выполнении операции, именно это окно автор и назвал "руганью")


 
Юрий Зотов ©   (2009-07-02 12:21) [5]

Вариант: if FileExists(Src[i]) then ...

PS
Что-то мне кажется, что при установке флагов AND"ы надо на OR"ы заменить (раз) и что повторная установка FOF_SIMPLEPROGRESS не нужна (два).


 
belmol   (2009-07-02 12:25) [6]

именно and-ы )) спасибо я что то не подумал попросту проверить наличие файла..


 
Юрий Зотов ©   (2009-07-02 12:27) [7]

> belmol   (02.07.09 12:25) [6]
> именно and-ы

А в чем же смысл этих AND"ов? Непонятно.


 
Anatoly Podgoretsky ©   (2009-07-02 12:52) [8]


> я что то не подумал попросту проверить наличие файла..

В чем же тогда смысл SHFileOperation, надо простой CopyFile


 
clickmaker ©   (2009-07-02 12:54) [9]

> чтоб если ошибка , то наплевать, продолжить выполнение..
> т.е. не показывать никаких сообщений об ошибке

FOF_NOERRORUI


 
Dennis I. Komarov ©   (2009-07-02 12:56) [10]


> clickmaker ©   (02.07.09 12:54) [9]
> > чтоб если ошибка , то наплевать, продолжить выполнение.
> .
> > т.е. не показывать никаких сообщений об ошибке
>
> FOF_NOERRORUI

Не поможет, пока с "AND"-ами не разберется ;)


 
Юрий Зотов ©   (2009-07-02 13:12) [11]

> clickmaker ©   (02.07.09 12:54) [9]

Хех.. а ведь первое, с чего я начал - это предположил то же самое и посмотрел список флагов в своей локальной MSDN. Странно, но такого флага там не нашел... видимо, устарела (или искал плохо).

Впрочем, Dennis I. Komarov прав - пока автор не разберется с булевой алгеброй, никакие флаги ему не помогут. А самое печальное - это то, что слушать не хочет... но это уже его проблемы. Наловится багов - поймет.


 
Anatoly Podgoretsky ©   (2009-07-02 13:31) [12]

> Юрий Зотов  (02.07.2009 13:12:11)  [11]

Устарела, но в исходниках есть. Ну а в большом MSDN еще больше.


 
Dennis I. Komarov ©   (2009-07-02 18:24) [13]


> А в чем же смысл этих AND"ов? Непонятно.

Ну как же непонятно, :) что бы и тот флаг был И этот


 
Юрий Зотов ©   (2009-07-02 19:03) [14]

> Dennis I. Komarov ©   (02.07.09 18:24) [13]

Это-то как раз было сразу понятно...
:o)


 
Anatoly Podgoretsky ©   (2009-07-03 08:54) [15]

> Dennis I. Komarov  (02.07.2009 18:24:13)  [13]

Это не соединительный союз, а математическая операция.


 
Dennis I. Komarov ©   (2009-07-03 09:28) [16]


> Это не соединительный союз, а математическая операция.

Дядя Толя, это для меня разъяснение? Это всего лишь логика [6] и ничего более ;)


 
Anatoly Podgoretsky ©   (2009-07-03 09:45) [17]

Это для тебя! Это не то И и поежтогму догадка, что бы и то было и это не подходит. Я сегодня уже посылал к себе на сайт за разъяснением
http://www.podgoretsky.com/Redir.aspx?id=137&DownloadFile=~/ddp/bits.aspx


 
brother ©   (2009-07-03 09:53) [18]

> http://www.podgoretsky.com/Redir.aspx?id=137&DownloadFile=~/ddp/bits.aspx

)))))))
это оттуда:
Для значения ИСТИНА, альтернативные варианты такие – ДА, ЕДИНИЦА, ВКЛЮЧЕНО, УСТАНОВШЕНО, ВЗВЕДЕНО, TRUE, T, 1, + и другие.
;)


 
Dennis I. Komarov ©   (2009-07-03 10:01) [19]


> Anatoly Podgoretsky ©   (03.07.09 09:45) [17]

:) Ладно, видно у Вас еще утро...
Я знаю что 1 and 2 = 0, а 1 and 3 = $1 и т.д. и т.п.


 
Anatoly Podgoretsky ©   (2009-07-03 10:25) [20]

> brother  (03.07.2009 09:53:18)  [18]

Истина и есть :-)


 
Anatoly Podgoretsky ©   (2009-07-03 10:26) [21]

> Dennis I. Komarov  (03.07.2009 10:01:19)  [19]

Какое утро - уже два часа пашу.


 
Dennis I. Komarov ©   (2009-07-03 10:29) [22]


> Anatoly Podgoretsky ©   (03.07.09 10:26) [21]

ну тогда не грех [5], [6], [7], [9], [10] еще раз перечитать...



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

Текущий архив: 2009.08.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
2-1246192670
Guest___
2009-06-28 16:37
2009.08.30
Сравнить значение Мемо с заданым


2-1246197040
@!!ex
2009-06-28 17:50
2009.08.30
TIdUDPServer обарбатывает сообщения только при выходе


2-1246696231
Gray
2009-07-04 12:30
2009.08.30
Ккак узнать номер выделенной строки в DBGrid?


15-1245995836
Ega23
2009-06-26 09:57
2009.08.30
Веб-дизайнеры есть?


2-1246017930
VoyagerEternal
2009-06-26 16:05
2009.08.30
Как продолжить выполнение программы после искл. ситуации(raise)?