Я отказался от попытки выяснить причину этой проблемы, но вот история и надеюсь, что вы могли бы дать совет ...
Как я разрабатываю уникальное приложение (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 преобразования, также пробовал различные методы передачи параметров ... Это просто не работает ...
Любая помощь приветствуется!