これは、81 個の TEdit-s (MyEdit[bx,by,x,y]) の処理された onchange プロシージャであり、動的に作成され、4 次元の塊にグループ化されます。今のところ、1 桁のみを受け入れるように Edits をプログラムしようとしています。「数字のみ」の部分は正常に動作しますが、「1 桁のみ」の部分は Access Violation Error (AVE) になります。コード:
procedure TForm1.OnHandleChange(Sender: TObject);
var
bx,by,x,y,len : Integer;
begin
bx:=(sender as TEdit).tag div 1000;
by:=(sender as TEdit).tag div 100-10*bx;
x:=(sender as TEdit).tag div 10-100*bx-10*by;
y:=(sender as TEdit).tag-bx*1000-by*100-x*10;
{*The line below gives the error*}
if not (MyEdit[bx,by,x,y].text[1] in ['1'..'9']) then MyEdit[bx,by,x,y].text:='';
MyEdit[bx,by,x,y].SelStart:=length(MyEdit[bx, by, x,y].text);
if length(MyEdit[bx, by, x,y].text) >1
then MyEdit[bx,by,x,y].text:=MyEdit[bx,by,x,y].text[2];
end;
AVEがありますが、プログラムは実行され動作します。数字の代わりに文字を入力するたびに、エラーが発生し、[OK] をクリックすると、プログラムが機能します。しかし、そのエラーを取り除く必要があります。何か方法はありますか?