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

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

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

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

Сообщение poiuyt555 » 12.09.2011 07:53:45

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

Вопрос:
1) Как сделать, чтобы данная функция корректно работала с русскими буквами?
2) Доп. вопрос: как сделать данный код универсальным - т.е., чтобы он корректно работал со сторокой не только на русском и английском, но и на любом другом языке?
poiuyt555
новенький
 
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

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

Сообщение Vadim » 12.09.2011 08:48:03

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

А ошибка, наверное, такая:
"Can't find valid programmer. Please, insert new programmer now".
? :)
Текст ошибки то кто за вас писать будет? ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Nik » 12.09.2011 09:45:00

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

Код: Выделить всё
W.CreateShortcut(SysToUTF8('C:\ярлык.lnk'));
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

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

Сообщение Vadim » 12.09.2011 09:54:39

Nik
Наоборот.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Mr.Smart » 12.09.2011 10:39:57

Мне больше кажется, что нужно:
Код: Выделить всё
W.CreateShortcut(UTF8Decode('C:\ярлык.lnk'));

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

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

Сообщение poiuyt555 » 13.09.2011 19:18:59

Спасибо.
Так заработало:
Код: Выделить всё
...
a : wideString;
begin
  sh  := CreateOleObject('WScript.Shell');
  a:=UTF8Decode('C:\Ярлык.lnk');
  sht := sh.CreateShortcut(a);   
....
poiuyt555
новенький
 
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru