Delphi如何将TEdit中的字符串赋给字节型数组
4个回答
展开全部
比较欣赏“股票2进制”的答复,但有错误和缺陷。
1、将Edit.Text强制类型转换为Pointer,恐怕不行,需要中引入一个string变量来干这个转换
2、对于Delphi 2009以上,Length返回字符数,不是字节数,需要考虑兼容性
3、CopyMemory是windows API函数,调用代价较高,为优化起见,应用delphi内置的Move
4、SL命名不佳,像是StringList,用abData得了
总结,改写如下:
var
L : Integer;
s : string;
abData : array of Byte;
begin
s := Edit1.Text;
// Delphi2009可用ByteLength,但其内部ByteLength就是Length*SizeOf(Char),为保证多版本兼容性,自行将其展开书写了
L := Length( s ) * SizeOf( Char );
SetLength( abData, L );
// 注意,Move的参数是先源后目标,与CopyMemory相反
Move( s[1], abData[0], L );
......
// 应该继续做点儿什么,否则end之际,动态数组自动销毁
end;
1、将Edit.Text强制类型转换为Pointer,恐怕不行,需要中引入一个string变量来干这个转换
2、对于Delphi 2009以上,Length返回字符数,不是字节数,需要考虑兼容性
3、CopyMemory是windows API函数,调用代价较高,为优化起见,应用delphi内置的Move
4、SL命名不佳,像是StringList,用abData得了
总结,改写如下:
var
L : Integer;
s : string;
abData : array of Byte;
begin
s := Edit1.Text;
// Delphi2009可用ByteLength,但其内部ByteLength就是Length*SizeOf(Char),为保证多版本兼容性,自行将其展开书写了
L := Length( s ) * SizeOf( Char );
SetLength( abData, L );
// 注意,Move的参数是先源后目标,与CopyMemory相反
Move( s[1], abData[0], L );
......
// 应该继续做点儿什么,否则end之际,动态数组自动销毁
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只考虑英文:
arr:array of byte;
setlength(arr,length(edit1.text))
for i:=0 to length(edit1.text) do
array[i]:=ord(edit1.text[i]);
arr:array of byte;
setlength(arr,length(edit1.text))
for i:=0 to length(edit1.text) do
array[i]:=ord(edit1.text[i]);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
SL : array of Byte;
begin
SetLength(SL , Length(Edit1.Text));
CopyMemory(@SL , Pointer(Edit1.Text) , Length(SL));
end;
SL : array of Byte;
begin
SetLength(SL , Length(Edit1.Text));
CopyMemory(@SL , Pointer(Edit1.Text) , Length(SL));
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼下的越界
for i:=0 to length(edit1.text) - 1 do
for i:=0 to length(edit1.text) - 1 do
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询