喫茶XRAYトップページ

[▲前のスレッド]

[11966] Char型の配列とNull文字返信 削除
2018/6/21 (木) 17:11:11 Mr.XRAY
以下を追加しました.

[01_Char 型の文字配列の要素数と文字数と Null 文字]
http://mrxray.on.coocan.jp/Delphi/Others/StringPChar_Char.htm#01


[11967] Char型の配列の初期化間違えていました返信 削除
2018/6/22 (金) 18:35:23 Mr.XRAY
本当にゴメンナさい.
Char 型の動的配列の初期化のコード,間違えていました.
Pointer を使用する説明を書いておこう思ってコードを眺めていて気づきました.
みんな私が悪いんです.みんな私のせいなんです.

//=============================================================================
//  Char型の動的配列の初期化の確認
//  正しいコード
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
  LString  : String;
  LpBuffer : TCharArray;
  LText    : string;
  LIndex   : Integer;
begin
  Memo1.Lines.Clear;

  LString  := '日本語 ABC';
  LpBuffer := LString.ToCharArray;

  FillChar(Pointer(LpBuffer)^, Length(LpBuffer) * SizeOf(Char), #0);

  for LIndex := 0 to Length(LpBuffer) - 1 do begin
    LText := IntToStr(LIndex) + ' : ' + LpBuffer[LIndex];
    Memo1.Lines.Add(LText);
  end;
end;

//=============================================================================
//  Char型の動的配列の初期化の確認
//  FillChar関数の使用方法が間違っているコード
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LString  : String;
  LpBuffer : TCharArray;
  LText    : string;
  LIndex   : Integer;
begin
  Memo1.Lines.Clear;

  LString  := '日本語 ABC';
  LpBuffer := LString.ToCharArray;

  FillChar(Pointer(LpBuffer)^, SizeOf(LpBuffer), #0);

  for LIndex := 0 to Length(LpBuffer) - 1 do begin
    LText := IntToStr(LIndex) + ' : ' + LpBuffer[LIndex];
    Memo1.Lines.Add(LText);
  end;
end;




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