如何将目录里面的支持文件(*.rm,*.ram.*.mp3,*.ram)的文件在listbox里面显示??(全部家产:100分!!!)(100分)

  • 主题发起人 主题发起人 suyude
  • 开始时间 开始时间
S

suyude

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序界面如图:

http://www.yd123.com/cncg/playlist.jpg

代码如下:
unit Unit1;

interface

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

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


var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:string;
begin

SelectDirectory('浏览目录','',i);
end;

end.


请问大侠我应该如何加代码才能达到我的目的呀??谢谢!!!
 
不是专门有列文件的组件么!filelistbox巴!好像是这个,你找找看
 
参考这个
procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin

StringGrid1.RowCount := 1;
if CheckBox1.Checked then

FileAttrs := faReadOnly
else

FileAttrs := 0;
if CheckBox2.Checked then

FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then

FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then

FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then


FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then

FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then


FileAttrs := FileAttrs + faAnyFile;

with StringGrid1do

begin

RowCount := 0;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then


begin

repeat
if (sr.Attr and FileAttrs) = sr.Attr then

begin

RowCount := RowCount + 1;
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;

until FindNext(sr) <> 0;
FindClose(sr);
end;

end;

end;
 
我在做一个播放器的时候曾做过,
现在一十说不太清.
好像是用FindFirst与FindNext来做,
你可以看一下Delphi的再线帮助,
应该能搞定.
 
Filelist最方便
 
TO lbl20020123
能否提供以下你做的播放器的代码给我看看呀~~谢谢!!
 
TO wangxd
哪里有Filelist呀?
 
To tseug

你的代码是什么东西呀??
 
我猜是这样吧:
将以下代码插入到 procedure TForm1.Button1Click(Sender: TObject);
这一行前面

function ListFiles(Path, Param: string;
List: TStringList): Integer;
var
FindData: TWin32FindData;
FindHandle: THandle;
FileName: string;
AddToList: Boolean;
begin

Result := 0;
AddToList := Assigned(List);

if Path[Length(Path)] <> '/' then

Path := Path + '/';

Path := Path + Param;

FindHandle := Windows.FindFirstFile(PChar(Path), FindData);
while FindHandle <> INVALID_HANDLE_VALUEdo

begin

FileName := StrPas(FindData.cFileName);
if (FileName <> '.') and (FileName <> '..') and
((FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0) then

begin

Inc(Result);
if AddToList then

List.Add(FileName);
end;


if not Windows.FindNextFile(FindHandle, FindData) then

FindHandle := INVALID_HANDLE_VALUE;
end;

Windows.FindClose(FindHandle);
end;


修改按钮单击事件:
procedure TForm1.Button1Click(Sender: TObject);
var
i:string;
s: TStringList;
begin

SelectDirectory('浏览目录','',i);
s := TStringList.Create;
ListFiles(i, '*.rm', s);
ListFiles(i, '*.ram', s);
ListFiles(i, '*.mp3', s);
ListBox1.Items.AddStrings(s);
s.Free;
end;

 
修改
>procedure TForm1.Button1Click(Sender: TObject);
>var
> i:string;
>begin

>SelectDirectory('浏览目录','',i);
>end;


procedure TForm1.Button1Click(Sender: TObject);
var
Path: String;
function IsValidType(SearchRec:TSearchRec):Boolean;
var
Ext: String;
begin

Ext := ExtractFileExt(SearchRec.Name);
Result:= (Ext = '.mp3') or (Ext = '.rm');
end;

begin

SelectDirectory('浏览目录','',Path);
if (FindFirst(Format('%s/*.*',[Path]), faAnyFile, SearchRec) = 0) then

begin

ListBox1.clear;
repeat
if IsValidType(SearchRec) then
ListBox1.Items.Add(Format('%s/%s',[Path,SearchRec.Name]));
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;

end;
 
//自定义查找函数
procedure tform1.FIND(
//路径;
path:string;
//文件类型;
atype:tstrings;
//是否包含子目录;
includ:bool);
var SearchRec: TSearchRec;
OLDDIR:STRING;
i: integer;
begin

//检测路径是否正确
if DirectoryExists(path) then

begin

//进入该目录,查找其中的子目录和文件
oldDir := GetCurrentDir;
ChDir(path);
//检测目录中所有类型文件
FindFirst('*.*', faAnyFile, SearchRec);
repeat
//如果是目录并且不是.和..,还有查找包含子目录则递归调用find
if(SearchRec.Attr and faDirectory > 0)and includ then

begin

if(SearchRec.Name[1]<>'.') then

FIND(SearchRec.Name,atype,includ);
end
//如果是文件则检测后缀
else

{------------如果属于查找类型则加入listbox------------}
with atypedo

for i:=0 to count-1do

begin

if ExtractFileExt(SearchRec.Name)=strings then

ListBox1.Items.Add(SearchRec.Name);
end;

{-----------------------------------------------------}
//继续查找,直到最后
until (FindNext(SearchRec)<>0)
//跳出上一层
SetCurrentDir(oldDir);
end
else
//路径错误就fuck!;
showmessage('****!something is 错误!');
end
将以下改为:
//procedure TForm1.Button1Click(Sender: TObject);
//var
// i:string;
//begin

//SelectDirectory('浏览目录','',i);
//end;


procedure TForm1.Button1Click(Sender: TObject);
var
i:string;
aa:tstrings;
rr:bool;//这个为是否查找子目录的标志
begin

aa:=tstringlist.Create;
//这里你可以任意添加你想查找文件的类型
aa.add('.rm');
aa.add('.ram');
aa.add('.mp3');
//...
rr := True;
if SelectDirectory('浏览目录','',i) then

begin

if i[Length(i)]<>'/' then

i := i + '/';
Find(i,aa,rr);
end;

end;





 
To beta 兄
你的运行成功,但当在浏览目录的时候,如故点取消就出错!还有就是不能查找字目录的文件!
请问应该如何修改~~

谢谢!
 
TO Luky.QQ &amp;
lfpsoft 兄!
你们的代码我运行不到~~能否把正个程序的代码都贴出来呀!

因为我是新生,刚学delphi不到一个星期~~:)

新年快乐!
 
你的油箱?我发给你一个正确的工程好了。
 
谢谢 花儿 兄!

MY E-mail: xh_cncg@21cn.com
 
花儿兄!我还没收到你的e-mail呀!!!
 
后退
顶部