Главная страница
    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.49 MB
Время: 0.005 c
15-1246540232
Гость
2009-07-02 17:10
2009.08.30
Посоветуйте локальный чат для конторы


15-1246342790
Холивар
2009-06-30 10:19
2009.08.30
Библиотеки DirectX


15-1246260569
d@nger
2009-06-29 11:29
2009.08.30
Хост принудительно разрывает соединение....


15-1246212338
vuk
2009-06-28 22:05
2009.08.30
Москва. Печать на цветном лазернике. Где?


2-1246554868
Michael
2009-07-02 21:14
2009.08.30
Порядок вызова в прототипах функций





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