现在的位置: 首页 > 综合 > 正文

string,pchar,array of char之间的转化(转贴)

2013年07月19日 ⁄ 综合 ⁄ 共 1048字 ⁄ 字号 评论关闭

string,pchar,array of char之间的转化2009-07-09 10:15设有以下三个变量:
var
s:string;
p:pchar;
a:array[1..20] of char;
那么三者之间的转换如下:
1、字符串到PChar
    p:=PChar(s);
2、PChar到字符串
    s:=p;
3、PChar到字符数组
    StrCopy(@a,p);
4、字符数组到PChar
    PChar(@a);
5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子:
procedure TForm1.btn1Click(Sender: TObject);
var
str:array[1..10] of char;
begin
StrCopy(@str,PChar(mmo1.Text));
mmo2.Text:=PChar(@str);
end;
 

 StrCopy, StrCat example

 

procedure TForm1.Button1Click(Sender: TObject);

var
  Buffer: PChar;
begin
  GetMem(Buffer,Length(Label1.Caption) + Length(Edit1.Text) + 1);
  StrCopy(Buffer, PChar(Label1.Caption));
  StrCat(Buffer, PChar(Edit1.Text));
  Label1.Caption := Buffer;
  Edit1.Clear;
  FreeMem(Buffer);
end;

 

另外当把Pointer型转换为字符串时,用PChar()就行:

procedure TForm1.commReceiveData(Sender: TObject; Buffer: Pointer;
    BufferLength: Word);
var
  sbuf,hexstr:string;
  buf:array of byte;
  i:integer;
begin
  sbuf:='';
  sbuf:=PChar(Buffer);
  buf:=Buffer;
 
  hexstr:='';
  for i:=0 to BufferLength-1 do
    hexstr:=hexstr+IntToHex(Buf[i],2)+' ';
  if cbHex.Checked then
    memLog.Text:=memLog.Text+hexstr
  else
    memLog.Text:=memLog.Text+sbuf;
end;

抱歉!评论已关闭.