if FindFirst(GetPath(Parent) + '\*.*', faAnyFile, F) = 0 then
    begin
      repeat
        if (F.Name <> '.') and (F.Name <> '..') then
          continue;//此句会被编译器屏蔽,搞得我整个D盘数据都被删了!
      until FindNext(F) <> 0;
      FindClose(F);

解决方案 »

  1.   

    //下面的代码也许对你有帮助
    procedure TMainForm.FindFiles(APath: String);
    var
      FSearchRec,
      DSearchRec: TSearchRec;
      FindResult: integer;
    //  fData:WIN32_FIND_DATA;
      function IsDirNotation(ADirName: String): Boolean;
      begin
        Result := (ADirName = '.') or (ADirName = '..');
      end;begin
      APath := GetDirectoryName(APath);
      FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+
                              faSysFile+faReadOnly,FSearchRec);
      try
        while FindResult = 0 do
        begin
          ExtractFileExt(StrPas(FSearchRec.FindData.cFileName));
          lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name));
          FindInfoInfiles(APath+FSearchRec.Name,edtFileInfo.Text);
          FindResult := FindNext(FSearchRec);
        end;    FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec);
        while FindResult = 0 do
        begin
          if ((DSearchRec.Attr and faDirectory) = faDirectory)
             and not IsDirNotation(DSearchRec.Name) then
          begin
            FindFiles(APath+DSearchRec.Name); // Recursion here
          end;
          FindResult := FindNext(DSearchRec);
        end;
      finally
        FindClose(FSearchRec);
      end;
    end;