Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CopyFiles отключить контроль ошибок [D7, XP]


Страницы:   1 2

belmol ©   (2009-07-02 11:50:00) 

есть код
 {$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}
но что то ни то ни то не отключает контроль ошибок.


Dennis I. Komarov   (2009-07-03 10:29:00) [1]


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

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


Anatoly Podgoretsky   (2009-07-03 10:26:00) [2]

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

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


Anatoly Podgoretsky   (2009-07-03 10:25:00) [3]

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

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


Dennis I. Komarov   (2009-07-03 10:01:00) [4]


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

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


brother   (2009-07-03 09:53:00) [5]

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

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


Anatoly Podgoretsky   (2009-07-03 09:45:00) [6]

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


Dennis I. Komarov   (2009-07-03 09:28:00) [7]


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

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


Anatoly Podgoretsky   (2009-07-03 08:54:00) [8]

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

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


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

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

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


Dennis I. Komarov   (2009-07-02 18:24:00) [10]


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

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


Anatoly Podgoretsky   (2009-07-02 13:31:00) [11]

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

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


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

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

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

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


Dennis I. Komarov   (2009-07-02 12:56:00) [13]


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

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


clickmaker   (2009-07-02 12:54:00) [14]

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

FOF_NOERRORUI


Anatoly Podgoretsky   (2009-07-02 12:52:00) [15]


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

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


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

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

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


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

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


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

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

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


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


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


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


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

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


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


> belmol


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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо