如何将这个字符串(zl)转换为字节发送出去?代码:
var
i:integer;
zl:string;
sbuf:array[1..28] of char;begin
zl:='FA0B00090800111100110011000A';
for i:=0 to Length(zl)-1 do
sbuf[i]:=zl[i]; for i:=0 to length(pchar(@sbuf[i]))-1 do
begin
if not form1.Comm1.WriteCommData(pchar(@sbuf[i]),28) then
begin
sleep(1);
end;
end;
end;
这样行吗?
var
i:integer;
zl:string;
sbuf:array[1..28] of char;begin
zl:='FA0B00090800111100110011000A';
for i:=0 to Length(zl)-1 do
sbuf[i]:=zl[i]; for i:=0 to length(pchar(@sbuf[i]))-1 do
begin
if not form1.Comm1.WriteCommData(pchar(@sbuf[i]),28) then
begin
sleep(1);
end;
end;
end;
这样行吗?
var
i:integer;
zl:string;
sbuf:array[1..28] of char; begin
sbuf[1]:=$FA;
sbuf[2]:=$0B;
sbuf[3]:=$00;
sbuf[4]:=$09;
sbuf[5]:=$08;
sbuf[6]:=$00;
sbuf[7]:=$11;
sbuf[8]:=$11;
sbuf[9]:=$00;
sbuf[10]:=$11;
sbuf[11]:=$00;
sbuf[12]:=$11;
sbuf[13]:=$00;
sbuf[14]:=$0A;for i:=0 to length(pchar(@sbuf[i]))-1 do
begin
if not form1.Comm1.WriteCommData(pchar(@sbuf[i]),14) then
begin
sleep(1);
end;
end;
end;但是zl在这里是个变量,如何实现将这个字符串转换为字节呢?解决结贴!
i:integer;
zl:string;
sbuf:array[0..27] of char; begin
zl:='FA0B00090800111100110011000A';
for i:=0 to Length(zl)-1 do
sbuf[i]:=zl[i+1]; if not form1.Comm1.WriteCommData(pchar(@sbuf[i]),28) then
begin
//发送失败
end;
nd;
i:integer;
zl:string;
sbuf:array of char; begin
zl:='FA0B00090800111100110011000A';
setlength(sbuf,length(zl));
for i:=0 to Length(zl)-1 do
begin
sbuf[i]:=zl[i];
if not form1.Comm1.WriteCommData(sbuf[i],1) then
begin
sleep(1);
end;
end;
end;
form1.Comm1.WriteCommData(@sbuf[i],1)
关键要将这个sbuf[i]变成"FA,0B,00,09,08,00,11,11,00,11,00,11,00,0A"发送出去。
sBuf: array[0..13] of Byte;
strBuf: string;
I: Integer;
begin
strBuf := 'FA0B00090800111100110011000A';
for I := 0 to 13 do
sBuf[I] := StrToInt('$' + strBuf[2*I + 1] + strBuf[2*I + 2]);
form1.Comm1.WriteCommData(pchar(@sBuf[0]),14);
end;
i:integer;
zl:string;
sbuf:array of byte; begin
zl:='FA0B00090800111100110011000A';
setlength(sbuf,length(zl) div 2 );
for i:=0 to (length(zl) div 2) do
sbuf[i]:=strtoint('$'+zl[2*i]+zl[2*i+1]);
i:integer;
zl:string;
sbuf:array of byte; begin
zl:='FA0B00090800111100110011000A';
setlength(sbuf,length(zl) div 2 );
for i:=0 to (length(zl) div 2) do
sbuf[i]:=strtoint('$'+zl[2*i+1]+zl[2*i+2]
i:integer;
zl:string;
sbuf:array of byte; begin
zl:='FA0B00090800111100110011000A';
setlength(sbuf,length(zl) div 2 );
for i:=0 to (length(zl) div 2) do
sbuf[i]:=strtoint('$'+zl[2*i+1]+zl[2*i+2]这样不行!编译都通不过,提示错误有争议的类型!
setlength(sbuf,length(zl) div 2 );
for i:=0 to (length(zl) div 2) do
sbuf[i]:=strtoint('$'+zl[2*i+1]+zl[2*i+2]);
setlength(sbuf,length(zl) div 2 );
//for i:=0 to (length(zl) div 2) do 改成:
for i:=0 to (length(zl) div 2) - 1 do
sbuf[i]:=strtoint('$'+zl[2*i+1]+zl[2*i+2]);
sbuf[i]:=strtoint('$'+zl[2*i+1]+zl[2*i+2]);
如果
var
sbuf:array [1..14] of byte;
begin
setlength(sbuf,length(zl) div 2 );
end;
编译时提示不匹配的类型;如果
var
sbuf:array [1..14] of char;
begin
setlength(sbuf,length(zl) div 2 );
end;
编译时Constant object cannot be passed as var parameter错误!
这是静态数组的定义.
静态数组是不能用setlength的.sbuf: array of byte; //动态数组