如何给 记录的 char数组成员 赋值 ?

chinawcs 2008-07-05 09:54:13
_HTTP_DISK_INFORMATION=record
Address :ULONG;
Port : Word;
HostNameLength :Word;
HostName :array[0..MAX_PATH -1] of Char;
FileNameLength :Word;
FileName :array[0..MAX_PATH -1] of char; //Char;
end;
HTTP_DISK_INFORMATION=_HTTP_DISK_INFORMATION;
PHTTP_DISK_INFORMATION=^HTTP_DISK_INFORMATION;


给里面的 FileName,HostName赋值

如把 string 字符串 赋值给 里面的 char 数组 ?
...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinawcs 2008-07-07
  • 打赏
  • 举报
回复
给结构体 赋值后 如何查看各变量 值 呢
type
_HTTP_DISK_INFORMATION = record
Address: ULONG;
Port: USHORT;
HostNameLength: USHORT;
HostName: array[0..256 - 1] of UCHAR;
FileNameLength: USHORT;
FileName: array[0..0] of UCHAR; // 这里需要 越界 赋值
end;
HTTP_DISK_INFORMATION = _HTTP_DISK_INFORMATION;
PHTTP_DISK_INFORMATION = ^HTTP_DISK_INFORMATION;
.................
deviceinfo: PHTTP_DISK_INFORMATION;
..............
hn := '124.0.0.1';
fn := '/bookcd0/20080619113626.iso';


//try
GetMem(deviceinfo, SizeOf(ULong) + SizeOf(USHORT) + SizeOf(USHORT) + 256 + SizeOf(USHORT) + length(27));

deviceinfo^.Address := 16777340;
deviceinfo^.Port := 20480;

deviceinfo^.HostNameLength := 9;
deviceinfo^.FileNameLength := 27;

FillChar(deviceinfo^.HostName, Length(HostName), #0);
Move(hn[1], deviceinfo^.HostName, Length(hn));

//这里是 越界赋值
for i := 0 to length(fn) - 1 do
begin
deviceinfo^.FileName[i] := fn[i + 1];
end;
老之 2008-07-05
  • 打赏
  • 举报
回复
指针要分配内存,刚刚测试了一下

var
deviceinfo: PHTTP_DISK_INFORMATION;
s: string;
begin
GetMem(deviceinfo, SizeOf(deviceinfo));
s := 'abcdefg';
deviceinfo^.Address := 123;
deviceinfo^.Port := 3;
deviceinfo^.HostNameLength := 10;
FillChar(deviceinfo^.FileName, MAX_PATH -1, #0);
Move(s[1], deviceinfo^.FileName[0], Length(s));
ShowMessage(deviceinfo^.FileName);
//...
FreeMem(deviceinfo);
end;
chinawcs 2008-07-05
  • 打赏
  • 举报
回复
PHTTP_DISK_INFORMATION 是个指针

指针我不太懂 是不是要分配内存 ?

chinawcs 2008-07-05
  • 打赏
  • 举报
回复
是 给 记录里的 char 数组 赋值

var deviceinfo: PHTTP_DISK_INFORMATION;

FillChar(deviceinfo.HostName, MAX_PATH - 1, #0);
Move(hn[1], deviceinfo.HostName[0], Length(hn));

运行到这 报内存错误


JeffChung 2008-07-05
  • 打赏
  • 举报
回复
var
s:string;

s := 'asdfsdfsdfsasdf';
SetLength(s, MAX_PATH);
StrCopy(@HostName, s);
老之 2008-07-05
  • 打赏
  • 举报
回复
var
s: string;

FillChar(HostName, MAX_PATH - 1, #0);
Move(s[1], HostName[0], Length(s));
五哥 2008-07-05
  • 打赏
  • 举报
回复
str : string ;
str := '0123456' ;
str[0] //=0 ;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧