Copy関数について

解決


紅玉  2008-02-29 23:15:13  No: 29963

お世話になります。

(環境:DELPHI6 Personal、XP Pro)

とんでもない勘違いをしているような気もするのですが、なぜだか解らないので質問させてください。

新規フォームにエディットボックスを2つ、ラベルを1つ、ボタンを1つ置いて
ボタンのOnClickに下記のコードを書きます。
(テストなのでとりあえず、エラーチェックも何もなしですが)

procedure TForm1.Button1Click(Sender: TObject);
begin
   Label1.Caption := Copy(Edit1.Text, StrToIntDef(Edit2.Text, 0), 1);
end;

例えば、Edit1に'ABCDE'と入れて、Edit2に'0'と入れて、ボタンを押すと
Labelに'A'と表示されます。
次にEdit2に'1'と入れても、なぜか'A'と表示されます。
'2'を入れれば'B'が表示されます。

元々このような仕様ではないと思うのですが、原因がさっぱりわかりません。

どなたかお分かりになる方、教えてください。
よろしくお願いいたします。


もにゃ  2008-02-29 23:29:16  No: 29964

文字列ポインタは1からですよー。
0入れちゃだめです。


紅玉  2008-02-29 23:39:17  No: 29965

>もにゃさん
なっ!なんですって!
あー、馬鹿ですね、私。

でも、'0'でも表示されるのは何故なんだろう。
てっきり「範囲エラー」みたいなのが出ると思ってました。

ともかく、ありがとうございました。


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

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






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