当前位置:首页 » 文件管理 » delphi文件夹名

delphi文件夹名

发布时间: 2022-05-29 13:47:40

A. delphi里怎么把指定文件夹内的所有文件名输出出来

1、使用FindFirst函数和FindNext函数就可以查找出文件夹内所有的文件名,编写如下一个函数:

function searchfile(path:string):TStringList;
var SearchRec:TSearchRec;
found:integer;
list:TStringList;
begin
list:=TStringList.Create;
found:=FindFirst(path+'*.*',faAnyFile,SearchRec);
while found=0 do
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') and (SearchRec.Attr<>faDirectory)
then List.Add(SearchRec.Name);
found:=FindNext(SearchRec);
end;
FindClose(SearchRec);
searchfile:=list;
end;

2、使用searchfile(要查找的路径),就可以得到所有文件名,如下示例:

procere TForm1.btn1Click(Sender: TObject);
begin
mmo1.Lines.AddStrings(searchfile('G:BaiDu\_codeigimg'));
end;

效果如下:

B. delphi 获取根目录下的文件名及子目录下的文件名

findfirst,findnext,findclose....
搜索个例子给你:
procere
searchfileex(const
dir,
ext:
string;
files:
tstrings);
var
found:
tsearchrec;
i:
integer;
dirs:
tstrings;
finished:
integer;
stopsearch:
boolean;
begin
stopsearch
:=
false;
dirs
:=
tstringlist.create;
finished
:=
findfirst(dir
+
'*.*',
63,
found);
while
(finished
=
0)
and
not
(stopsearch)
do
begin
if
(found.name
<>
'.')
then
begin
if
(found.attr
and
fadirectory)
=
fadirectory
then
dirs.add(dir
+
found.name)
else
if
pos(uppercase(ext),
uppercase(found.name))
>
0
then
files.add(dir
+
found.name);
end;
finished
:=
findnext(found);
end;
findclose(found);
if
not
stopsearch
then
for
i
:=
0
to
dirs.count
-
1
do
searchfileex(dirs[i],
ext,
files);
dirs.free;
end;
3
procere
findsubdir(dirname:
string;
filestring:
tstrings);
var
searchrec:
tsearchrec;
begin
//找出所有下级子目录。
if
(findfirst(dirname
+
'*.*',
fadirectory,
searchrec)
=
0)
then
begin
if
isvaliddir(searchrec)
then
filestring.add(dirname
+
searchrec.name);
while
(findnext(searchrec)
=
0)
do
begin
if
isvaliddir(searchrec)
then
filestring.add(dirname
+
searchrec.name);
end;
end;
findclose(searchrec);
end;
function
isvaliddir(searchrec:
tsearchrec):
boolean;
begin
if
(searchrec.attr
=
16)
and
(searchrec.name
<>
'.')
and
(searchrec.name
<>
'..')
then
result
:=
true
else
result
:=
false;
end;

C. 很简单的,Delphi中得到一个文件的文件名(带路径),怎样获得纯粹的文件名(就

ExtractFileName可以解出带后缀的文件名,然后再用ChangeFileExt把后缀去掉,例如——ChangeFileExt(ExtractFileName(Application.ExeName),
'');

D. 怎么在delphi中给一个文件夹改名字,谢谢回答!

修改文件夹名称 Delphi syntax: function Rename(const Filename: WideString; const NewName: WideString): Integer; overload;

E. delphi获取指定路径下的exe文件名称

1.第一个 if 里 把 SearchRec.Name=".exe"去掉
2.SearchRec.Name指的就是文件和文件夹全名,你的文件夹里面根本没有全名为.exe的文件,当然没有结果
3.如果你想专门找EXE文件,应该在第一行的"*.*"改成"*.exe"

F. delphi如何获得指定路径文件的文件名

//delphi 获取文件所在路径
ExtractFileDrive :返回完整文件名中的驱动器,如"C:"
ExtractFilePath:返回完整文件名中的路径,最后带“/”,如"C:/test/"
ExtractFileDir:返回完整文件名中的路径,最后不带“/” ,如"C:/test"
ExtractFileName:返回完整文件名中的文件名称 (带扩展名),如"mytest.doc"
ExtractFileExt 返回完整文件名中的文件扩展名(带.),如".doc"

ExtractRelativePath : 返回相对路径,定义如下:
function ExtractRelativePath(const BaseName, DestName: string): string;
使用测试下如:
SysUtils.ExtractRelativePath('C:/test','C:/Test/TestRelativePath'):返回TestRelativePath
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath','C:/test'):返回'../TestRelativePath'
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath/','C:/test'):返回'../../TestRelativePath'
ExtractShortPathName :返回短文件名,即8+3,文件名长八位,扩展名为3号,为保持DOS系统兼容而存在

若想获取的文件名不带路径,可用:
ChangeFileExt(TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename,''); 函数将扩展名改掉即可。

G. delphi中如何遍历查找文件夹下的某文件名

procere EnumFileInQueue(path: PChar; fileExt: string; fileList: TStringList);

var

searchRec: TSearchRec;

found: Integer;

tmpStr: string;

curDir: string;

dirs: TQueue;

pszDir: PChar;

begin

dirs := TQueue.Create; //创建目录队列

dirs.Push(path); //将起始搜索路径入队

pszDir := dirs.Pop;

curDir := StrPas(pszDir); //出队

{开始遍历,直至队列为空(即没有目录需要遍历)}

while (True) do

begin

//加上搜索后缀,得到类似'c:\*.*' 、'c:\windows\*.*'的搜索路径

tmpStr := curDir + '\*.*';

//在当前目录查找第一个文件、子目录

found := FindFirst(tmpStr, faAnyFile, searchRec);

while found = 0 do //找到了一个文件或目录后

begin

//如果找到的是个目录

if (searchRec.Attr and faDirectory) <> 0 then

begin

{在搜索非根目录(C:\、D:\)下的子目录时会出现'.','..'的"虚拟目录"

大概是表示上层目录和下层目录吧。。。要过滤掉才可以}

if (searchRec.Name <> '.') and (searchRec.Name <> '..') then

begin

{由于查找到的子目录只有个目录名,所以要添上上层目录的路径

searchRec.Name = 'Windows';

tmpStr:='c:\Windows';

加个断点就一清二楚了

}

tmpStr := curDir + '\' + searchRec.Name;

{将搜索到的目录入队。让它先晾着。

因为TQueue里面的数据只能是指针,所以要把string转换为PChar

同时使用StrNew函数重新申请一个空间存入数据,否则会使已经进

入队列的指针指向不存在或不正确的数据(tmpStr是局部变量)。}

dirs.Push(StrNew(PChar(tmpStr)));

end;

end

else //如果找到的是个文件

begin

{Result记录着搜索到的文件数。可是我是用CreateThread创建线程

来调用函数的,不知道怎么得到这个返回值。。。我不想用全局变量}

//把找到的文件加到Memo控件

if fileExt = '.*' then

fileList.Add(curDir + '\' + searchRec.Name)

else

begin

if SameText(RightStr(curDir + '\' + searchRec.Name, Length(fileExt)), fileExt) then

fileList.Add(curDir + '\' + searchRec.Name);

end;

end;

//查找下一个文件或目录

found := FindNext(searchRec);

end;

{当前目录找到后,如果队列中没有数据,则表示全部找到了;

否则就是还有子目录未查找,取一个出来继续查找。}

if dirs.Count > 0 then

begin

pszDir := dirs.Pop;

curDir := StrPas(pszDir);

StrDispose(pszDir);

end

else

break;

end;

//释放资源

dirs.Free;

FindClose(searchRec);

end;

//调用

procere TForm1.Button1Click(Sender: TObject);

var

dir: string;

FileNameList: TStringList;

begin

dir := trim(Edit1.Text);

FileNameList := TStringList.Create;

//EnumFileInQueue(PChar(dir), '.*', FileNameList);

EnumFileInQueue(PChar(dir), '.*', FileNameList);

ShowMessage(IntToStr(FileNameList.Count));

FileNameList.Free;

end;

H. Delphi 按钮实现更改指定文件夹下的文件名

function ReNameFiles(): Boolean;
var
fn, txtfn, pdffn: string;
begin
{delphi 点一个按钮 实现 如果存在c:/abc/a 这个文件 将其更改为c:/abc/a.txt
如果不存在 则将c:/abc/a.txt 更改为c:/abc/a.pdf 如果修改成功提示 成功 修改失败提示 失败
怎么实现啊? 谢谢了}
Result := False;
fn := 'c:\abc\a';
txtfn := 'c:\abc\a.txt';
pdffn := 'c:\abc\a.pdf';
if FileExists(fn) then
begin
Result := RenameFile(fn, txtfn);
end
else begin
if FileExists(txtfn) then
begin
Result := RenameFile(txtfn, pdffn);
end;
end;
if Result then
ShowMessage('OK');
end;

I. delphi从文件夹中获取文件名

用FindFirst,FindNext,FindClose

procere SearchFileEx(const Dir, Ext: string; Files: TStrings);
var
Found: TSearchRec;
i: integer;
Dirs: TStrings;
Finished: integer;
StopSearch: Boolean;
begin
StopSearch := False;
Dirs := TStringList.Create;
Finished := FindFirst(Dir + '*.*', 63, Found);
while (Finished = 0) and not (StopSearch) do
begin
if (Found.Name <> '.') then
begin
if (Found.Attr and faDirectory) = faDirectory then
Dirs.Add(Dir + Found.Name)
else
if Pos(UpperCase(Ext), UpperCase(Found.Name)) > 0 then
Files.Add(Dir + Found.Name);
end;
Finished := FindNext(Found);
end;
FindClose(Found);
if not StopSearch then
for i := 0 to Dirs.Count - 1 do
SearchFileEx(Dirs[i], Ext, Files);
Dirs.Free;
end;
3
procere FindSubDir(DirName: string; FileString: TStrings);
var
searchRec: TsearchRec;
begin
//找出所有下级子目录。
if (FindFirst(DirName + '*.*', faDirectory, SearchRec) = 0) then
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
while (FindNext(SearchRec) = 0) do
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
end;
end;
FindClose(SearchRec);
end;

function IsValidDir(SearchRec: TSearchRec): Boolean;
begin
if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
Result := True
else
Result := False;
end

J. 怎么在delphi中实现搜索系统TXT文件并把文件名 文件路径显示在listview上

e是文件夹路径,Filetpye
是文件类型,Tstr是一个TStrings,用来记录搜索出来的所有文件路径。你需要做的就是调用这个函数,并把Tstr导入到listview中
procere
FindFile(FindFileName:string;
Filetpye
:
string
;Tstr:TStrings);
var
FSearchRec,
DSearchRec:
TSearchRec;
FindResult:
integer;
function
IsDirNotation(ADirName:
String):
Boolean;
begin
Result
:=
(ADirName
=
'.')
or
(ADirName
=
'..');
end;
begin
if
FindFileName[Length(FindFileName)]<>
'\'
then
FindFileName:=FindFileName+'\';
FindResult
:=
FindFirst(FindFileName+'*.*',
faDirectory,
DSearchRec);
//tstr.Add(FindFileName+fsearchrec.Name);
while
FindResult
=
0
do
begin
if
((DSearchRec.Attr
and
faDirectory)
=
faDirectory)
and
not
IsDirNotation(DSearchRec.Name)
then
begin
FindFile(FindFileName+DSearchRec.Name,Filetpye,Tstr);
//
tstr.Add(FindFileName+fsearchrec.Name);
end;
FindResult
:=
FindNext(DSearchRec);
end;
FindResult
:=
FindFirst(FindFileName+'*.*',faAnyFile+faHidden+
faSysFile,FSearchRec);
//
tstr.Add(FindFileName+fsearchrec.Name);
try
while
FindResult
=
0
do
begin
//ShowMessage(FindFileName+fsearchrec.Name);
if
Pos(Filetpye,FindFileName+fsearchrec.Name)>0
then
begin
tstr.Add(FindFileName+fsearchrec.Name);
end;
FindResult
:=
FindNext(FSearchRec);
end;
finally
FindClose(FSearchRec);
end;
Findclose(DSearchRec);
end;

热点内容
影视脚本创作 发布:2025-01-23 04:00:39 浏览:844
cmd脚本执行sql脚本 发布:2025-01-23 03:46:51 浏览:115
搭建100人的游戏服务器 发布:2025-01-23 03:37:43 浏览:517
b站台解析服务器ip 发布:2025-01-23 03:36:12 浏览:203
安卓手机在哪里看港剧 发布:2025-01-23 03:35:30 浏览:52
黑漫的服务器ip 发布:2025-01-23 03:16:40 浏览:651
tplink无internet访问 发布:2025-01-23 03:15:18 浏览:567
原神用安卓手机玩为什么画质那么低 发布:2025-01-23 03:09:31 浏览:848
空调压缩机是外机吗 发布:2025-01-23 03:09:31 浏览:951
大学数据库学 发布:2025-01-23 02:54:30 浏览:589