请教--我的代码怎么找不到文件?(50分)

  • 主题发起人 主题发起人 悲酥清风
  • 开始时间 开始时间

悲酥清风

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了段代码查找子目录下的文件,可是返回的总是空。请大虾帮我看看。
代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
FavorPath: string
//save the path of Favorites folder
SubDir1: TStrings
//save the sub dir of Favorites folder
SearchRec: TSearchRec;
i: integer;
begin
SubDir1:= TStringList.Create;
Reg:= TRegistry.Create;
//SearchRec:= TSearchRec.Create;
{*********read the path of favorites folder*********}
with reg do
begin
RootKey:= HKEY_USERS;
if OpenKey('.DEFAULT/Software/Microsoft/Windows/CurrentVersion/Explorer/User Shell Folders',false) then
FavorPath:= ReadString('Favorites')+'/';
CloseKey;
Free;
end;
{*********find URL files in favorites folder*********}
//first find all files in favorites folder
if (FindFirst(FavorPath+'*.url',faAnyFile,SearchRec)= 0) then
begin
Memo1.Lines.Add(SearchRec.Name);
while FindNext(SearchRec)= 0 do
Memo1.Lines.Add(SearchRec.Name);
end;
//then find all subdir in favirites folder
if (FindFirst(FavorPath+'*.*',faDirectory,SearchRec)= 0) then
begin
SubDir1.Add(SearchRec.Name);
while FindNext(SearchRec)= 0 do
SubDir1.Add(SearchRec.Name);
end;
//find all file in all subdir
for i:= 0 to SubDir1.Count- 1 do
begin
if (FindFirst(FavorPath+SubDir1.Strings+'/*.url',faAnyFile,SearchRec)= 0) then
begin
Memo1.Lines.Add(SearchRec.Name);
while FindNext(SearchRec)= 0 do
Memo1.Lines.Add(SearchRec.Name);
end;
end;
FindClose(SearchRec);
if (Memo1.Lines.Count= 0) then
MessageBox(Handle,'Sorry!'+#13+'You favorites folder have no files.','Warning!',mb_ok);
SubDir1.Free;
end;
 
为什么每次运行结果都是显示那个MessageBox?
 
在偶的WIN2000下取出来的路径是:%USERPROFILE%/Templates
这样的路径DELPHI是不认识的。
需要进一步取环境变量中的USERPROFILE值。
测试到此偶就累啦。
 
谢谢!
我在win98下取到的是好像是c:/windows/favorites,我再试试。
 
试过了,在Win98下返回的是c:/windows/favorites
 
为什么没有回答?我可以再加50分。
 
这个目录是一个系统的虚拟目录,类似的还有%Widnows%下的History等目录,
它们的图标一看就与众不同,而且在Msdos下不能列出。要想使用这些目录中
的文件,就去研究一下Win32API吧,估计没有别的办法(或者你可以试试
找些构件)!
 
果然在MSDOS下看不到。

剩余的分到http://www.delphibbs.com/delphibbs/DispQ.asp?LID=312658来拿。
 
多人接受答案了。
 
后退
顶部