在WinXP SP3中的NTFS中运行时添加“文件摘要”选项卡数据

时间:2010-07-27 07:15:15

标签: delphi file storage ole ntfs

我已经放弃了尝试找出这个问题的原因,但这是故事,希望你能给出一个小费......

当我开发独特的应用程序(http://code.google.com/p/sedev)时,我需要对其进行润色 我必须在应用程序的任何创建文件中添加文件摘要(我认为非常有用的信息),所以我决定采用NTFS兼容结构 修改:发生问题的代码段:

if (FileExists(BaseLocation + LeftStr(GetSSWData, Length(GetSSWData)
              - 1) + '.vkp') = True) then // add NTFS descriptive information to output file
        try
          SetFileSummaryInfo
            (PWideChar(BaseLocation + LeftStr(GetSSWData, Length
                  (GetSSWData) - 1) + '.vkp')); // in my testcase files full path is: C:\Documents and Settings\Kludge\Desktop\sedevrpg\SEDEV_RPG_O_710.vkp
          ShowMessagePos('Patch Created successfuly!' + #13#13 +
              'Please verify created data to www.se-developers.net.',
            ParamStr2X, ParamStr3Y);
          MessageBeep(0);
        except // exception handler does not even fire on exception ...
          on Exception do
          begin
            if (WarningChBx.Checked = True) then
              ShowMessagePos
                ('Unable to add Description to Output file (' +
                  BaseLocation + LeftStr(GetSSWData, Length(GetSSWData)
                    - 1) + '.vkp )', ParamStr2X, ParamStr3Y);
            MessageBeep(0);
          end;
        end

作者最终编辑:问题出现在SetFileSummaryInfo(PWideChar(''))中,因为在PWideChar转换后你得到了CHARACTER,而不是字符数组(又名字符串),因此它不再是有效的路径了!

以下是主要教程:http://www.delphipages.com/articles/setting_file_summary_information-9228.html
修改:更好的格式化教程是here

但是,事实是我无法让那个该死的FileName参数接受任何字符串......我有EOleSysError异常:“无法找到”%1“。

错误操作数是:

OleCheck(StgOpenStorageEx(PWideChar(FileName),
 STGM_SHARE_EXCLUSIVE or STGM_READWRITE,
 STGFMT_ANY,
 0, nil,  nil, @IID_IPropertySetStorage, stg));

我不明白为什么它实际上想要%1 MSDOS文件名输入 我没有从CMD启动应用程序,因此我非常怀疑它需要文件路径的额外参数...

我已经尝试了所有可能的String和PString转换,也尝试了各种param传递方法......它只是不起作用...

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我只能通过指定无效的文件名来重现您的情况。确保在文件名中包含完整路径。