|
#1
|
|||
|
|||
Кнопка и код
Как зделать так чтоб при нажитии на кнопку выполнялся вот этот код:
Код:
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; |
#2
|
|||
|
|||
Вызывать из процедуры кнопки onclick эти процедуры
|
#3
|
|||
|
|||
Пробовал но у меня выбивает ошибку =(
|
#4
|
|||
|
|||
какую? текст ошибки.
|
#5
|
|||
|
|||
Делаю вот такой код :
Код:
procedure TForm1.Button1Click(Sender: TObject); begin 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; end; Код:
[Error] Unit1.pas(33): Statement expected but 'FUNCTION' found [Error] Unit1.pas(120): '.' expected but ';' found [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' |
#6
|
|||
|
|||
просто вот так:
Код:
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; procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption:=IntToStr(HexToInt('AA')); end; если хотите процедуры вставить в процедуру то тогда вставляйте их перед begin 'ом процедуры! |
#7
|
|||
|
|||
Тут прикол в том что этот код включает компьютеры. И мне надо чтоб при нажатии на кнопку срабатывал этот код
Код:
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; |
#8
|
|||
|
|||
включает компы? хмм... интересно.
сообственно без особой разницы что он делает. вызов процедур из кнопки написан выше. |
#9
|
|||
|
|||
Black Raider Спасибо за ответ лови +1 Тема ЗАКРЫТА
|
#10
|
||||
|
||||
HexToInt можно сделать намного проще (IMHO)...
Код:
function HexToInt(HexValue: string): Integer; begin Result:=StrToInt('$'+HexValue); end; function HexToInt64(HexValue: string): int64; begin Result:=StrToInt64('$'+HexValue); end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#11
|
|||
|
|||
DJ PhoeniXСпасибо но мне и так как сказал Black Raider нормально получается но за старание лови +1
|