Új hozzászólás Aktív témák

  • atom87

    aktív tag

    Üdv!

    Kellene egy kis segítség:

    Adott egy tömb, ami véletlen szerűen generált számokat tartalmaz. Ezek a számok egy tábla rekordjainak sorszámai lennének. A feladat az lenne, hogy a fő táblából(ami minden rekordot tartalmaz) át kéne mozgatni(batchmove) egy másodlagos('munka') táblába a tömbben található sorszámoknak megfelelő rekordokat fő táblából a másodlagosba...

    Korábban a program működött set of 1..255 változóval(ebbe kerültek bele a véletlen generált sorszámok, csak ugye a set az sorba rendeződik, így a véletlenszerűség elúszik):

    procedure TKerdesForm.keresminden;
    var i,j,k,l,m:integer;
    szam:set of 1..255;
    begin
    torles;
    randomize;
    i:=StrToInt(edtkerdesszam.text);
    edtkerdesszam.clear;
    j:=foform.tblalap.recordcount;
    szam:=[];
    for k:= 1 to i do
    begin
    repeat
    l:=random(j)+1;
    until not(l in szam);
    szam:=szam+[l];
    foform.tblalap.setkey;
    foform.tblalap.fields[0].asinteger:=l;
    foform.tblalap.gotokey;
    foform.tblmunka.insert;
    for m:= 0 to foform.tblmunka.fieldcount-1 do
    foform.tblmunka.fields
    :=foform.tblalap.fields(m);
    foform.tblmunka.post;
    end;
    foform.tblmunka.first;
    kerdesform.close;
    end;

    Megcsináltam tömbösre, a sorszámok le is generálódnak, de valahol a setkey környékén meghal a progi:

    procedure TKerdesForm.keresminden;
    var i,j,k,l,m,n:integer;
    szamok:TSzamok;
    begin
    n:=0;
    torles;
    randomize;
    i:=StrToInt(edtkerdesszam.text);
    edtkerdesszam.clear;
    j:=foform.tblalap.recordcount;
    // szam:=[];
    TombNullaz(szamok);
    for k:= 1 to i do
    begin
    repeat
    l:=random(j)+1;
    // until not(l in szam);
    until not (TombBenneVan(szamok,l));
    szamok[n]:=l;
    foform.tblalap.SetKey;
    foform.tblalap.fields[0].asinteger:=l;
    foform.tblalap.gotokey;
    foform.tblmunka.insert;
    for m:= 0 to foform.tblmunka.fieldcount-1 do
    foform.tblmunka.fields(m):=foform.tblalap.fields(m);
    foform.tblmunka.post;
    n:=n+1;
    end;
    foform.tblmunka.first;
    kerdesform.close;
    end;

    Ötlet esetleg??

Új hozzászólás Aktív témák

Hirdetés