07.07.2010, 16:29
|
Прохожий
|
|
Регистрация: 06.07.2010
Сообщения: 6
Репутация: 10
|
|
Кнопка и код
Как зделать так чтоб при нажитии на кнопку выполнялся вот этот код:
Код:
Function HexToInt(S:String): LongInt;
const
DecDigits: Set Of '0'..'9' = ['0'..'9'];
HexVals: Array [0..$F] Of Integer = (0, 1, 2, 3, 4, 5, 6, 7,
8, 9, $A, $B, $C, $D, $E, $F);
UpCaseHexLetters: Set Of 'A'..'F' = ['A'..'F'];
LowCaseHexLetters: Set Of 'a'..'f' = ['a'..'f'];
var
v: LongInt;
i: integer;
LookUpIndex: integer;
begin
if length(S) <= 8 then begin
v := 0;
for i := 1 to length(S) do begin
{$R-}
v := v Shl 4;
{$R+}
if S[i] in DecDigits then begin
LookUpIndex := Ord(S[i]) - Ord('0');
end
else begin
if S[i] in UpCaseHexLetters then begin
LookUpIndex := Ord(S[i]) - Ord('A') + $A;
end
else begin
if S[i] in LowCaseHexLetters then begin
LookUpIndex := Ord(S[i]) - Ord('a') + $A;
end
else begin
LookUpIndex := 0;
end;
end;
end;
v := v Or HexVals[LookUpIndex];
end;
result := v;
end
else begin
result := 0;
end;
end;
procedure WakeUPComputer(aMacAddress: string);
var
i, j: Byte;
lBuffer: array[1..116] of Byte;
lUDPClient:TIdUDPClient;
begin
try
for i := 1 to 6 do begin
lBuffer[i] := HexToInt(aMacAddress[(i * 2) - 1] +
aMacAddress[i * 2]);
end;
lBuffer[7] := $00;
lBuffer[8] := $74;
lBuffer[9] := $FF;
lBuffer[10] := $FF;
lBuffer[11] := $FF;
lBuffer[12] := $FF;
lBuffer[13] := $FF;
lBuffer[14] := $FF;
for j := 1 to 16 do begin
for i := 1 to 6 do begin
lBuffer[15 + (j - 1) * 6 + (i - 1)] := lBuffer[i];
end;
end;
lBuffer[116] := $00;
lBuffer[115] := $40;
lBuffer[114] := $90;
lBuffer[113] := $90;
lBuffer[112] := $00;
lBuffer[111] := $40;
try
lUDPClient := TIdUDPClient.Create(nil);
lUDPClient.BroadcastEnabled := true;
lUDPClient.Host := '255.255.255.255';
lUDPClient.Port := 2050;
lUDPClient.SendBuffer(lBuffer, 116);
writeln('Trying to wake-up remote host: ' + aMacAddress);
finally
lUDPClient.Free;
end;
except
on E: Exception do writeln('There was an error');
end;
end;
|