Delphi如何将TEdit中的字符串赋给字节型数组

 我来答
己闻楣Sx
2011-04-15 · TA获得超过1936个赞
知道大有可为答主
回答量:1057
采纳率:93%
帮助的人:915万
展开全部
比较欣赏“股票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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
keyiwenwo
2011-04-15 · TA获得超过8871个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:1053万
展开全部
只考虑英文:
arr:array of byte;

setlength(arr,length(edit1.text))
for i:=0 to length(edit1.text) do
array[i]:=ord(edit1.text[i]);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
股票2进制
2011-04-15
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
var
SL : array of Byte;
begin
SetLength(SL , Length(Edit1.Text));
CopyMemory(@SL , Pointer(Edit1.Text) , Length(SL));
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
forestry98
2011-04-15 · TA获得超过2442个赞
知道小有建树答主
回答量:1351
采纳率:33%
帮助的人:562万
展开全部
楼下的越界
for i:=0 to length(edit1.text) - 1 do
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式