Здравейте, имам проблем със следния код мисля, че проблема се явява в използването на асемблер, пробвам го на Delphi 5. Някой може ли да ми помогне
{ globalni promenlivi}
var
Key, OldKey: Byte;
LShiftUp, RShiftUp: Boolean;
St: string;
{tablici sus string-ovete za kopchetata}
const
Low: array[1..88] of string = (
' Esc ','1','2','3','4','5','6','7','8','9','0','-','=',' BkSp ',
' Tab ','q','w','e','r','t','y','u','i','o','p','[',']',
' Enter ',' Ctrl ','a','s','d','f','g','h','j','k','l',';','''','`',
' LShift+ ','\','z','x','c','v','b','n','m',',','.','/',' RShift+ ',
' Pad* ',' Alt ',' Space ',' CAPS ',
' F1 ',' F2 ',' F3 ',' F4 ',' F5 ',' F6 ',' F7 ',' F8 ',' F9 ',' F10 ',
' NUM ',' SCROLL ',' Home ',' Up ',' PgUp ',' Pad- ',' Left ',' *5* ',' Right ',
' Pad+ ',' End ',' Down ',' PgDown ',' Ins ',
' Del ',' -LShift ',' -RShift ',' Unknown ',' F11 ',' F12 ');
Hi: array[1..88] of string = (
' Esc ','!','@','#','$','%','^','&','*','(',')','_','+',' BkSp ',
' Tab ','Q','W','E','R','T','Y','U','I','O','P','{','}',
' Enter ',' Ctrl ','A','S','D','F','G','H','J','K','L',':','"','~',
' LShift+ ','|','Z','X','C','V','B','N','M','<','>','?',' RShift+ ',
' Pad* ',' Alt ',' Space ',' CAPS ',
' F1 ',' F2 ',' F3 ',' F4 ',' F5 ',' F6 ',' F7',' F8',' F9 ',' F10 ',
' NUM ',' SCROLL ',' Home ',' Up ',' PgUp ',' Pad- ',' Left ',' *5* ',' Right ',
' Pad+ ',' End ',' Down ',' PgDown ',' Ins ',
' Del ',' -LShift ',' -RShift ',' Unknown ',' F11 ',' F12 ');
{tova tuk e osnovniq cikul deto prihvashta novo kopche}
procedure SpyKey;
begin
asm
in al, 60h {kopcheto vuv al}
mov Key, al {al vuv Key}
end;
{malko obrabotka na Key, za da se vidi sustoqnieto na shift}
if Key = 170 then
begin
Key := 84;
LShiftUp := true;
end;
if Key = 182 then
begin
Key := 85;
RShiftUp := true;
end;
if Key = 42 then LShiftUp := false;
if Key = 54 then RShiftUp := false;
if Key <> OldKey then
{ako kopcheto e razlichno ot staroto togava...}
begin
OldKey:=Key; {novoto kopche vuv Oldkey}
if Key<=88 then {ako e natisnato kopche}
begin
if LShiftUp and RShiftUp then
St:=Low[Key] {nqma shift => vzemi ot tablicata low}
else St:=Hi[Key]; {ima shift => vzemi ot tablicata hi}
end
else if Key - 128 <= 88 then {ako e otpusnato kopche}
begin
if LShiftUp and RShiftUp then
St:=Low[Key - 128] {nqma => shift vzemi ot tablicata low}
else St:=Hi[Key - 128]; {ima => shift vzemi ot tablicata hi}
end;
end;
end;
|