Добавить данные вкладки «Сводка файла» во время выполнения в NTFS в WinXP SP3 - PullRequest
1 голос
/ 27 июля 2010

Я отказался от попытки выяснить причину этой проблемы, но вот история и надеюсь, что вы могли бы дать совет ...

Как я разрабатываю уникальное приложение (http://code.google.com/p/sedev) и поэтому мне нужно его отполировать.
Мне нужно добавить Сводку файлов (на мой взгляд, очень полезную информацию) в любые файлы, созданные приложением, поэтому я решил использовать NTFS-совместимую структуру edit : фрагмент кода, в котором возникает проблема:

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, а не Array ofСимволы (иначе говоря, Strings), поэтому это уже не правильный путь!

Вот основной урок: http://www.delphipages.com/articles/setting_file_summary_information-9228.html
edit : лучше отформатированный урок здесь .

НО, дело в том, что я просто не могу заставить этот проклятый параметр FileName принять любую строку ... У меня есть исключение EOleSysError: "% 1 не может быть найдено", несмотря ни на что.

Неисправный операнд:

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

Что яЯ не понимаю, почему он действительно хочет ввести имя файла% 1 MSDOS.
Я не запускаю приложение из CMD, поэтому я очень сомневаюсь, что ему нужен дополнительный параметр для пути к файлу ...

Я перепробовал все возможныеСтроковые и PString преобразования, также пробовал различные методы передачи параметров ... Это просто не работает ...

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 27 июля 2010

Я могу воспроизвести ваш случай, только указав неверное имя файла. Убедитесь, что вы указали полный путь в вашем имени файла.

...