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

Вниз

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

 
Miwa   (2003-09-27 18:42) [0]

Если пробую скопировать файл или группу файлов с помощью SHFileOperation или CopyFileEx то на некоторых файлах получаю сабж. Беда в том, что я не могу вычислить, почему возникает ошибка: как на маленьких, так и на больших файлах; как на локальной, так и на сетевой машинах. Правда, если уж она возникает данном файле, то постоянно. А еще иногда копируется не весь файл, а его часть (если большой), или - если файл маленький - копируется полностью (выдавая при этом ошибку), но не всегда потом открывается.
А иногда все нормально - скопировалось успешно и все ОК.
Код примерно такой:

try
with sh do begin
Wnd:=Handle;
wFunc:=FO_COPY;
pFrom:=strt;
pTo:=dest;
fFlags:=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
end;
if SHFileOperation(sh)=0 then
{дальше при необходимости имя скопированного файла записывается в лог};
finally
listbox1.items.add(SysErrorMessage(GetLastError));
Refresh;
end;


 
miwa   (2003-10-01 01:36) [1]

Вопросс все же остается в силе.


 
pasha   (2003-10-01 01:47) [2]

Попробуй вот етот мной собственно-ручно разработаный код по копированию как папок так и отдельных файлов:


procedure CopyDirectoryTree(AHandle: THandle; const AFromDirectory, AToDirectory: String);
var
SHFileOpStruct: TSHFileOpStruct;
FromDir: PChar;
ToDir: PChar;
begin

GetMem(FromDir, Length(AFromDirectory)+2);
try
GetMem(ToDir, Length(AToDirectory)+2);
try

FillChar(FromDir^, Length(AFromDirectory)+2, 0);
FillChar(ToDir^, Length(AToDirectory)+2, 0);

StrCopy(FromDir, PChar(AFromDirectory));
StrCopy(ToDir, PChar(AToDirectory));

with SHFileOpStruct do
begin
Wnd := AHandle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := FromDir;
pTo := ToDir;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
if SHFileOperation(SHFileOpStruct) <> 0 then
RaiseLastWin32Error;
end;
finally
FreeMem(ToDir, Length(AToDirectory)+2);
end;
finally
FreeMem(FromDir, Length(AFromDirectory)+2);
end;
end;



 
miwa   (2003-10-01 05:19) [3]

Блин, вот дурак! Я же память не выделял! От того и произвольные ошибки при попытке чего-то оттуда получить. Странно, что вообще хоть иногда что-то работало...


> pasha © (01.10.03 01:47) [2]

Спасибо.



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

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

Наверх




Память: 0.44 MB
Время: 0.008 c
1-40489
Sectey
2003-10-01 17:01
2003.10.13
Система автоматического обнавления программы.


3-40272
Aleksey V.P.
2003-09-22 10:34
2003.10.13
Null значения в поля таблицы


14-40584
s705
2003-09-22 14:25
2003.10.13
Помогите найти инфу по 8-му протоколу ICQ.


4-40730
Onyx
2003-08-08 13:08
2003.10.13
КОНТЕКСТНОЕ МЕНЮ!!!


1-40429
Tumcoat
2003-10-03 04:14
2003.10.13
Как сделать прокрутку формы колесиком?





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