delphi 在用了SelectDirectory函数操作文件夹以后如何删除被选中的文件夹?

由于用了SelectDirectory函数在选择浏览的文件夹时貌似将文件夹给锁住进行了写保护,所以本来可以讲文件夹删除的函数无法将文件夹删除,看了SelectDirect... 由于用了SelectDirectory函数在选择浏览的文件夹时貌似将文件夹给锁住进行了写保护,所以本来可以讲文件夹删除的函数无法将文件夹删除,看了SelectDirectory函数的代码,但是才疏学浅,无法理解是如何锁的,哪位大能能解答一下,什么方法可以解锁文件夹并成功删除?
var
sdir:string;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
if SelectDirectory(选择目录','d:\后期处理文件夹',sDIR) then begin
pathstr.Caption:=sdir;
filelist:=tstringlist.Create;
makelist(filelist,sdir);
page.Caption:='共'+inttostr(filelist.Count)+'张底片';
button3.Enabled:=true;
end;
except
showmessage('文件检索失败');
end;

procedure tform1.Makelist(var ss:tstringlist;const filepath: string);
var
Sr : TSearchRec;
Err : integer;
begin
ss.Clear;
Err:=FindFirst(filepath+'\*.*', $11, Sr) ;
While (Err = 0) do
begin
if Sr.Name[1]<>'.' then
begin
if AnsiUpperCase(Copy(sr.Name, Length(sr.Name) - 3, 4)) = AnsiUpperCase('.jpg') then
ss.Append(sr.Name);
end;
Err:=FindNext(Sr);
end;
end;
展开
 我来答
东哥zld
推荐于2016-08-21 · 机械自动化爱好者
东哥zld
机械自动化爱好者
采纳数:204 获赞数:17741
毕业不久,正在努力创造自己的骄傲

向TA提问 私信TA
展开全部
代码里面缺少findclose,当然不能正常删除。

SelectDirectory 函数
通过显示一个对话框来让用户选择一个目录。
注意:在使用前要在Uses 语句中添加包含FileCtrl 的说明。
函数原型如下:
function SelectDirectory(const Caption: string; const Root: WideString;
out Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts;
HelpCtx: Longint): Boolean; overload;
对于第1 个重载函数,参数Caption 为对话框的标题内容;参数Root 指定一个目录,为进行浏览的最初目录;选中的目录保存在参数Directory 中。
对于第2 个重载函数,参数Directory 中指定的目录为对话框显示时选中的目录,最后用户选定的目录也保存在参数Directory 中;参数Options 为一些设置项目的集合,如果为空,则用户通过对话框只能选择已经存在的目录,没有提供编辑框给用户来输入一个新的目录名。TSelectDirOpts 类型定义如下:
type
TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
TSelectDirOpts = set of TSelectDirOpt;
具体数值的含义如下。
• sdAllowCreate 对话框中有一个Edit 组件,用户可以输入新的目录名。但是如果要新建该目录,程序员必须根据获取的文件自己编写代码新建目录。
• sdPerformCreate 对话框中有一个Edit 组件,用户可以输入一个不存在的目录名,对话框将选中该目录并创建该目录。
• sdPrompt 对话框中有一个Edit 组件,如果用户输入的目录名不存在,则显示一个信息对话框提示是否创建新目录。如果同时选中的是sdAllowCreate 设置,则程序员必须根据获取的文件自己编写代码新建目录。
forestry98
2013-04-29 · TA获得超过2442个赞
知道小有建树答主
回答量:1351
采纳率:33%
帮助的人:562万
展开全部
要是文件夹“被锁”,也肯定不是SelectDirectory的问题造成的。估计是其它的问题,例如存在只读文件/文件夹未清空删除文件夹/有打开的文件..........
追问
调试过了,确实是因为这个函数的问题,我用了另外一个按钮触发删除文件夹的时候没有用这个函数就可以删除,而且后面的删除过程用的是遍历,删到文件夹为空就删不了了,应该是这个函数的问题
追答
贴代码吧 

SelectDirectory 仅仅用来返回一个带路径的字符串而已
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式