喫茶XRAYトップページ

[スレッド全体
]

[12725] Null文字の判定返信 削除
2019/4/18 (木) 08:34:37 Mr.XRAY
こんなところで許していただけるでしようか.

procedure TForm1.Button1Click(Sender: TObject);
var
  LNull : string;
begin
  Memo1.Lines.Clear;

  LNull := #0;
  if LNull = Null then begin
    // 定数 Null は Variant 型なのでここは実行されない
    Memo1.Lines.Add('LNull is Null');
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  LNull : OleVariant;
begin
  Memo1.Lines.Clear;

  LNull := Null;
  if LNull = Null then begin
    // これは実行される
    Memo1.Lines.Add('LNull is Null');
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  LText  : string;
  LIndex : Integer;
  LPChar : PChar;
begin
  Memo1.Lines.Clear;

  // Null 終端文字列 (PChar 型) の Null 文字はこの文字を意味する
  // 定数名の Null とは違うので注意
  LText := 'ABC' + #0 + 'XYZ';
  for LIndex := 1 to Length(LText) do begin
    if LText[LIndex] = #0 then begin
      Memo1.Lines.Add('null');
    end else begin
      Memo1.Lines.Add(LText[LIndex]);
    end;
  end;

  LPChar := PChar(LText);
  Memo1.Lines.Add(LPChar);
end;




[12726] Re:Null文字の判定返信 削除
2019/4/18 (木) 08:42:54 Mr.XRAY
で,こういうコードだと

procedure TForm1.Button1Click(Sender: TObject);
var
  LNull : string;
begin
  Memo1.Lines.Clear;

  LNull := Null;
  if LNull = Null then begin
    Memo1.Lines.Add('LNull is Null');
  end;
end;

下図のように例外となる
ともかく,いろいろやってみることです.
Null 文字が #0 だということを知らないと... それはですね...どうもならんです.
LNull := '';
は Null 文字ではありません.文字がないのです.
Null 文字は一応「文字」です.

つまりです.Null 文字の判定はどうしたらいいのか ?
ではなく,Null 文字のコードポイント (文字コード) は何ですか ? ですね.
えっ !? 文字コードって何ですか? ですか ?
おとつい来てください.



[12727] Re2:Null文字の判定返信 削除
2019/4/18 (木) 09:03:38 Mr.XRAY
> ではなく,Null 文字のコードポイント (文字コード) は何ですか ? ですね.
> えっ !? 文字コードって何ですか? ですか ?


これ書いてて思ったのですが,
文字には各々の文字に対応した値,数値,バイナリ値があるということを
理解していない方がいるんですね.きっと.だから

「テキストをバイナリ値で保存するには」

という質問があるのかも知れません.
そういう方にはコードページとかコードポイントという話は通じないのかも知れません.


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