![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите перевести string в keycode [D7, XP]
Scazzi © (2007-12-06 13:08:00)Есть задачка перевести строку типа string в keycode
тоесть чтобы строка 'hello' выглядила как '#72#69#76#76#79'
Помогите пожалста очень надо
Dib@zol (2007-12-06 14:41:00) [1]function ConvToKeyCodes(s:string):PChar;
asm
PUSH EBX;
PUSH ECX;
PUSH EDX;
PUSH EDI;
PUSH ESI;
MOV ECX, DWORD PTR [EAX-4];
PUSH ECX;
MOV EBX, ECX;
SHL ECX, 1;
ADD ECX, EBX;
INC ECX;
MOV EDI, ECX;
MOV EBX, EAX;
DEC EBX;
PUSH ECX;
CALL GetMemory;
POP ECX;
POP ECX;
ADD EDI, EAX;
MOV BYTE PTR[EDI], 0;
DEC EDI;
XOR EAX, EAX;
MOV DL, 10h;
@loop:
MOV AL, BYTE PTR [EBX+ECX];
MOV ESI, ECX;
MOV ECX, 2;
@next:
IDIV DL;
CMP AH, 0Ah;
JL @less;
ADD AH, 07h;
@less:
ADD AH, 30h;
MOV BYTE PTR [EDI], AH;
XOR AH, AH;
DEC EDI;
LOOP @next;
MOV BYTE PTR [EDI], 23h;
DEC EDI;
MOV ECX, ESI;
LOOP @loop;
INC EDI;
MOV EAX, EDI;
POP ESI;
POP EDI;
POP EDX;
POP ECX;
POP EBX;
end;
Вота.
{RASkov} (2007-12-06 14:06:00) [2]Вообщето это:
> #72#69#76#76#79'
точно не это:
>hello
:) Я тоже не сразу въехал)
Но вот так, имхо, красивее
#48#45#4C#4C#4F
Германн (2007-12-06 14:03:00) [3]
> Anatoly Podgoretsky © (06.12.07 13:58) [10]
Ну тогда вот так нужно:
for i := 1 to Length(s) do
keycode := keycode + '#' + IntToStr(Ord(UpCase(s[i])));
А все прочие - ламеры!
Anatoly Podgoretsky (2007-12-06 13:58:00) [4]
> Как ни стараюсь
Смотря как стараешься
Германн (2007-12-06 13:43:00) [5]
> engine © (06.12.07 13:40) [7]
:)))
Джо (2007-12-06 13:41:00) [6]> [6] Германн © (06.12.07 13:38)
> Что я делаю не так?
> :)
Наверное, плохо стараешься? :)
engine (2007-12-06 13:40:00) [7]> [6] Германн © (06.12.07 13:38)
'HELLO'
)
Германн (2007-12-06 13:38:00) [8]Как ни стараюсь, а все равно строка 'hello' не выглядит как '#72#69#76#76#79'.
Что я делаю не так?
:)
Scazzi (2007-12-06 13:16:00) [9]Спасибо большое
MBo (2007-12-06 13:15:00) [10]for i := 1 to Length(s) do
keycode := keycode + '#' + IntToStr(Ord(s[i]));// или IntToHex(Ord(s[i]), 2);
Scazzi (2007-12-06 13:12:00) [11]а не можешь пример написать... я просто с Дельфи очень мало знаком
Джо (2007-12-06 13:10:00) [12]Ord
Джо (2007-12-06 13:10:00) [13]Для каждого символа строки.