Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Поиск файлов с копированием


Автор: Busik 9.11.2006, 01:52
Господа программисты  ! Помогите решить проблему!
Как на Delphi одним кликом бутона осуществить программный поиск всех файлов *.JPEG
скажем на всём диске C:\ ,и копировать эти файлы в заданную папку.
Особо буду признателен за пример .

Автор: Quadr0 9.11.2006, 01:56
...

Автор: Cashey 9.11.2006, 08:50
http://forum.vingrad.ru/act-Search/CODE/show/searchid-ef06b4d921928f5bd7216ca44c2040e2/search_in-posts/result_type/topics/flag/search/highlite/scandir/index.html на выбор

Автор: Busik 9.11.2006, 13:53
С поиском всё ясно как день ,но как согласно списку в Memo скопировать эти файлы.
Нашол такую функцию,у кого она работает?Вот листинг.
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellAPI, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function CopyFiles( Handle : Hwnd; Src : array of string; Dest : string; 
Move : Boolean; AutoRename : Boolean ) : Integer; 
var
  SHFileOpStruct : TSHFileOpStruct; 
  SrcBuf : TBuffer;
begin 
  CreateBuffer( Src, SrcBuf ); 
  with SHFileOpStruct do 
    begin 
      Wnd := Handle; 
      wFunc := FO_COPY; 
      if Move then wFunc := FO_MOVE; 
      pFrom := Pointer( SrcBuf ); 
      pTo := PChar( Dest ); 
      fFlags := 0; 
      if AutoRename then fFlags := FOF_RENAMEONCOLLISION; 
      fAnyOperationsAborted := False; 
      hNameMappings := nil; 
      lpszProgressTitle := nil; 
    end; 
  Result := SHFileOperation( SHFileOpStruct ); 
  SrcBuf := nil; 
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFiles( Handle, [ 'C:\Test1', 'C:\Test2' ], 'C:\Temp', True, True );
end; 

end.

Автор: Busik 9.11.2006, 14:22
У меня на Delphi 6 при компиляции две ошибки,подскажите как исправить.

[Error] Unit1.pas(29): Undeclared identifier: 'TBuffer'
[Error] Unit1.pas(31): Undeclared identifier: 'CreateBuffer'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Автор: Sunvas 9.11.2006, 20:52
Цитата(Busik @  9.11.2006,  14:22 Найти цитируемый пост)
[Error] Unit1.pas(29): Undeclared identifier: 'TBuffer'
[Error] Unit1.pas(31): Undeclared identifier: 'CreateBuffer'

Код

type TBuffer = array of Char; 


procedure CreateBuffer( Names : array of string; var P : TBuffer ); 
var I, J, L : Integer; 
begin 
  for I := Low( Names ) to High( Names ) do 
    begin 
      L := Length( P ); 
      SetLength( P, L + Length( Names[ I ] ) + 1 ); 
      for J := 0 to Length( Names[ I ] ) - 1 do 
        P[ L + J ] := Names[ I, J + 1 ]; 
      P[ L + J ] := #0; 
    end; 
  SetLength( P, Length( P ) + 1 ); 
  P[ Length( P ) ] := #0; 
end; 

Автор: Busik 9.11.2006, 21:25
Спасибо, всё работает !!!
Я всегда знал что виноград самый лучший forum. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)