![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
захотелось создать транслейтер для PHP(?)-алфавита сделать.
методом тыка написал это, но не допру, какие тут переменные писать, и что еще, а хотелось бы: 1) результат можно было скопировать. 2)регистр искомых букв не влиял на выполнение(U=u и остальные). 3)конвертация из Edit происходила строчкой, а не одной буквой. Код:
procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text='\U0430' then label1.Caption:='a'; if edit1.text='\U0431' then label1.caption:='б'; ......... label1.caption:='я'; if edit1.text='\U0410' then label1.caption:='А'; if edit1.text='\U0411' then label1.caption:='Б'; ........ if edit1.text='\U042F' then label1.caption:='Я'; end; end. прошу не пинать меня по ссылкам и темам. не сразу сюда пришел: а после долгого поиска примеров и изучения кода. я даже не чайник: а кипятитьник ![]() P.S. спойлер, я так понял на этом форуме не работает, поэтому сократил аналогичные строки кода Спасибо. Последний раз редактировалось Admin, 06.03.2015 в 16:51. |
|
#2
|
||||
|
||||
|
Аффтар, ты -- э-э-э, начинающий, наверное... В виде U+#### записываются кодовые точки Юникода, так что четырехзначные коды в твоем примере соответствуют кодировке UTF-16. Выкусывай хвост после '\U', и WideChar(HexToInt(хвост)) -- и будет твой символ.
|
| Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
sashka (06.03.2015)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Цитата:
ведь например: я нахожу строку \u0422\u0440\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f вклеиваю ее в Edit и нажав кнопку получаю в Lable "Трасса"-вот так хотелось бы. WideChar(HexToInt(хвост)) надож кудад вставить в свой код еще привязать свой "алфавит" к (хвост). а еще строчные буквы не воспринимает-это я пожалуй исправить в состоянии: так-как прописные в основном в искомых текстах.(а вообще на примерах я лучше понимаю.) |
|
#4
|
||||
|
||||
|
Цитата:
Ищешь '\' функцией PosEx, проверяешь через UpperCase проверяешь на равенство 'U', берешь следующие четыре символа функцией Copy, передаешь в HexToInt. Если потом сразу же не идет новый '\' -- это латиница, участок до следующего '\' или конца строки нужно копировать в результат без изменений. |
|
#5
|
|||
|
|||
|
Чайнику от чайника
Хоть Вы и просили, не посылать Вас..... по ссылкам, всё таки рискну. Тут Я сам там пасусь постоянно Здесь описано как откусить, и многое другое. Прошу прощения, ссылка была не рабочей. Поправил. Последний раз редактировалось Alex55V, 06.03.2015 в 14:02. |
| Этот пользователь сказал Спасибо Alex55V за это полезное сообщение: | ||
sashka (06.03.2015)
| ||
|
#6
|
||||
|
||||
|
Да в приципе "свободночеловеческий" вариант с PosEx вполне работоспособен, вот его реализация для D7
Код:
uses
StrUtils;
function cnv(ds: string): string;
var
i, b: integer;
c: WideChar;
n: string;
begin
i:= 1; b:= 1;
while b < Length(ds) do
begin
i:= PosEx('\U', ds, i);
Result:= Result + Copy(ds, b, i-b);
Inc(i, 2);
n:= Copy(ds, i, 4);
b:= i + 4;
c:= WideChar(StrToInt('$' + n));
Result:= Result + c;
end;
Result:= Result + Copy(ds, b, Length(ds));
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Freeman (06.03.2015)
| ||
|
#7
|
|||
|
|||
|
Цитата:
Последний раз редактировалось sashka, 06.03.2015 в 14:09. |
|
#8
|
||||
|
||||
|
Код:
uses
MSScriptControl_TLB, ActiveX, ComObj,
...
var
ScriptControl: IScriptControl;
begin
OleInitialize(nil);
ScriptControl:=CreateComObject(CLASS_ScriptControl) as IScriptControl;
ScriptControl.Language:='javascript';
ShowMessage(ScriptControl.Eval('s = "\u041f\u0440\u0438\u0432\u0435\u0442"; s'));
end;MSScriptControl_TLB импорт библиотеки типов |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
sashka (06.03.2015)
| ||
|
#9
|
|||
|
|||
|
Screenshot_5.jpg
Цитата:
Код:
Label1.Caption:=(ScriptControl.Eval(Edit1.Text)); |
|
#10
|
|||
|
|||
|
Цитата:
что именно предполагается в моей неудачной попытке, кавычкм, точкаСзапятой ? Последний раз редактировалось sashka, 06.03.2015 в 15:48. |
|
#11
|
||||
|
||||
|
ну уж такие элементарные вопросы задавать... я уж и пример удалил
![]() Код:
var
ScriptControl: IScriptControl;
begin
OleInitialize(nil);
ScriptControl:=CreateComObject(CLASS_ScriptControl) as IScriptControl;
ScriptControl.Language:='javascript';
Label1.Caption:=ScriptControl.Eval('s = "'+Edit1.Text+'"; s');
end;в Edit1 текст "\u041f\u0440\u0438\u0432\u0435\u0442" без кавычек |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
sashka (06.03.2015)
| ||
|
#12
|
|||
|
|||
|
Цитата:
Элементарно для Вас и вас для меня пока все сложно и не понятно.спасибо огромное! буду разбирать пример, искать все что с ним связано. |
|
#13
|
|||
|
|||
|
направление решения задачи кардинально было изменено, хоть результат замечательный
добавил: Код:
procedure TForm1.Label1Click(Sender: TObject); var Clipboard: TClipboard; begin Clipboard:= TClipboard.Create; Clipboard.SetTextBuf(PChar(Label1.Caption)); FreeAndNil(Clipboard); end; |