打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
StringsToPCharArray PCharArrayToStrings FreePCharArray
function StringsToPCharArray(var Dest: PPSTR; const Source: TStrings): PPSTR;
var
  i:    Integer;
  s:    string;
  list: array of PChar;
begin                 
  Dest  := AllocMem((Source.Count + 1) * SizeOf(PChar)); // one more for an extra nil pointer
  SetLength(List, Source.Count + 1);
  for i := 0 to Source.Count - 1 do
  begin
    s := Source[i];
    list[i] := StrAlloc(Length(s) + 1);
    StrPCopy(list[i], s);
  end;
  list[Source.Count] := nil;
  Move(list[0], Dest^, (Source.Count + 1) * SizeOf(PChar));
  Result := Dest;
end;

procedure PCharArrayToStrings(const Dest: TStrings; const Source: PPSTR; const Count: Integer);
var
  i:    Integer;
  list: array of PChar;
begin
  SetLength(list, Count);
  Move(Source^, list[0], Count * SizeOf(PChar));
  Dest.Clear;
  for i := 0 to Count - 1 do
    Dest.Add(List[i]);
end;

procedure FreePCharArray(var Dest: PPSTR; const Count: Integer);
var
  i:    Integer;
  list: array of PChar;
begin
  SetLength(list, Count);
  Move(Dest^, list[0], Count * SizeOf(PChar));
  for i := 0 to Count - 1 do
    StrDispose(list[i]);
  FreeMem(Dest, (Count + 1) * SizeOf(PChar));
  Dest := nil;
end;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于delphi Move函数的用法
Lazarus?中文汉字解决方案
Delphi复制自身自我复制
Delphi中文件流的使用方法
TMS320c64x+ DSP IDMA 控制器
memcpy和memmove函数的实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服