Q&A

  • 랜덤으로 추첨을 하는 방법좀 갈쳐주세요..
Table 에있는 데이타로 랜덤으로 처리하여,버튼을 눌렀을때 추첨하려합니다.



var

i:Integer;

begin

Randomize;

i:=Random(Form2.Point_Table.RecordCount);

Form2.Point_Table.MoveBy(i);

Edit1.Text:=Form2.Point_Table.fieldbyname('name').Asstring;

Edit2.Text:=Form2.Point_Table.Fieldbyname('Tel').Asstring;

end;



이렇게하면, Table에 있는 레코드의 마지막 자료만 계속 보여지고있습니다.

제대로돼지않아서 편지합니다.

델파이를 배우고 있는 사람이라서 자세히 가르침을 주시면, 감사하겠습니다.



2  COMMENTS
  • Profile
    Black}{ole 2000.07.19 22:56
    wing wrote:

    > Table 에있는 데이타로 랜덤으로 처리하여,버튼을 눌렀을때 추첨하려합니다.

    >

    > var

    > i:Integer;

    > begin

    > Randomize;

    > i:=Random(Form2.Point_Table.RecordCount);

    > Form2.Point_Table.MoveBy(i);

    > Edit1.Text:=Form2.Point_Table.fieldbyname('name').Asstring;

    > Edit2.Text:=Form2.Point_Table.Fieldbyname('Tel').Asstring;

    > end;

    >

    > 이렇게하면, Table에 있는 레코드의 마지막 자료만 계속 보여지고있습니다.

    > 제대로돼지않아서 편지합니다.

    > 델파이를 배우고 있는 사람이라서 자세히 가르침을 주시면, 감사하겠습니다.

    >



    참고하세요.

    procedure TForm1.Button1Click(Sender:TObject);

    begin

    Table1.First;

    Table1.MoveBy(Random(Table1.RecordCount));

    end;



  • Profile
    임형호 2000.07.19 22:50
    wing wrote:

    > Table 에있는 데이타로 랜덤으로 처리하여,버튼을 눌렀을때 추첨하려합니다.

    >

    > var

    > i:Integer;

    > begin

    > Randomize;

    > i:=Random(Form2.Point_Table.RecordCount);

    > Form2.Point_Table.MoveBy(i);

    > Edit1.Text:=Form2.Point_Table.fieldbyname('name').Asstring;

    > Edit2.Text:=Form2.Point_Table.Fieldbyname('Tel').Asstring;

    > end;

    >

    > 이렇게하면, Table에 있는 레코드의 마지막 자료만 계속 보여지고있습니다.

    > 제대로돼지않아서 편지합니다.

    > 델파이를 배우고 있는 사람이라서 자세히 가르침을 주시면, 감사하겠습니다.



    위에서 moveby 함수는 현재레코드의 위치에서 입력한 값만큼 옮겨집니다. 즉 random함수로 5를 발생시켰을 경우 처음에는 5번째 레코드로 가겠지만 그다음에 4가 발생하면 4번째 레코드가 아닌 9번째 레코드로 옮겨집니다. 왜냐면... 위에서 5번을 옮겨서 현재 위치가 그곳이 되어있으니까요. 그리고 나서 마지막 레코드까지 위치하면 그다음부터는아무리 난수를발생시켜도 그자리가 되겠죠. 더이상 옮겨갈데가 없으니까요.

    제가 테스트를 해보니까...음... form2.point_table.moveby(i); 문장앞에 form2.point_table.first를 기입해서 처음위치로 옮겨주는것이 나을듯 싶네요.

    위에서 i 값에 의해 해당 record번호로 옮겨주는 명령어는 잘 모르겠네요. 본것도 같은데 기억이 없군요.

    다른방법도 있을겁니다. 참고로 moveby(5) 하면 현재위치에서 5칸이 옮겨집니다. 그리고 moveby(-5)하면 거꾸로 5칸이 옮겨지죠.

    >