CreateShortCut(path) - не работает с русскими буквами

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
poiuyt555
новенький
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

CreateShortCut(path) - не работает с русскими буквами

Сообщение poiuyt555 »

Здравствуйте.
Код:
W=CREATECOMOBJECT('Wscript.Shell');
Так работает:
W.CreateShortcut('C:\shortcut.lnk');
А с русскими буквами - выдает ошибку:
W.CreateShortcut('C:\ярлык.lnk'); - не работает

Вопрос:
1) Как сделать, чтобы данная функция корректно работала с русскими буквами?
2) Доп. вопрос: как сделать данный код универсальным - т.е., чтобы он корректно работал со сторокой не только на русском и английском, но и на любом другом языке?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

poiuyt555 писал(а): выдает ошибку

А ошибка, наверное, такая:
"Can't find valid programmer. Please, insert new programmer now".
? :)
Текст ошибки то кто за вас писать будет? ;)
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Попробуйте так:

Код: Выделить всё

W.CreateShortcut(SysToUTF8('C:\ярлык.lnk')); 
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Nik
Наоборот.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Мне больше кажется, что нужно:

Код: Выделить всё

W.CreateShortcut(UTF8Decode('C:\ярлык.lnk'));

т.к. это OLE? такое OLE.
poiuyt555
новенький
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

Сообщение poiuyt555 »

Спасибо.
Так заработало:

Код: Выделить всё

...
 a : wideString;
begin
  sh  := CreateOleObject('WScript.Shell');
  a:=UTF8Decode('C:\Ярлык.lnk');
  sht := sh.CreateShortcut(a);   
....
Ответить