![]() |
![]() |
Elitte 01.08.2004 - 09:13 |
uses ShellApi; procedure TForm1.Button1Click(Sender: TObject); var OpStruc: TSHFileOpStruct; frombuf, tobuf: array [0..128] of Char; begin FillChar( frombuf, Sizeof(frombuf), 0 ); FillChar( tobuf, Sizeof(tobuf), 0 ); StrPCopy( frombuf, 'h:\\hook\\*.*' ); StrPCopy( tobuf, 'd:\\temp\\brief' ); with OpStruc do begin Wnd:= Handle; wFunc:= FO_COPY; pFrom:= @frombuf; pTo:=@tobuf; fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted:= False; hNameMappings:= Nil; lpszProgressTitle:= Nil; end; ShFileOperation( OpStruc ); end; Код работает прекрасно, но при этом копируется содержимое папки в другую а в моей программе есть 2 MEMO компонента, в первом я добавляю пути, откуда скопировать,(записей может быть 10 например) а во второй, куда писать, и что же надо изменить в этом коде, чтобы он брал пути откуда писать с МЕМО 1, и писал в пути, прописанные в МЕМО 2 ???????????? Заранее благодарен!!!! |
VaS 1 - 01.08.2004 - 16:58 |
В mFrom строки вида c:\1\*.*, в mTo - вида d:\2 . procedure CopyFolders(const FromFolders, ToFolder: string); var Op: TSHFileOpStruct; begin ZeroMemory(@Op, sizeof(Op)); with Op do begin wFunc := FO_COPY; pFrom := PChar(FromFolders); pTo := PChar(ToFolder); fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; end; ShFileOperation(Op); end; . var I: Integer; FromNames: string; begin mFrom.Lines.Delimiter := #0; FromNames := mFrom.Lines.DelimitedText + #0#0; for I := 0 to mFrom.Lines.Count - 1 do CopyFolders(FromNames, mTo.Lines[I]); end; |
Elitte 2 - 02.08.2004 - 06:36 |
Спасибо!!! код компилится, но не работает, ссылается на адресс какой то, ошибка в исполнении ЕХЕ файла а сам код я не могу понять, я только понял что мFROm Это типа мемо 1, а Mto это мемо 2 |
VaS 3 - 02.08.2004 - 09:18 |
Цикл for исправь вот так: . for I := 0 to mTo.Lines.Count - 1 do CopyFolders(FromNames, mTo.Lines[I]); . Сорри. |
Elitte 4 - 02.08.2004 - 10:20 |
Спасибо VaS за помощь но он опять выдает то же самое сообщение вот собственно как выглядит код, можт че не так? //Это я так понял после Implementation идет реализация процедуры procedure CopyFolders(const FromFolders, ToFolder: string); var Op: TSHFileOpStruct; begin ZeroMemory(@Op, sizeof(Op)); with Op do begin wFunc := FO_COPY; pFrom := PChar(FromFolders); pTo := PChar(ToFolder); fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; end; ShFileOperation(Op); end; //Здесь реализация процедуры заканчивается, потом в обработчике нажатия на батон : Procedure TForm1.Button1Click(Sender:TObject); var Memo1, Memo2 : TMemo; //Первый - откуда, второй - куда I: Integer; FromNames: string; begin memo1.Lines.Delimiter := #0; FromNames := memo1.Lines.DelimitedText + #0#0; for I := 0 to memo2.Lines.Count - 1 do CopyFolders(FromNames, memo2.Lines[I]); end; Не работает почемуто |
VaS 5 - 02.08.2004 - 10:57 |
:) Локальные переменные скрыли поля класса формы :) Надо их убрать. 1. Помещаешь на форму 2 TMemo. Имена их автоматически будут Memo1 и Memo2. 2. procedure TForm1.Button1Click(Sender:TObject); var I: Integer; FromNames: string; begin memo1.Lines.Delimiter := #0; FromNames := memo1.Lines.DelimitedText + #0#0; for I := 0 to memo2.Lines.Count - 1 do CopyFolders(FromNames, memo2.Lines[I]); end; |
Elitte 6 - 03.08.2004 - 07:06 |
VaS, Спасибо, ты помог, все работает!!! какую литературу ты читал??? хорошо разбираешься в программинге :-) |
VaS 7 - 03.08.2004 - 08:58 | Много чего читал :) Советую Тейксейра, Пачеко "Руководство разработчика Delphi6". Добавишь туда Тенцер "Delphi и технология COM" и Конопка "Разработка оригинальных компонент в Delphi". Это чисто по Делфи. |