如何将PCHAR里的字符依次取出来?

intuition444 2003-09-29 02:19:24
在PCHAR类型的变量里有N个字符,如何将一个个他们取出来?我用COPY(),提示我类型不兼容。
另外,PCHAR里可能有ascii码为0的字符,这样的字符我也要取出来,并以integer类型显示,谁知道怎么做。

例如,一个pchar类型变量指向的字符串中含有的字符是'A','B','','5','3'.
我要得到的是其所对应的ascii值,即65,66,0,53,51。
...全文
39 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
netwizard 2003-09-30
  • 打赏
  • 举报
回复
上述代码有错误,FreeMem会导致异常。
比较好的方法是上面几位朋友提到的。
hiflower 2003-09-30
  • 打赏
  • 举报
回复
var
p:PChar;
x:array of Integer;

SetLength(x,N);
for i:=0 to N-1 do
begin
x[i]:=Ord(p^);
Inc(p);
end;

netwizard 2003-09-29
  • 打赏
  • 举报
回复
var
P: PChar;
I, J: Integer;
begin
I := 10;
GetMem(P, I);
P := '1234567890';
J := 1;
while J <= I do
begin
ShowMessage(P^);
Inc(P);
Inc(J);
end;
FreeMem(P)
end;

Hehe,算法多多。
jinkang 2003-09-29
  • 打赏
  • 举报
回复
VAR
S : STRING;
I : INTEGER;
BEGIN
//YOUR_PCHAR_VAR为pchar类型,转化为delphi类型的string
S := strpas(YOUR_PCHAR_VAR);
FOR I := 1 TO LENGTH(S) - 1 DO
BEGIN
SHOWMESSAGE(INTTOSTR(ORD(S[I])));
END;
END;
tigerhohoo 2003-09-29
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
s : string;
p : pChar;
begin
p := strAlloc(100);
for i:=0 to 99 do
begin
p[i] := Char(i);
Memo1.Lines.Add(IntToStr(Integer(p[i])))
end;
strDispose(p);
end;
FrameSniper 2003-09-29
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2314/2314397.xml?temp=.967663
jacky_shen 2003-09-29
  • 打赏
  • 举报
回复
type
TDymArray = array of Byte;

procedure ReadByte(Addr, Count: Integer; var DymArray: TDymArray);
var
I: Integer;
begin
SetLength(DymArray, Count);
for I := 0 to Count - 1 do
DymArray[I] := PByte(Addr + I)^;
end;


procedure TForm1.Button6Click(Sender: TObject);
var
S: string;
I: Integer;
MyArray: TDymArray;
begin
S := Copy('1234ABCD', 1, 8);
ReadByte(Integer(S), 8, MyArray); <----
for I := 0 to Length(MyArray) - 1 do
Memo1.Lines.Add(IntToStr(MyArray[I]));
end;

procedure ReadByte(Addr, Count: Integer; var DymArray: TDymArray);
Addr是地址(指的是内存中地址)
Count读取多少长度(内存中连续的Count个地址)。
DymArray是存放取到的内容。

箭头指的这句你也可以设置长度为20。
比如你说的,你知道你的内容是'A','B','','5','3'。
那指要设置Addr的地址是'A'的地址,长度为5那就可以取道你要的内容(65,66,0,53,51)
tw_cshn 2003-09-29
  • 打赏
  • 举报
回复
A PChar is a pointer to a null-terminated string
如果包含了ascii就认为结束了
kylincn 2003-09-29
  • 打赏
  • 举报
回复
VAR
S : STRING;
I : INTEGER;
BEGIN
S := STRING(YOUR_PCHAR_VAR);
FOR I := 1 TO LENGTH(S) - 1 DO
BEGIN
SHOWMESSAGE(INTTOSTR(ORD(S[I])));
END;
END;

5,379

社区成员

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

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