TListItem 出现问题,使用 ExtractFileName(...) 在 USB 驱动器上查找文件时设置项目标题似乎被破坏

Having trouble with TListItem, setting the item caption when finding files on a usb drive using ExtractFileName(...) appears mangled

提问人:OutOfTime 提问时间:2/17/2023 最后编辑:Remy LebeauOutOfTime 更新时间:2/18/2023 访问量:42

问:

这是问题所在,设置从本地磁盘读取文件时就可以了,完全没有问题。item->Caption

在 USB 驱动器上运行应用程序并尝试在它发现的文件上设置应用程序。我不知道为什么会这样,有人有想法吗?Caption

只有在被调用之后,它才会发生,我能做些什么来让它按照我的意愿出现吗?ExtractFileName

使用FindNextFileW(h, &f);

我知道我应该附加一个进程来调试代码,但我不记得如何在 IDE 中执行此操作。我的时间不多了,所以需要你的帮助。

void __fastcall TSQLiteListView::AssignListImageItems(UnicodeString fileName)
    {
    //  make sure that folder path is set when executing or assigning values to database component
    UnicodeString msg = "Hello there. \r\n\r\n " ;
    UnicodeString caption = "I am Here";

    TListItem *item;
    item = Items->Add();

    item->Caption = ExtractFileName(fileName);
    MessageBoxW(0, item->Caption.w_str(), caption.w_str(), MB_OK + MB_ICONINFORMATION);
    if(AssignLargImage)
        item->ImageIndex = ListLargeImageIndex;
    else
        item->ImageIndex = ListSmallImageIndex;
    }

我试着在错误的地方做很多事情,我在一个不存在问题的地方追逐鬼魂。我将其追踪到我在此处提供的功能。

C++builder-11-亚历山大

评论


答:

0赞 OutOfTime 2/18/2023 #1

发布答案是因为它可能对其他人有用,问题根本不是我的代码,问题与记忆棒有关,这就是问题所在

我通过代码创建了一个sqlite数据库,它写了一个空数据库,这是我所期望的,所以这里没有问题。

我的应用程序在第一次访问数据库文件时自动添加表,这不是问题。

我正在编写的应用程序需要毫无保留地在 USB 驱动器上运行,驱动器上的系统文件没有依赖关系,没有注册表元素需要关注,应用程序的整个想法是完全独立的。

所以,问题是我构建了一个 INNO 安装文件,它运行完美并完成它的工作,问题是从创建它的计算机复制 db 文件,一台新的 Surface Go,(出色的机器)当我的应用程序尝试读取包含文件的 usb 文件夹时,该项目的标题标签被破坏了。

当我在 USB 上运行该应用程序并从该实例创建文件时,一切都按照我的预期工作,因此,在一天结束时,我追逐了一个鬼魂整整 15 个小时,因为我没有时间在我无法预测的日期和时间之前完成它。

对此造成的不便,我们深表歉意。