繰り返しについて


ヨネ  2004-10-17 16:48:15  No: 11418

ヨネです。皆さん  おはようございます
x1=0 x2=100 x3=150 x4=300 x5=850
x1=x1
x1=x2
x1=x3
x1=x4
x1=x5
x1の値をx1〜x5の値にfor 文{繰り返し文}を利用して出きるのでしょうか
方法があるのなら教えてくださいお願いします


TtPIPICH  2004-10-17 18:31:06  No: 11419

配列を使います

var
  Form1: TForm1;
  a:array[0..3] of integer=(100,150,300,850);

 ・
中略

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to length(a)-1 do
ShowMessage(inttostr(a[i]));
end;


ヨネ  2004-10-17 20:11:47  No: 11420

TtPIPICHさん
有難う御座います。
実話  線を描きたいのですが 
X1=0 Y1=0 X2=0 Y2=1000
Line(X1,Y1,X2,Y2)
X1=X2 Y1=Y2 X2=500 Y2=1000
Line(X1,Y1,X2,Y2)
X1=X2 Y1=Y2 X2=500 Y2=0
Line(X1,Y1,X2,Y2)
この用に線を描きたいのですが
これを簡単にしたいのです


jok  2004-10-17 21:29:59  No: 11421

なだか Delphi じゃなくて BASIC の構文みたいな感じですね。
Delphi でそのようなことをするには、TCanvas の Polyline() メソッドを使います。横に 500 はともかく、縦に 1000 はスクリーンからはみ出しそうですけど。

procedure TForm1.Button1Click(Sender: TObject);
var
  points:array[0..3] of TPoint;
begin
  points[0] := Point(0,0);
  points[1] := Point(0,1000);
  points[2] := Point(500,1000);
  points[3] := Point(500,0);
  Canvas.Polyline(points);
end;

蛇足ですが、閉じた多角形の場合は

Canvas.Polygon(points);

を使います。内側は Brush で塗りつぶされます。Canvas.Brush.Style := bsClear;
にすると塗りつぶされません。


ヨネ  2004-10-24 07:49:42  No: 11422

jok さん
有難う御座います。
Delphiで描くのでなく、他の物にデータを送るのです。
X1=0 ;
Y1=0 ;
X2=0 ;
Y2=1000 ;
Line(X1,Y1,X2,Y2) ;
X1=X2 ;
Y1=Y2 ;
X2=500 ;
Y2=1000 ;
Line(X1,Y1,X2,Y2) ;
X1=X2 ;
Y1=Y2 ;
X2=500 ;
Y2=0 ;
Line(X1,Y1,X2,Y2) ;
これを簡単にしたいのです


bob  2004-10-25 19:25:07  No: 11423

jokさんの言うとおり、BASICみたいですね。
やりたいことは、1つ前の終点が、次の始点になるってことですか?

procedure TForm1.Button1Click(Sender: TObject);
const
  LineArray: array[0..3] of TPoint = ((X:0;Y:0),(X:0;Y:100),(X:50;Y:100),(X:50;Y:0));
Var
  I: Integer;
begin
  for i:=Low(LineArray) to High(LineArray) -1 do
  begin
    //始点
    Form1.Canvas.PenPos := LineArray[I];

    //終点
    Form1.Canvas.LineTo(LineArray[I+1].X, LineArray[I+1].Y);
  end;
end;


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

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






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