procedure TForm2.Button6Click(Sender: TObject);
var
sbuf:array[0..255]of byte;
i:integer;
s1,s2,s3:string;
begin
sbuf[1]:=byte($aa); //幀頭
sbuf[2]:=byte($aa);//幀頭
sbuf[3]:=byte($0a); //命令號
sbuf[4]:=byte($90);
sbuf[5]:=byte($1);
sbuf[6]:=byte($2);
sbuf[7]:=byte($?);///
sbuf[8]:=byte($?);///
sbuf[9]:=byte($?);///
sum1 := 0;
sum2 := 0;
For i := 1 To 9 do
begin
sum1 := sum1 + sbuf[i];
sum2 := sum2 Xor sbuf[i];
end ;
sbuf[10] := sum1 div 256;
sbuf[11] := sum1 - sbuf[10] * 256;
sbuf[12] := byte(sum2); //////幀尾
senddata;//呼叫發送函式
end;
以上"?"是用戶輸入經轉換后動態變化的字串如s1,s2,s3,如果填上轉換后具體的字符如:dc,fb,1d等運行就沒問題,可是當用s1,s2,s3代替時就不能運行總是報錯,提示說不是一個有效的整數。各位大俠怎樣處理??
uj5u.com熱心網友回復:
sbuf[7]:=Byte(IntToStr(HexDisplayPrefix+s1));uj5u.com熱心網友回復:
位元組填上字串變數當然要報錯。如字串是數值字符,要先轉換成整數。uj5u.com熱心網友回復:
型別都不對,怎么能不報錯。。。uj5u.com熱心網友回復:
sbuf[7]:=hextoint(s1);///好像d7沒有現成的hextoint函式,需要自己寫
uj5u.com熱心網友回復:
sbuf[7]:=Byte(StrToInt(HexDisplayPrefix+s1));uj5u.com熱心網友回復:
sbuf[7]:=byte(StrToInt('0x'+S1));我用的是D6
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157122.html
標籤:VCL組件開發及應用
