如何使用文件夹中的.DBF文件名填充TListBox?

时间:2014-08-14 09:40:57

标签: delphi delphi-xe

我想用文件夹中的.DBF文件的名称填充此ListBox。

例如:我的文件夹C:/Kassendaten包含IArtikel.dbfIBediener.dbf,等等

我需要这个让用户选择一个dbf文件。

我是Delphi的新手,不知道我是怎么做的。

5 个答案:

答案 0 :(得分:5)

试试这个:

procedure FillFiles(Strings: TStrings; const strDirectory, strExtension: string);
var
  sr: TSearchRec;
begin
  if FindFirst(strDirectory + '\*.' + strExtension, faAnyFile, sr) = 0 then
    try
      Strings.BeginUpdate;
      try
        Strings.Clear;
        repeat
          Strings.Add(sr.Name);
        until FindNext(sr) <> 0;
      finally
        Strings.EndUpdate;
      end;
    finally
      FindClose(sr);
    end;
end;

procedure TForm1.btnTestClick(Sender: TObject);
begin
  FillFiles(lstFiles.Items, 'C:\', 'dbf');
end;

答案 1 :(得分:4)

使用IOUtils单元中可用的功能以及Types单元中声明的阵列。将这两个单元添加到implementation用户子句中,然后这样的操作应该起作用:

var
  aFiles: TStringDynArray;
  sFile: String;
begin
  aFiles := TDirectory.GetFiles('C:\Kassendaten', '*.dbf');
  ListBox1.Items.BeginUpdate;
  try
    for sFile in aFiles do
      ListBox1.Items.Add(sFile);
  finally
    ListBox1.Items.EndUpdate;
  end;
end;

答案 2 :(得分:3)

单元IOUTILS.pas有一个类TDirectory,其方法是在字符串数组中获取目录列表。 TListbox有一个属性Items,表示列表框中行的字符串。

那应该对你有帮助。

答案 3 :(得分:1)

这是一个通用函数GetFileNames,我总是将其用于类似的任务:

//Returns a list of all the filenames matching the searchpath criteria.
//Note: Free the returned TStringList when finished with it.
function GetFileNames(const SearchPath : String): TStringList;
var
  SearchRec:TSearchRec;
  Path: string;
begin
  result := TStringList.Create;
  try
    // Extract directory path
    path := ExtractFilePath(SearchPath);

    if not DirectoryExists(Path) then exit;

    // Find files
    if FindFirst(SearchPath,faAnyFile,SearchRec) = 0 then
      try
        repeat
          result.Add(Path+SearchRec.Name);
        until FindNext(SearchRec) <> 0;
      finally
        FindClose(SearchRec);
      end;
  except
    result.Free;
    raise;
  end;
end;

如何使用

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := 'C:\MyFavoriteDir\*.dpr'
end;

procedure TForm1.Button1Click(Sender: TObject);
var 
  FileNames : TStrings;
begin
  FileNames := GetFileNames(Edit1.Text);
  try
    ListBox1.items.Assign(FileNames);
  finally
    FreeAndNil(FileNames);
  end;
end; 

答案 4 :(得分:1)

试试这个:

{code}
    var s: string;
    begin
      s := 'c:\windows\*.bmp'#0;
      ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@s[1]));
    end;
{code