【发布时间】:2013-09-24 18:32:46
【问题描述】:
我正在使用 Delphi 制作简单的文件管理器。我使用ListView 显示文件夹和文件,我使用FileList(不可见)从某个目录获取文件和文件夹名称。
问题是我不想在ListView中包含这个[.]元素(它是当前目录的符号,不知道为什么Delphi的FileList会显示它)。但是,当我试图忽略它时(这里是代码)
procedure TfolderFrame.ShowFiles;
var
i: Integer;
size: int64;
fileName, extension: string;
begin
edt1.Text := CurrentFullPath;
lvListView.Clear;
fllstFiles.Directory := CurrentFullPath;
For i := 0 To fllstFiles.Items.Count-1 Do begin
fileName := fllstFiles.Items.Strings[i];
extension := UpperCase(ExtractFileExt(fileName));
size := DSiFileSize(fileName);
Delete(extension, 1, 1);
if (fileName <> '[.]') then begin //error apperas at this line!
if (not(isDirectory(fileName))) then begin
lvListView.Items.Add.Caption := fileName;
lvListView.Items[i].SubItems.Add(IntToStr(size));
lvListView.Items[i].SubItems.Add(extension);
lvListView.Items[i].ImageIndex := GetItemImage(fileName, extension);
end
else begin
Delete(fileName, 1, 1);
Delete(fileName, Length(fileName), 1);
lvListView.Items.Add.Caption := fileName;
lvListView.Items[i].ImageIndex := GetItemImage(fileName, extension);
end;
end;
end;
end;
出现错误
模块 file_manager.exe 中地址 004634DF 的访问冲突。读 地址 00000010
我做错了什么?
【问题讨论】:
-
为什么不使用
FindFirst/FindNext? -
请不要让我们猜测错误发生在哪一个。告诉我们。你拼写它extension 而不是extension。是的,不要使用 GUI 控件来列出目录中的文件。这是一个非常糟糕的主意。
-
@JerryDodge 好吧,我以前从没用过它。_.
-
只有检查
[.]才会出现错误?从你的问题不清楚。并且显示的代码不足以表明您创建了 FileList 对象等。
标签: delphi listview file-manager filelist