求助,请各位大哥写个函数请教:
假设有文件:c;\ff\aa.db;
c;\ff\bb.db;
c;\ff\cc.db;
c;\ff\dd.db;
c:\ff\aa.xls;
c:\ff\ss.ims;
我的要求是:以  c;\ff  为参数
找出 ff 目录下 所有以 bd 结尾的文件得到
aa.db;
bb.db;
cc.db;
dd.db;然后把
aa.db;
bb.db;
cc.db;
dd.db;
放到 combobox1 的 Items  里
请教各位大哥这种功能怎么实现啊?
谢谢 各位大哥!

解决方案 »

  1.   

    楼主要不先看看这个例子吧,可能会对你有所启发:
    -----------
    刪除一個文件夾下面所有的子文件夾和所有的文件??急
    以下是你的问题解:
    uses FileCtrl;procedure DelTree(const Directory: TFileName);
    var
    DrivesPathsBuff: array[0..1024] of char;
    DrivesPaths: string;
    len: longword;
    ShortPath: array[0..MAX_PATH] of char;
    dir: TFileName;
    procedure rDelTree(const Directory: TFileName);
    var
    SearchRec: TSearchRec;
    Attributes: LongWord;
    ShortName, FullName: TFileName;
    pname: pchar;
    begin
    if FindFirst(Directory + '*', faAnyFile and not faVolumeID,
    SearchRec) = 0 then begin
    try
    repeat // 检测所有的文件和目录
    if SearchRec.FindData.cAlternateFileName[0] = #0 then
    ShortName := SearchRec.Name
    else
    ShortName := SearchRec.FindData.cAlternateFileName;
    FullName := Directory + ShortName;
    if (SearchRec.Attr and faDirectory) <> 0 then begin
    // 是一个目录
    if (ShortName <> '.') and (ShortName <> '..') then
    rDelTree(FullName + '\');
    end else begin
    // 是一个文件
    pname := PChar(FullName);
    Attributes := GetFileAttributes(pname);
    if Attributes = $FFFFFFFF then
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    if (Attributes and FILE_ATTRIBUTE_READONLY) <> 0 then
    SetFileAttributes(pname, Attributes and not
    FILE_ATTRIBUTE_READONLY);
    if Windows.DeleteFile(pname) = False then
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    end;
    until FindNext(SearchRec) <> 0;
    except
    FindClose(SearchRec);
    raise;
    end;
    FindClose(SearchRec);
    end;
    if Pos(#0 + Directory + #0, DrivesPaths) = 0 then begin
    // 如果不是根目录,就删除
    pname := PChar(Directory);
    Attributes := GetFileAttributes(pname);
    if Attributes = $FFFFFFFF then
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    if (Attributes and FILE_ATTRIBUTE_READONLY) <> 0 then
    SetFileAttributes(pname, Attributes and not
    FILE_ATTRIBUTE_READONLY);
    if Windows.RemoveDirectory(pname) = False then begin
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    end;
    end;
    end;
    // ----------------
    begin
    DrivesPathsBuff[0] := #0;
    len := GetLogicalDriveStrings(1022, @DrivesPathsBuff[1]);
    if len = 0 then
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    SetString(DrivesPaths, DrivesPathsBuff, len + 1);
    DrivesPaths := Uppercase(DrivesPaths);
    len := GetShortPathName(PChar(Directory), ShortPath, MAX_PATH);
    if len = 0 then
    raise EInOutError.Create(SysErrorMessage(GetLastError));
    SetString(dir, ShortPath, len);
    dir := Uppercase(dir);
    rDelTree(IncludeTrailingBackslash(dir));
    end;
    Sample calls
    ------------删除 C:\TEMP\A123 目录
    DelTree('C:\TEMP\A123');使用方法:DelTree('A:'); // or DelTree('A:\');
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,strutils;type
      TForm1 = class(TForm)
        Button1: TButton;
        ComboBox1: TComboBox;
        procedure Button1Click(Sender: TObject);
        procedure CreateDirTree(path: string);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      strtmp:string;
    implementation{$R *.dfm}
    procedure TForm1.CreateDirTree(path: string);
    var
      SR:TSearchRec;
      found:integer;
    begin
        found:=FindFirst(path+'*.*',faAnyFile,SR);
        while found=0 do
        begin
            strtmp:=LowerCase(sr.Name);
            if LeftStr(strtmp,3)='.db' then
            begin
                ComboBox1.Items.Add(path+sr.Name);
                CreateDirTree(path+SR.Name+'\');
            end;
          found:=FindNext(SR);
        end;
        FindClose(SR);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        CreateDirTree('C:\ff\');
    end;end.
      

  3.   

    感谢  FCU 大哥和  hellolongbin 大哥hellolongbin 大哥 ,我试了您的,可是不行哦~~hellolongbin 大哥,您再给我看看,好吗?谢谢
      

  4.   

    谢谢  FCU 大哥和  hellolongbin 大哥
    可以了!
      

  5.   

    自己看着办
    procedure TForm1.CreateDirTree(path: string);
    var
      SR:TSearchRec;
      found:integer;
      strtmp:string;
    begin
      ComboBox1.Items.Clear;
      found:=FindFirst(path+'*.*',faAnyFile,SR);
      while found=0 do
      begin
        strtmp:=LowerCase(SR.Name);
        if Pos('.doc',strtmp)>0 then
        begin
            ComboBox1.Items.Add(SR.Name);
            //CreateDirTree(path+SR.Name);
        end;
        found:=FindNext(SR);
      end;
      FindClose(SR);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreateDirTree('C:\Documents and Settings\administrator\My Documents\xielaixiang\');
    end;
      

  6.   

    谢谢  xielaixiangjx 大哥
    因为在揭贴时,没有看到大哥的留言
    实在抱歉!