内存操作 比如我有两个record类型变量record1,record2,我要把这两个变量的内容连起来放在一起,换到一个arr:arr[0..2047] of char.的当中,如何实现呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两个变量的内容?record1.name + record2.name → arr:arr[0..2047] of char? var a:record1;move(a,arr,sizeof(a)) to:zjqyb(风清扬*任它溺水三千,我只取一瓢饮*) 用move,只能把a 放到了arr中,如何把另一个记录类型加到arr后面呢 我的目的是要把两个记录变量的内存中得内容放到同一个地方,把他们连起来如: 变量a: ---内存值: 19 10 13 11 变量b: ---内存值: 22 22 23 24把记录a,b的内容一起放到变量c,c类型可以是char数据或byte数据 变量c: ---内存值: 19 10 13 11 22 22 23 24 var p:pbyte; a:record1; b:record2;getmem(p,sizeof(a)+sizeof(b));move(a^,p^,sizeof(a));move(b^,(p+sizeof(a))^,sizeof(b));record1,record2 must use packed 申明 没有啊getmen函数,我这样这个函数没有定义啊 ,还有a,b好象必须定义为指针类型吧 uses System;var F: file; Size: Integer; Buffer: PChar;begin AssignFile(F, 'test.txt'); Reset(F, 1); try Size := FileSize(F); GetMem(Buffer, Size); try BlockRead(F, Buffer^, Size); ProcessFile(Buffer, Size); finally FreeMem(Buffer); end; finally CloseFile(F); end;end; var arr:arr[0..2047] of char p:pbyte; a:record1; b:record2; p := @arr[0]; move(a^,p^,sizeof(a)); Inc( p, sizeof(a) ); move(b^,p^,sizeof(b)); move(a^,p^,sizeof(a)); 这里有这个错误[Error] Unit1.pas(453): Pointer type required p := @arr[0]; move(a,p^,sizeof(a)); Inc( p, sizeof(a) ); move(b,p^,sizeof(b)); 这个,,,要看具体的record的定义啦 代码优化问题 用Delphi6开发的WebService服务端,怎么移植到IIS上? 请问一下 我怎么判断对方发送的是文本 还是文件呢 请教:delphi如何动态更改网页中的字体大小和背景并显示? 小妹求救:日期相减,在Access里实现了,在SQL Server里怎么不行了呢? 在ActiveForm中能读取文本文件的数据吗? 如何动态创建MDI子窗口 运行时如何生成一个可视控件:比如TEdit 控件 我的东西怎么显示不出来啊?? 多层应用程序在别的机子上为何不能正常运行! 往dbf表中插入汉字时出现问题,汉字都显示成了问号,有什么办法可以解决吗? 关于MSCOMM控件的安装
record1.name + record2.name → arr:arr[0..2047] of char?
用move,只能把a 放到了arr中,如何把另一个记录类型加到arr后面呢
我的目的是要把两个记录变量的内存中得内容放到同一个地方,把他们连起来如:
变量a: ---内存值: 19 10 13 11
变量b: ---内存值: 22 22 23 24把记录a,b的内容一起放到变量c,c类型可以是char数据或byte数据 变量c: ---内存值: 19 10 13 11 22 22 23 24
a:record1;
b:record2;
getmem(p,sizeof(a)+sizeof(b));
move(a^,p^,sizeof(a));
move(b^,(p+sizeof(a))^,sizeof(b));
record1,record2 must use packed 申明
var F: file;
Size: Integer;
Buffer: PChar;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
ProcessFile(Buffer, Size);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;end;
arr:arr[0..2047] of char
p:pbyte;
a:record1;
b:record2;
p := @arr[0];
move(a^,p^,sizeof(a));
Inc( p, sizeof(a) );
move(b^,p^,sizeof(b));
[Error] Unit1.pas(453): Pointer type required
move(a,p^,sizeof(a));
Inc( p, sizeof(a) );
move(b,p^,sizeof(b));