delphi 结构, Str 转 array of Char;

typePSpeak=^Speak;Speak=recordrDate:Word;sName:array[0..14]ofChar;end;variName:PSpeak... type
PSpeak=^Speak;
Speak = record
rDate : Word;
sName : array[0..14] of Char;
end;
var
iName :PSpeak;
str :string;
begin
try
str :=‘好好学习’;
iName.rDate:=$06;
iName.sName:=Str; // 为什么不能转换, 有什么办法解决吗?

而这样就行iName.sName:=‘好好学习’;

有什么办法转换呢? PChar 不行 是乱码。
展开
 我来答
sololie
2013-07-20 · TA获得超过391个赞
知道答主
回答量:67
采纳率:0%
帮助的人:20.7万
展开全部
type
PSpeak = ^Speak;
Speak = record
rDate: Word;
sName: array[0..14] of AnsiChar;
end;

var
iName: PSpeak;
str: PAnsiChar;
begin
str := '好好学习';
iName := GetMemory(SizeOf(Speak));
iName^.rDate := $06;
StrCopy(@iname^.sName, str);
ShowMessage(PChar(@iname^.sName));
FreeMemory(iName);
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微风8009
2013-07-20 · TA获得超过304个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:165万
展开全部
var i:integer;

for i:=0 to length(iname.sname)-1 do
iname.sname[i]:=str[i];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人间杂货店
2015-12-29 · 数据只告诉我们事实,知识才能告诉我们真实
人间杂货店
采纳数:1319 获赞数:4312

向TA提问 私信TA
展开全部
第一种方法:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
s1 :array [1..10] of Char;
l:integer;
i:Integer;
begin
s:='test';
l:=Length(s);

for I := 1 to l do
begin
s1[i]:=s[i]

end;
end;
第二种方法:
procedure TForm1.Button2Click(Sender: TObject);

var
s:string;
s1 :array [1..10] of Char;
l:integer;
i:Integer;
begin
s:='test';
CopyMemory(@s1,@s[1],length(s)-1);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-20
展开全部
你PSpeak这个记录中的sName一定要定义成数组类型吗?为什么不定义为string类型呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式