Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Вниз

Копирование файлов с помощью API   Найти похожие ветки 

 
Artem20000   (2002-01-31 19:54) [0]

Привет всем!!!
Вопрос. Я сначала фильтруюю файлы с помощью findfirst findnext а затем переписываю их в другую папку по заданной дате, копирую с помощью winAPI. Так вот копируются не все файлы а только один. Выдает сообщение, "Не могу найти файл, нажмите F5 чобы обновить"
В чем ДЕЛО?


 
Tosov   (2002-01-31 21:11) [1]

Код покажи


 
Artem20000   (2002-02-07 00:23) [2]

Вот код
pathe:=Label4.Caption+"\"+FilterComboBox1.Mask; {Путь к файлам в каталоге }
pathe_copy:=Label4.Caption+"\";
StatusBar1.SimpleText:=pathe_copy; {строка состояния}
{---------------Поиск в каталоге--------------}
FindRes:=FindFirst(pathe, faAnyFile, Info); {Фильтрую...}
while (FindRes=0) do
begin
if (FileDateToDateTime(Info.Time)>=DateTimePicker1.Date)and(FileDateToDateTime(Info.Time)<=DateTimePicker2.Date)then
begin
pathe_copy:=pathe_copy+Info.Name; st:=st+"\"+Info.Name;
WindowsCopyFile(pathe_copy,st);
{ CopyFile(StrPCopy(x,pathe_copy),StrPCopy(y,st),long);}
{-----------------------------}
StatusBar2.SimpleText:=st+"\"+Info.Name;
StatusBar1.SimpleText:=pathe;
{-----------------------------}
FindRes:=FindNext(Info);
Continue;
end
else begin FindRes:=FindNext(Info); Continue; end;
end;
FindClose(Info);
end;

{---------Функция копирования файлов---API-----}
function WindowsCopyFile(FromFile,ToDir : string): boolean;
var F: TShFileOpStruct;
begin
F.Wnd:=0;
F.wFunc:= FO_COPY;
FromFile:=FromFile+#0;
F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0;
F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result:=ShFileOperation(F)=0;
end;


 
AlexRush   (2002-02-07 12:34) [3]

Оригинально та с файлом работаешь...
Я твой алгоритм разбирать не хочу, могу только сказать, что ты не те функции юзаешь.
Лови готовыю процедуру:

procedure CopyToMyDir(PathFrom, // Директория "откуда"
Mask, // Маска файлов
PathTo // Директория "куда"
:string);
VAR
wfd:WIN32_FIND_DATA;
hFile:DWORD;
count:DWORD; // количество наиденных файлов
flag:boolean;
ErrorMsg:array[0..MAX_PATH]of Char;// буфер сообщение об ошибке
BEGIN
if (PathFrom[Length(PathFrom)]<>"\") //
then PathFrom:=PathFrom+"\"; // проверка на наличие "\" вконце
if (PathTo[Length(PathTo)]<>"\") // имени директорий
then PathTo:=PathTo+"\"; //
count:=0;
hFile:=FindFirstFile(PChar(PathFrom+Mask),wfd);
flag:= (hFile <> Windows.INVALID_HANDLE_VALUE);
while flag do
begin
count:=count+1;
{DEBUG ==========================================================}
{DEBUG Это потом снесешь }
{DEBUG}
{DEBUG} frmMain.memo_Rprt.Lines.Add("Копирую ""+PathFrom+string(wfd.cFileName)+"" в ""+PathTo+string(wfd.cFileName)+""");
{DEBUG}
{DEBUG}
{DEBUG ==========================================================}
if not CopyFile(PChar(PathFrom+string(wfd.cFileName)),
PChar(PathTo+string(wfd.cFileName)),
false)
then{}begin// если возвращает false, выводим сообщение об ошибке
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
nil,
GetLastError,
0,
@ErrorMsg[0],
MAX_PATH,
0);
MessageBox(0,
PChar("Не удалось копировать файл"+#13+
"""+PathFrom+string(wfd.cFileName)+"""+#13+
"в файл"+#13+
"""+PathTo+string(wfd.cFileName)+"""+#13+#13+
"Ошибка: "+string(ErrorMsg)),
PChar("Копирование"),
MB_ICONERROR);
end; {}
flag:=FindNextFile(hFile,wfd);
end;
Windows.FindClose(hFile);
END;



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

Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-22755
Glonia Zbanov
2002-03-27 10:44
2002.04.08
tag


1-22620
АААААА
2002-03-27 17:33
2002.04.08
Как загрузить иконку из файла *.ico?


1-22639
SeF
2002-03-27 02:34
2002.04.08
Tresourcestream


3-22597
Shurasik
2002-03-18 13:42
2002.04.08
Не могу найти событие для DBGrid...


1-22614
Ig
2002-03-17 22:16
2002.04.08
Нужен многострочный DBGrid в стиле 1С





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