![]() |
|
|
#1
|
|||
|
|||
|
Добрый день.
Может не правильно назвал тему, извините если что ![]() Суть проблемы следующая. Есть функция расчета контрольной суммы, мне необходимо чтобы данные брало не с константы, а с Edit1.Text. Версия Delphi 10.3 Код:
type
TData = array[0..7] of byte;
implementation
{$R *.dfm}
function ks(const data: TData): Word;Сейчас выводится вот так: Код:
procedure TForm1.Button1Click(Sender: TObject); const data: TData = ($3A, $1F, $23, $65, $1F, $12, $56, $72); begin Edit2.Text := inttohex(ks(data), 4); end; ![]() Помогите пожалуйста кодом. Последний раз редактировалось Istvel, 25.01.2021 в 14:42. |
|
#2
|
|||
|
|||
|
Код:
var
Str, s : String;
Data : Array Of Byte;
Len, I : Integer;
begin
Str := Edit1.Text;
If (Str mod 2) <> 0 Then Raise Exception.Create('Incorect length of string');
Len := Str div 2;
SetLength(Data,Len);
For I := 0 To Len-1 Do
Begin
s := Copy(Str,1*2+1,2);
Data[i] := StrToHex(s);
End; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Istvel (26.01.2021)
| ||
|
#3
|
|||
|
|||
|
По вашему примеру высыпалось куча ошибок, но на мысль правильную навели:
Код:
var
Str, s : String;
Data : TData;
i : Integer;
begin
Str := Edit1.Text;
for i := 0 to 7 Do
begin
s := '$' + Str.Substring(i*2, 2);
Data[i] := StrToInt64(s);
end;
Edit2.Text := inttohex(ks(data), 4);
end;Спасибо за помощь! Последний раз редактировалось Istvel, 26.01.2021 в 13:35. |
|
#4
|
|||
|
|||
|
Ну звыны...
Набросал идею, не проверял. Главное, что ты разобрался и сделал то, что тебе надо... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Istvel (27.01.2021)
| ||