喫茶XRAYトップページ

[スレッド全体
]

[13140] Re2:Delphi 雑感返信 削除
2019/11/16 (土) 14:30:59 Mr.XRAY
> C の char がポインタ型だからと,Delphi で

Delphi だと変数を宣言する時の変数の型の部分 (右側) で決まりますが,
C の場合は「型と変数名」で決まります.

char a       1 バイトの文字の変数
char b[10]   10 バイトの文字列の変数
char c[]      文字列の変数
char *d       ポインタ型の文字列の変数

文字列の最後は Null 終端文字でなければなりません.
ただし,文字列を代入する時にダブルクォーテーションを使用すると,自動的に
Null 終端文字を追加してくれます.
C++ には string 型という文字列の型があります.

PChar 型は Null 終端文字列のポインタ型です.つまり,上の
    char *d
と同じです.
char に P がついていますが,
Char (1 文字の変数型) のポインタ型ではありません.
が,PChar を Char (1 文字) のポインタという見方をすると,
文字列の先頭アドレス (1 文字目のアドレス) という見方もできなくはない ?
かも知れません.

また,変数をポインタ型の変数として使用する際,

  var
   LpValue : ^TAnyType;

のような使用方法はお勧めできません.ポインタ型を宣言して使用した方がいいでしょう.

type
  PAnyType = ^TAnyType;
var
  LpValue : PAnyType;


[13142] Re3:Delphi 雑感返信 削除
2019/11/16 (土) 23:11:09 Mr.XRAY
> PChar 型は Null 終端文字列のポインタ型です.つまり,上の
>     char *d
> と同じです.



まっ,その,あれです.以下のような記事だとこんなくどい説明なしに,
簡単に「素直な移植」で「ベタ移植」なんですけどね.

[ [Delphi] 構造体と文字列とポインタ ]
https://qiita.com/ht_deko/items/87aee1c7aee75aba90a2

char *str;

str: PChar;
となっているわけですから,素直に受け入れてもらいたいですね.

# 先に提示したページは Delphi 4 時代のものです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82