Главная страница
    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-40464
ded_mazai
2003-10-02 16:22
2003.10.13
TTreeView


14-40602
AlexRush
2003-09-25 09:26
2003.10.13
Мужики !!!! СРОЧНО ОЧЕНЬ НУЖНО! Словарь *русских* слов !!!!


4-40745
Ghost
2003-08-05 11:14
2003.10.13
Возможно ли встроить окно чужого приложения в своё ?


14-40616
Pindos
2003-09-24 20:59
2003.10.13
(Сотовые телефоны)Набор мелодий в ручную


3-40316
Илайдж
2003-09-22 09:56
2003.10.13
2k: backup





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