當前位置:首頁 » 文件管理 » 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;

熱點內容
如何申請i7伺服器地址 發布:2025-01-23 04:42:15 瀏覽:845
瀏覽器內核源碼 發布:2025-01-23 04:41:34 瀏覽:659
精英版繽智少了些什麼配置 發布:2025-01-23 04:41:30 瀏覽:356
編寫c編譯器 發布:2025-01-23 04:41:30 瀏覽:968
可以解壓war包的編譯軟體 發布:2025-01-23 04:38:28 瀏覽:986
vivo手機有編譯功能嗎 發布:2025-01-23 04:31:57 瀏覽:568
自己架設雲手機伺服器 發布:2025-01-23 04:31:17 瀏覽:949
gcc命令行編譯的方法 發布:2025-01-23 04:30:31 瀏覽:397
我的雲伺服器地址近期價格 發布:2025-01-23 04:29:05 瀏覽:625
js預覽上傳圖片 發布:2025-01-23 04:28:54 瀏覽:407