【问题标题】:How to make loop to delete selected items in directory如何制作循环以删除目录中的选定项目
【发布时间】:2017-09-14 11:45:50
【问题描述】:

我想创建一个循环,以便从目录中删除列表视图中的选定项目。

procedure TFContact.BtnDeleteClick(Sender: TObject);
var
SecItem, BUFPath : string;
i : Integer;
begin
   if ListViewTab5.Selected <> nil then

    for i := 0 to ListViewTab5.Items.Count - 1 do
    begin
    SecItem:= TListViewItem(ListViewTab5.Selected).Text;
    BUFPath:= '/storage/emulated/0/Backup/'+SecItem;
    TFile.Delete(BUFPath);
    end
    else
    ShowMessage('File Deleted Succesfully');
end;

【问题讨论】:

  • 你有什么问题?
  • 你的意思是选中,没有选中,不是吗?顺便提一句。循环不能有else 分支。
  • 我的循环不起作用,它只从列表视图中的选定项目 ('/storage/emulated/0/Backup/') 中删除 1 个项目。
  • 不足为奇。您的循环体没有引用循环变量。因此,它会一遍又一遍地删除同一个文件。在我看来,今天的新手程序员大体上都没有学到好的调试技能。如果您对此进行了调试,您就会知道问题所在。您在这里的真正任务是学习如何调试。把它作为你的首要目标。
  • 是的,我确实检查过(我认为检查和选择是相同的)

标签: android delphi firemonkey delphi-10.2-tokyo


【解决方案1】:

试试这个:

procedure TFContact.BtnDeleteClick(Sender: TObject);
const
  Path = '/storage/emulated/0/Backup/';
var
  Item: TListViewItem;
begin
  for Item in ListView.Items do
    if Item.Checked then
      TFile.Delete(TPath.Combine(Path, Item.Text));
end;

【讨论】:

  • 我问错了问题,因为我看错了地方。你有很好的技能来理解和猜测我的问题。我必须写得正确,所以其他人可能不需要猜测
  • 你需要做的,最重要的是,努力学习如何调试。虽然您仍然无法调试,但您将几乎没有进展。
猜你喜欢
  • 2022-01-03
  • 2018-12-13
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 2018-07-16
  • 2019-11-05
  • 2012-01-08
相关资源
最近更新 更多