一个关于PChar类型的问题(50分)

  • 主题发起人 主题发起人 guifuli
  • 开始时间 开始时间
G

guifuli

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:
function X(p: pchar): Integer;
var
i: Integer;
A: array[0..$FF] of Char;
begin
Result := -1;
for i := 0 to $FF do
A := Char(i);
//use A do something,if Failure then Exit
p := A;
Result := 0;
end;

procedure y;
var
B: array[0..$FF] of Char;
begin
FillChar(B, $100, #0);
if X(B) = 0 then //这里调用上面的函数X,如果为真返回B的值也就是函数X中A,
//但是当A的第一个字节为#0时无法返回,请教诸位大侠怎样返回
//这个指针的值(类型必须用pchar)
//use B do something;
end;
 
to XWHope:
不行!
 
你的做法有問題;
A: array[0..$FF] of Char;
為一局部變量, 函數 X 捃行完就變成不确定的內區了, 可能存在, 也可能被其它變量占用了, 而p為指針, 指向 A, 這樣的編寫方法是有問題的!
你的代碼, 傳個 B 數組, 好象又沒對B操作???
 
不能直接实现的,Pchar是以#0为结束符的,必须回避
 
to Aiirii:
请给出正确的做法,谢谢!!!
 
function X(p: pchar): Integer;
var
i: Integer;
A: array[0..$FF] of Char;
begin
Result := -1;
for i := 0 to $FF do
A := Char(i);
//use A do something,if Failure then Exit
for i := 0 to $FF do
p := A;
Result := 0;
end;
 
按照weiwei81123兄的做法可行了,请问还有没有其它的方法!
谢谢!!!
 
傻了,应该用
Move(A[0], p^, 256);
 
谢谢weiwei81123兄.
 

Similar threads

S
回复
0
查看
705
SUNSTONE的Delphi笔记
S
S
回复
0
查看
699
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部