StrCopy遇#0就结束,如何复制WideChar字符? 本帖最后由 l0v3_y1n9 于 2012-02-07 21:52:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 move遇#0不会结束 但我并不知道数组内的WideChar字符长度是多少 不知道长度就全move了,现在都在为32位系统如何使用8g内存发愁,而你却为几个字节发愁。去看下SysUtils单元,Delphi为了实现管理PChar类型长度,在PChar地址的前面申请了一个字节,表明长度。function StrBufSize(const Str: PChar): Cardinal;var P: PChar;begin P := Str; Dec(P, SizeOf(Cardinal)); Result := Cardinal(Pointer(P)^) - SizeOf(Cardinal);end;function StrAlloc(Size: Cardinal): PChar;begin Inc(Size, SizeOf(Cardinal)); GetMem(Result, Size); Cardinal(Pointer(Result)^) := Size; Inc(Result, SizeOf(Cardinal));end; recvLen就是收到的长度了,直接用move吧 我是要分离数组里面的WideChar字符 并不是为了读全部数组 而是分离数组当中的N个WideChar字符.用StrCopy因为#0导致截断 不知是否是我表达有问题 比如数组内是AnsiChar字符:A B C #0 T E S T #0用StrCopy就可以复制出ABC 然后再偏移+1 又可以复制出TEST 如此循环直到结束但StrCopy不适用于WideChar字符 因为双字节 里面包含#0 我想找能够复制WideChar并且功能类似StrCopy的函数或者方法 Delphi打开关闭exe文件及运行批处理文件 c代码翻译成delphi 代码 线程交互,会不会两个线程同时挂起? 如何将报表打印输出到文件 请问大侠,D7里有没有Tnmpop3,Tnmsmtp 控件? 谁能告诉我一些常用的ADOTable的操作 三喜临门,散分3000庆祝(之九) 一个Delphi爱好者的心声 一个有点难度的问题 一个简单的问题,帮帮忙。 delphi 关于文件管理简单小问题 关于动态创建Frame问题,释放的报错
move遇#0不会结束 但我并不知道数组内的WideChar字符长度是多少
function StrBufSize(const Str: PChar): Cardinal;
var
P: PChar;
begin
P := Str;
Dec(P, SizeOf(Cardinal));
Result := Cardinal(Pointer(P)^) - SizeOf(Cardinal);
end;function StrAlloc(Size: Cardinal): PChar;
begin
Inc(Size, SizeOf(Cardinal));
GetMem(Result, Size);
Cardinal(Pointer(Result)^) := Size;
Inc(Result, SizeOf(Cardinal));
end;
我是要分离数组里面的WideChar字符 并不是为了读全部数组 而是分离数组当中的N个WideChar字符.
用StrCopy因为#0导致截断
比如数组内是AnsiChar字符:
A B C #0 T E S T #0
用StrCopy就可以复制出ABC 然后再偏移+1 又可以复制出TEST 如此循环直到结束但StrCopy不适用于WideChar字符 因为双字节 里面包含#0 我想找能够复制WideChar并且功能类似StrCopy的函数或者方法