2010-07-27 25 views
1

我已經放棄了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傳遞方法......它只是不工作...

任何幫助讚賞!

+0

你有一個小的控制檯應用程序結合一個小的測試文件,顯示問題? – 2010-07-27 08:58:41

+0

你檢查過FileName的內容了嗎? FileExists(FileName)返回什麼? – 2010-07-27 09:53:41

+0

它看起來像我設法忘記刪除PWideChar轉換...因爲它是完全不正確的... 此外 - 這應該被放置在維基作爲有時..經過長時間的工作... PWideChar和PWideStrings開始看起來如此相似...除了2010年提供了許多自動轉換功能,很容易忘記普通字符和字符串之間的區別:D – 2010-07-27 12:49:43

回答

0

我只能通過指定無效的文件名來重現您的情況。確保在文件名中包含完整路徑。

+0

謝謝,The_Fox!沒有直接答案的要點,但仍然 - 你幫了很多! – 2010-07-27 12:59:40