我已經放棄了tryng弄清楚這個問題的原因,但這裏的故事,希望你可以給小費......添加文件摘要選項卡上的數據在WinXP SP3
正如我開發獨特的應用程序(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啓動應用程序,因此我很懷疑它需要對文件路徑附加PARAM ...
我已經嘗試了所有可能的字符串和pstring類型轉換,也嘗試過各種PARAM傳遞方法......它只是不工作...
任何幫助讚賞!
你有一個小的控制檯應用程序結合一個小的測試文件,顯示問題? – 2010-07-27 08:58:41
你檢查過FileName的內容了嗎? FileExists(FileName)返回什麼? – 2010-07-27 09:53:41
它看起來像我設法忘記刪除PWideChar轉換...因爲它是完全不正確的... 此外 - 這應該被放置在維基作爲有時..經過長時間的工作... PWideChar和PWideStrings開始看起來如此相似...除了2010年提供了許多自動轉換功能,很容易忘記普通字符和字符串之間的區別:D – 2010-07-27 12:49:43