如何将下面的record 类型转换成 string类型,即string类型的数据报。 ARP_HDR = packed record
HardwareType: WORD;
ProtocolType: WORD;
HLen: UCHAR;
PLen: UCHAR;
Operation: WORD;
SenderHA: MACADDRESS;
SenderIP: DWORD;
TargetHA: MACADDRESS;
TargetIP: DWORD;
end;
HardwareType: WORD;
ProtocolType: WORD;
HLen: UCHAR;
PLen: UCHAR;
Operation: WORD;
SenderHA: MACADDRESS;
SenderIP: DWORD;
TargetHA: MACADDRESS;
TargetIP: DWORD;
end;
解决方案 »
- 刚学DELPHI,有几个问题想问大家。请指教。
- Delphi7中多个编辑框数所累加可否用循环来做?
- 为什么只搜索最后一个分区?
- 周末刚买台电脑,旧电脑买了200元,大家给看看我的新机子配置怎么样,多谢啦
- 一个简单问题
- 有谁知道哪里有DELPHI5。0下载?
- 忘了调用外部可执行文件的函数了,在线等待。谢谢!
- 东进语音卡8路内线,同时只能1路拨外线??怎么解决??急急急
- 在程序中如何调用AC'97声卡的升降调功能?
- +++++问题一大堆!!+++++
- WebServices中,JAVA服务端的DataHandler类如何与Delphi客户端对应,哪个类或结构?
- 急!大家乱入 image控件保存问题!基本上都要遇到或已经遇到过的问题
a: Integer;
b: Integer;
c: array[0..10] of Char;
end;procedure TForm1.Button2Click(Sender: TObject);
var
t: TTestRec;
buf: array[0..30] of Char;
s, s1: string;
begin
t.a := 10;
t.b := 20;
StrCopy(t.c, PChar('Hello World')); s1 := Format('%d%d%s', [t.a, t.b, t.c]);
wsprintf(buf, PChar(s1));
s := buf;
ShowMessage(s);
end;
你的方法主要用到的是下面这句
s1 := Format('%d%d%s', [t.a, t.b, t.c]);这样,的确是可以达到目的,但是如果还要还原那就麻烦了所以可以改成如下:
s1 := Format'%d,%d,%s',[t.a, t.b, t.c]);
以','字符来分隔之
但这样也有一定的局限性,即t.c中不应包含','字符
那样问题就容易解决多了:类(对象).属性,接收短只要有该类的定义就行了,你用record就不方便了
你的想法, 不不好,
用 string, 很容易出bug,
但也可解决, 用 TStringStream 就可
sm: TStringStream;
begin
t.a := 10;
t.b := 20;
StrCopy(t.c, PChar('Hello World')); sm := TStringStream.Create('');
sm.Write((@t)^, sizeof(TTestRec)); sm.DataString ;// 你要的 sm.Free;
在网络里传对象?用什么方式传?值传递还是指针传递?to Delphityro(不吃腥的猫)
网络里怎么传递结构体指针?
struct A pb;
char *pa;pa = (char *)&a;pb = (struct A*)pa;直接转换 即可 好像delphi不行呢。。
网络里怎么传递结构体指针?
// 当成 字符串传就是 接受的时候进行转换就OK。
和 aiirii(ari-淘金坑)的代码是不是可以这样理解:先把结构体的内存块复制下来,
通过流或字符串的方式进行传递,
收到以后,再用指针指向收到的内存块?
不过Delphi里类型检查比较严格,转换起来恐怕很难啊COM和Webservice里对传递自定义类型都有比较好的办法
建议楼主采用