文字列と charの配列の違い


通行人  2013-08-01 22:48:35  No: 44949

buf: array[1..16] of Char;
  for j := 1 to 16 do buf[j] := Chr( Random(26)+97 );

  buf を
  buf :string[16];
と宣言すると、意図した操作になりません。なぜですか?


Harry  2013-08-02 02:09:56  No: 44950

「意図した操作」を説明しないと、質問として成り立たないですよー。
Delphiのバージョンもお忘れなく書いてくださいね。


けど  2013-08-02 07:00:10  No: 44951

聞きたいのは

//OK
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: array[1..16] of Char;
  j:integer;
  S:string;
begin
  for j := 1 to 16 do buf[j] := Chr( Random(26)+97 );
  S:=buf;
  Memo1.Lines.Add(S);
end;
//NG
procedure TForm1.Button2Click(Sender: TObject);
var
  buf :string[16];
  j:integer;
  S:string;
begin
  for j := 1 to 16 do
  begin
    S:= Chr( Random(26)+97 );
    buf[j]:=S[1];
  end;
  S:=buf;
  Memo1.Lines.Add(S);
end;
//OK
procedure TForm1.Button3Click(Sender: TObject);
var
  buf: string[16];
  j:integer;
  S:string;
begin
  for j := 1 to 16 do buf[j] := Chr( Random(26)+97 );
  for j := 1 to 16 do
    S:=S+buf[j];
  Memo1.Lines.Add(S);
end;
ってことかな?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加