【问题标题】:Populating a database with file names from directories使用目录中的文件名填充数据库
【发布时间】:2008-09-24 20:56:03
【问题描述】:

我有一个应用程序,它可以作为文件夹中所有图片的幻灯片放映。它是用 Borland 的 C++ Builder (9) 编写的。它目前使用一些借用的代码将文件名放入列表框并将列表框项保存为文本文件。

我想对此进行更新,以便将文件名存储在适当的数据库中,以便我可以包含额外的字段并使用它执行适当的 SQL 操作。

所以基本上,如果我看到一些“示例”代码做同样的事情,我就能解决它。

因此,如果有人知道执行此操作的任何代码,我将不胜感激。它需要能够对某些文件类型执行此操作……而不仅仅是所有文件。

【问题讨论】:

    标签: c++ sql c++builder


    【解决方案1】:

    您基本上需要编写一个带有 TDataSet 参数的递归函数。

    (我无法编译我的代码,所以你“按原样”得到它)

    void AddFiles(AnsiString path, TDataSet *DataSet)
    {
    TSearchRec sr;
    int f;
        f = FindFirst(path+"\\*.*", faAnyFile, sr);
        while( !f )
        {
            if(sr.Attr & faDirectory)
            {
                if(sr.Name != "."   &&   sr.Name != "..")
                {
                    path.sprintf("%s%s%s", path, "\\", sr.Name);
                    AddFiles(path, DataSet);
                }
            }
            else
            {
                DataSet->Append();
                DataSet->FieldByName("Name")->Value = sr.Name;
                /* other fields ... */
                DataSet->Post();
            }
            f = FindNext(sr);
        }
        FindClose(sr);
    }
    

    【讨论】:

    • 非常感谢。我会尽可能地尝试一下,不幸的是不是马上。我会让你知道结果。
    • 我开始测试这段代码(尽管没有数据集的东西——只是为了测试将所有文​​件放在一个目录和它的子目录中),但它不能正常工作。它弄乱了路径......真正的结构 a a\b a\c a\d 变成 a a\b a\b\c (它错误地将 'a' 的子目录变成了 'b' 的子目录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多