TartalomFriss hozzászólások
Új fórum témákAktív fórum témákGoogle hirdetések |
nyelvoktató program
petka1985, 2008, szeptember 28 - 19:52
Készítettem egy adatbázison alapuló német-magyar szótárprogramot, aminek a keresőrésze már működik is, de szeretnék készíteni egy másik Form-on egy szókikérdező funkciót is: Eddig működik is, csak az az egy problémám van, hogy mindig ugyanazokat a szavakat kérdezi, és ha elér az utolsó listában szereplő szóhoz, akkor ott véget is ér. Pedig én Random módon szeretném, hogy bármely szót kérdezzen bármikor. Az adatbázisom(vocabulary.dbf) így épül fel a Tanuljunk könnyen gyorsan németül című könyv alapján: A szóban forgó Unit eddigi felépítése: unit Unit2; interface uses type var implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); end; procedure TForm2.Edit2Click(Sender: TObject); procedure TForm2.Button2Click(Sender: TObject); until Button3.Cancel; procedure TForm2.Button3Click(Sender: TObject); end. Szerintem a MoveBy metódussal lehet némi probléma, de persze az is lehet, hogy az egésszel... Régen tanultam. Ha valakinek van kedve bogarászni, hogy hol lehet a probléma, légyszi segítsen. :) Szeretném megkönnyíteni a szótanulást magamnak. petka85 »
|
KeresésBelépésIndex TechPC FórumOrigo TechbázisSG.hu |
Szerintem a probléma az, hogy...
Szia Petka85,
Így első löketre azt látom, szerintem az a baj, hogy a Button2Click-ben nem dobsz újra random-ot. Az is nagyon fontos, hogy a randomize eljárást egyetlen egyszer hívd a programodban! A Form1 OnCreate eseményébe rakd bele!
Nem használtam soha ezt a MoveBy-t, ami nem jelenti azt, hogy Te ne használd. Ezt a
Table1.Locate('HUNGARIAN','*',[]);dolgot nem nagyon értem hogy miért kell, mert szerintem a * jel miatt rá fog állni az első elemre mindig.A MoveBy-nak lesz még egy baja: ha eléri a tábla végét, odaragad. Jó lenne elölről kezdeni ekkor. Csinálj egy procedure-t:
procedure Mozgat(pDelta : Integer) ;
var i : integer ;
begin
for i := 0 to pDelta do begin
if Not Table1.Eof then
Table1.Next
else
Table1.First ;
end ;
end ;
És amikor el kell mozgatni, meghívod így:
Mozgat(Trunc(Random(Table1.RecordCount))) ;
Még arra figyelj, hogy a Random szintaktikája szerint vissza tud nullát is adni. Ekkor ugyanazt a szót fogja adni, mint ami előbb volt, hiszen nem mozgattad semerre. Ezt oldd meg magadtól, menni fog!
De ezt akkor is hívd meg, amikor kitalált vagy nem talált ki egy szót! Na mit szólsz?
Menyus
Én régen írtam egy lottó
Én régen írtam egy lottó sorsoló programot, Win98 alatt teljesen jól működött, de XP-alatt mindig ugyanazokat a számokat adta ki (négy- öt variációt). Szerintem az XP máshogy generálja a randomszámokat...
Üdv.: Totó