PCharについて

解決


るるとん@K  2004-05-22 00:10:58  No: 9085  IP: [192.*.*.*]

PCharってCharのポインタ版ですよね?
なんでCharに文字列は代入できないのに、ポインタ型のPCharではできるんですか?

編集    削除
るるとん@K  2004-05-22 00:12:46  No: 9086  IP: [192.*.*.*]

分かりました
PCharは勝手に#0までの配列になってくれるわけですね

編集    削除
jok  2004-05-22 03:21:01  No: 9087  IP: [192.*.*.*]

> PCharは勝手に#0までの配列になってくれるわけですね

違います。string 型の変数がポインタだからです。

編集    削除
るるとん@K  2004-05-23 01:12:38  No: 9088  IP: [192.*.*.*]

そうなんですか
ではPStringとPCharの違いは何なのでしょうか?

編集    削除
るるとん@K  2004-05-23 03:06:45  No: 9089  IP: [192.*.*.*]

題名とずれますが、以下のソースでエラーがでるのはなんででしょうか?
PStringをNewしてそれをIntegerにしてInttoStrしたものをパラメータの2番目にし、Shellなんとかでアプリを呼び出します。
↓呼び出される側のソース
var
Cont:PString;
PI:Integer;
begin
//略
PI:=StrToInt(ParamStr(2));
Cont:=Pointer(PI);//エラー場所
ShowMessage(Cont^);
Dispose(Cont);
//略
end;
何故でしょうか?
自分で試せば良いいのですが、メモリがなくなってくるので..

編集    削除
ふぐちゃん  2004-05-23 04:16:12  No: 9090  IP: [192.*.*.*]

> PStringをNewしてそれをIntegerにしてInttoStrしたものをパラメータの2番目にし、
> Shellなんとかでアプリを呼び出します。
「Shellなんとか」はShellExecuteかShellExecuteExのことだと思いますが、
別プロセスにいきなりアドレスを渡すことはできません。
プロセス間通信について勉強されるとよいでしょう。
面白いですよ。

> ではPStringとPCharの違いは何なのでしょうか?
ヘルプの「文字列から PChar への変換」以降が参考になると思います。

編集    削除
るるとん@K  2004-05-23 05:19:25  No: 9091  IP: [192.*.*.*]

調べたら色々分かりそうです
有り難うございましたn(_ _)n

編集    削除