Главная страница
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.47 MB
Время: 0.019 c
14-40675
Владислав
2003-09-18 12:57
2003.10.13
Нужна информация по СУБД.


4-40721
Onyx
2003-08-08 12:14
2003.10.13
КОНТЕКСТНОЕ МЕНЮ в контекстном меню!!!


14-40672
sad
2003-09-19 08:14
2003.10.13
Поэзия Delirium.Tremes


3-40291
Buka
2003-09-21 10:25
2003.10.13
Приведение в работоспособность библиотечного компонента


3-40317
Flash
2003-09-22 09:51
2003.10.13
Проблема с доступом к БД из разных потоков