ich habe mal eine Frage.
Ich habe ein Programm Sudoku (vor Jahren) in Delphi geschrieben,
Jetzt habe ich das nach Lazarus portiert.
Die Routine, wo das Sudoku Spiel aufbaut (mit Zufallszahlen)
habe ich 1 zu 1 von Delphi in Lazarus übernommen.
Nun zu meiner Frage.
Diese Routine läuft in Delphi im Sekundenbereich (zwischen 20 bis 300 Sekuneden).
Die gleiche Routine in Lazarus lauft im Minutenbereich (zwischen 5 bis 30 Miniten).
Hat da jemand eine Idee?
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
  var h1: integer;
  var h2: integer;
  var h3: integer;
  var h4: integer;
  var h5: integer;
  var h6: integer;
  var h7: integer;
  var h8: real;
  var h9: real;
  var ha: string;
  var hb: integer;
  var hc: integer;
  var hd: integer;
  var he: integer;
  var hf: integer;
  var hg: real;
  var hh: integer;
  var hi: integer;
  var hj: integer;
  var hk: integer;
  var hl: integer;
  var hm: integer;
  var hn: integer;
  var ho: integer;
  var hq: integer;
  var hr: integer;
  var hs: integer;
  var ht: integer;
  var q1: integer;
  var q2: integer;
  var q3: integer;
  var lla: integer;
  var lla1: integer;
  var zahlen: array[1..9] of integer;
  var hp: array[1..9, 1..3] of integer;
begin
  Label1.Caption:=' '+Chr(169)+'LINSOFT                   S U D O K U                 Date: '+FormatDateTime('DD.MM.YYY',now);
  if (mtasts = 1) then
  begin
    h1:=1;
    if mspiel = 1 then
    begin
      h1:=0;
      JaNein:=messagedlg('Spiel läuft, neu anfangen ?', mtConfirmation, [mbYes, mbNo], 0);
      if (JaNein = mrYes) then
      begin
        feldfarbe:=0;
        mspiel:=0;
        for h2:=1 to 81 do
        begin
          feldnum:=h2;
          Farbsfeld;
          Farbhfeld;
        end;
        h1:=1;
        Form1.Refresh;
        Form1.Repaint;
      end;
    end;
    if h1 = 1 then
    begin
      lla:=1;
      Form1.Cursor:=crHourGlass;
      Form1.Refresh;
      Timer1.Enabled:=False;
      Label2.Caption:='';
      Label9.Caption:='';
      Label10.Caption:='';
      while lla = 1 do
      begin
        Label2.Caption:='Spiel wird aufgebaut, bitte warten.....';
        Label2.Refresh;
        lla1:=0;
        if afeld > 0 then
        begin
          Feldaus;
          feldnum:=afeld;
          feldfarbe:=0;
          Farbhfeld;
          afeld:=0;
        end;
        ialpha:='';
        inummer:=0;
        inumkom:=0;
        ikomma:=0;
        iart:=1;
        izeich:=3;
        istell:=0;
        mlauf:=0;
        mver:=0;
        zfarbe:=0;
        afeld:=0;
        ComboBox1.Enabled:=False;
        spielzeit:=StrToTime('00:00:00');
        for h1:=1 to 81 do
        begin
          orgfeld[h1]:=0;
          loesung[h1]:=0;
          vorgabe[h1]:=0;
          for h2:=1 to 10 do
          begin
            moeglich[h1, h2]:=0;
          end;
        end;
        for h1:=1 to 9 do
        begin
          for h2:=1 to 9 do
          begin
            quadrat[h1, h2]:=0;
            reihe[h1, h2]:=0;
            zeile[h1, h2]:=0;
          end;
        end;
        Bloe;
//        Form1.Refresh;
//        Form1.Repaint;
        Label2.Caption:='Spiel wird aufgebaut, bitte warten.....';
        Label2.Refresh;
        h5:=0;
        h6:=3;
        for h1:=1 to 9 do
        begin
          hc:=0;
          h3:=0;
          hd:=0;
          for h2:=1 to h6 do
          begin
            if h5 < 27 then
            begin
              if hc < h6 then
              begin
                h4:=1;
                while h4 = 1 do
                begin
                  if h3 = 0 then
                  begin
                    Randomize;
                    h3:=Random(10);
                  end;
                  if h3 > 0 then
                  begin
                    if hd = 0 then
                    begin
                      Randomize;
                      hd:=Random(10);
                    end;
                    hb:=0;
                    if hd > 0 then
                    begin
                      he:=0;
                      hf:=0;
                      hj:=0;
                      if h1 = 1 then
                      begin
                        hf:=0;
                        hj:=0;
                      end;
                      if h1 = 2 then
                      begin
                        hf:=1;
                        hj:=0;
                      end;
                      if h1 = 3 then
                      begin
                        hf:=2;
                        hj:=0;
                      end;
                      if h1 = 4 then
                      begin
                        hf:=0;
                        hj:=1;
                      end;
                      if h1 = 5 then
                      begin
                        hf:=1;
                        hj:=1;
                      end;
                      if h1 =6 then
                      begin
                        hf:=2;
                        hj:=1;
                      end;
                      if h1 = 7 then
                      begin
                        hf:=0;
                        hj:=2;
                      end;
                      if h1 = 8 then
                      begin
                        hf:=1;
                        hj:=2;
                      end;
                      if h1 = 9 then
                      begin
                        hf:=2;
                        hj:=2;
                      end;
                      if h3 = 1 then
                      begin
                        he:=0;
                      end;
                      if h3 = 2 then
                      begin
                        he:=0;
                      end;
                      if h3 = 3 then
                      begin
                        he:=0;
                      end;
                      if h3 = 4 then
                      begin
                        he:=1;
                      end;
                      if h3 = 5 then
                      begin
                        he:=1;
                      end;
                      if h3 =6 then
                      begin
                        he:=1;
                      end;
                      if h3 = 7 then
                      begin
                        he:=2;
                      end;
                      if h3 = 8 then
                      begin
                        he:=2;
                      end;
                      if h3 = 9 then
                      begin
                        he:=2;
                      end;
                      hi:=h3 - (he * 3);
                      hb:=(hf * 3) + (he * 9) + hi + (hj * 27);
                      hh:=0;
                      Moeglichkeiten;
                      if hb > 0 then
                      begin
                        hh:=moeglich[hb, 1];
                      end;
                      if hh > 0 then
                      begin
                        hh:=hh + 1;
                        hi:=1;
                        for q1:=2 to hh do
                        begin
                          if moeglich[hb, q1] = hd then
                          begin
                            hi:=0;
                          end;
                          if hi = 1 then
                          begin
                            if hh > 2 then
                            begin
                              hr:=0;
                              while hr < 2 do
                              begin
                                Randomize;
                                hr:=Random(hh);
                              end;
                            end else begin
                              hr:=hh;
                            end;
                            hd:=moeglich[hb, hr];
                          end;
                        end;
                      end;
                      hi:=0;
                      if hb > 0 then
                      begin
                        ffn:=hb;
                        Umrechnungff;
                        hi:=orgfeld[hb];
                        if hi = 0 then
                        begin
                          for hh:=1 to 9 do
                          begin
                            if reihe[rr1, hh] = hd then
                            begin
                              hi:=1;
                            end;
                          end;
                          if hi = 0 then
                          begin
                            for hh:=1 to 9 do
                            begin
                              if zeile[ss1, hh] = hd then
                              begin
                                hi:=1;
                              end;
                            end;
                          end;
                          if hi = 0 then
                          begin
                            for hh:=1 to 9 do
                            begin
                              if quadrat[qq1, hh] = hd then
                              begin
                                hi:=1;
                              end;
                            end;
                          end;
                          if hi = 0 then
                          begin
                            if ((h2 = h6) and (h7 = 0)) then
                            begin
                              orgfeld[hb]:=hd;
                              vorgabe[hb]:=hd;
                              quadrat[qq1, qq2]:=hd;
                              reihe[rr1, rr2]:=hd;
                              zeile[ss1, ss2]:=hd;
                              Moeglichkeiten;
                              ffn:=hb;
                              Umrechnungff;
                              if qq1 = 1 then
                              begin
                                q1:=1;
                                q2:=10;
                                q3:=19;
                              end;
                              if qq1 = 2 then
                              begin
                                q1:=4;
                                q2:=13;
                                q3:=22;
                              end;
                              if qq1 = 3 then
                              begin
                                q1:=7;
                                q2:=16;
                                q3:=25;
                              end;
                              if qq1 = 4 then
                              begin
                                q1:=28;
                                q2:=37;
                                q3:=46;
                              end;
                              if qq1 = 5 then
                              begin
                                q1:=31;
                                q2:=40;
                                q3:=49;
                              end;
                              if qq1 = 6 then
                              begin
                                q1:=34;
                                q2:=43;
                                q3:=52;
                              end;
                              if qq1 = 7 then
                              begin
                                q1:=55;
                                q2:=64;
                                q3:=73;
                              end;
                              if qq1 = 8 then
                              begin
                                q1:=58;
                                q2:=67;
                                q3:=76;
                              end;
                              if qq1 = 9 then
                              begin
                                q1:=61;
                                q2:=70;
                                q3:=79;
                              end;
                              for hk:=1 to 9 do
                              begin
                                zahlen[hk]:=0;
                              end;
                              hk:=moeglich[q1, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q1, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q1:=q1 + 1;
                              hk:=moeglich[q1, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q1, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q1:=q1 + 1;
                              hk:=moeglich[q1, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q1, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              hk:=moeglich[q2, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q2, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q2:=q2 + 1;
                              hk:=moeglich[q2, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q2, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q2:=q2 + 1;
                              hk:=moeglich[q2, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q2, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              hk:=moeglich[q3, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q3, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q3:=q3 + 1;
                              hk:=moeglich[q3, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q3, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              q3:=q3 + 1;
                              hk:=moeglich[q3, 1];
                              if hk = 1 then
                              begin
                                hm:=moeglich[q3, 2];
                                hl:=zahlen[hm];
                                hl:=hl + 1;
                                zahlen[hm]:=hl;
                              end;
                              if hk = 0 then
                              begin
                                h4:=0;
                                lla1:=1;
                                hd:=0;
                                h3:=0;
                                orgfeld[hb]:=0;
                                vorgabe[hb]:=0;
                                quadrat[qq1, qq2]:=0;
                                reihe[rr1, rr2]:=0;
                                zeile[ss1, ss2]:=0;
                              end;
                              for hk:=1 to 9 do
                              begin
                                hl:=zahlen[hk];
                                if hl > 1 then
                                begin
                                  h4:=0;
                                  lla1:=1;
                                  hd:=0;
                                  h3:=0;
                                  orgfeld[hb]:=0;
                                  vorgabe[hb]:=0;
                                  quadrat[qq1, qq2]:=0;
                                  reihe[rr1, rr2]:=0;
                                  zeile[ss1, ss2]:=0;
                                end;
                              end;
                            end;
                            if hd > 0 then
                            begin
                              orgfeld[hb]:=hd;
                              vorgabe[hb]:=hd;
                              loesung[hb]:=hd;
                              quadrat[qq1, qq2]:=hd;
                              reihe[rr1, rr2]:=hd;
                              zeile[ss1, ss2]:=hd;
                              feldnum:=hb;
                              feldwert:=hd;
                              hc:=hc + 1;
                              h5:=h5 + 1;
                              h4:=0;
                            end;
                          end else begin
                            hd:=0;
                          end;
                        end else begin
                          h3:=0;
                        end;
                      end;
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
        lla:=0;
        for h4:= 1 to 9 do
        begin
          h2:=0;
          h3:=0;
          Moeglichkeiten;
          qq1:=h4;
          if qq1 = 1 then
          begin
            q1:=1;
            q2:=10;
            q3:=19;
          end;
          if qq1 = 2 then
          begin
            q1:=4;
            q2:=13;
            q3:=22;
          end;
          if qq1 = 3 then
          begin
            q1:=7;
            q2:=16;
            q3:=25;
          end;
          if qq1 = 4 then
          begin
            q1:=28;
            q2:=37;
            q3:=46;
          end;
          if qq1 = 5 then
          begin
            q1:=31;
            q2:=40;
            q3:=49;
          end;
          if qq1 = 6 then
          begin
            q1:=34;
            q2:=43;
            q3:=52;
          end;
          if qq1 = 7 then
          begin
            q1:=55;
            q2:=64;
            q3:=73;
          end;
          if qq1 = 8 then
          begin
            q1:=58;
            q2:=67;
            q3:=76;
          end;
          if qq1 = 9 then
          begin
            q1:=61;
            q2:=70;
            q3:=79;
          end;
          hn:=0;
          for hk:=1 to 9 do
          begin
            zahlen[hk]:=0;
          end;
          hk:=moeglich[q1, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q1, 2];
            ho:=moeglich[q1, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q1, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q1:=q1 + 1;
          hk:=moeglich[q1, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q1, 2];
            ho:=moeglich[q1, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q1, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q1:=q1 + 1;
          hk:=moeglich[q1, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q1, 2];
            ho:=moeglich[q1, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q1, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          hk:=moeglich[q2, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q2, 2];
            ho:=moeglich[q2, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q2, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q2:=q2 + 1;
          hk:=moeglich[q2, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q2, 2];
            ho:=moeglich[q2, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q2, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q2:=q2 + 1;
          hk:=moeglich[q2, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q2, 2];
            ho:=moeglich[q2, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q2, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          hk:=moeglich[q3, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q3, 2];
            ho:=moeglich[q3, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q3, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q3:=q3 + 1;
          hk:=moeglich[q3, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q3, 2];
            ho:=moeglich[q3, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q3, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          q3:=q3 + 1;
          hk:=moeglich[q3, 1];
          if hk = 2 then
          begin
            hm:=moeglich[q3, 2];
            ho:=moeglich[q3, 3];
            if hn = 0 then
            begin
              hn:=hn + 1;
              hp[hn, 1]:=hm;
              hp[hn, 2]:=ho;
              hp[hn, 3]:=1;
            end else begin
              ht:=0;
              for hq:=1 to hn do
              begin
                hr:=hp[hq, 1];
                hs:=hp[hq, 2];
                if ((hr = hm) and (hs = ho)) then
                begin
                  ht:=1;
                  hs:=hp[hq, 3];
                  hs:=hs + 1;
                  hp[hq, 3]:=hs;
                end;
              end;
              if ht = 0 then
              begin
                hn:=hn + 1;
                hp[hn, 1]:=hm;
                hp[hn, 2]:=ho;
                hp[hn, 3]:=1;
              end;
            end;
          end;
          if hk = 1 then
          begin
            hm:=moeglich[q3, 2];
            hl:=zahlen[hm];
            hl:=hl + 1;
            zahlen[hm]:=hl;
          end;
          if hk = 0 then
          begin
            h2:=q1;
          end;
          for hk:=1 to 9 do
          begin
            hl:=zahlen[hk];
            if hl > 1 then
            begin
              h3:=hk;
            end;
          end;
          if hn > 0 then
          begin
            for hq:=1 to hn do
            begin
              hr:=hp[hq, 3];
              if hr > 2 then
              begin
                  h3:=1;
              end;
            end;
          end;
          if h2 > 0 then
          begin
            lla:=1;
          end;
          if h3 > 0 then
          begin
            lla:=1;
          end;
        end;
        if ((lla1 = 0) and (lla = 0)) then
        begin
          for h4:= 1 to 9 do
          begin
            for hk:=1 to 9 do
            begin
              zahlen[hk]:=1;
            end;
            qq1:=h4;
            if qq1 = 1 then
            begin
              q1:=1;
              q2:=10;
              q3:=19;
            end;
            if qq1 = 2 then
            begin
              q1:=4;
              q2:=13;
              q3:=22;
            end;
            if qq1 = 3 then
            begin
              q1:=7;
              q2:=16;
              q3:=25;
            end;
            if qq1 = 4 then
            begin
              q1:=28;
              q2:=37;
              q3:=46;
            end;
            if qq1 = 5 then
            begin
              q1:=31;
              q2:=40;
              q3:=49;
            end;
            if qq1 = 6 then
            begin
              q1:=34;
              q2:=43;
              q3:=52;
            end;
            if qq1 = 7 then
            begin
              q1:=55;
              q2:=64;
              q3:=73;
            end;
            if qq1 = 8 then
            begin
              q1:=58;
              q2:=67;
              q3:=76;
            end;
            if qq1 = 9 then
            begin
              q1:=61;
              q2:=70;
              q3:=79;
            end;
            hk:=moeglich[q1, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q1, hm];
                zahlen[hn]:=0;
              end;
            end;
            q1:=q1 + 1;
            hk:=moeglich[q1, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q1, hm];
                zahlen[hn]:=0;
              end;
            end;
            q1:=q1 + 1;
            hk:=moeglich[q1, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q1, hm];
                zahlen[hn]:=0;
              end;
            end;
            hk:=moeglich[q2, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q2, hm];
                zahlen[hn]:=0;
              end;
            end;
            q2:=q2 + 1;
            hk:=moeglich[q2, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q2, hm];
                zahlen[hn]:=0;
              end;
            end;
            q2:=q2 + 1;
            hk:=moeglich[q2, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q2, hm];
                zahlen[hn]:=0;
              end;
            end;
            hk:=moeglich[q3, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q3, hm];
                zahlen[hn]:=0;
              end;
            end;
            q3:=q3 + 1;
            hk:=moeglich[q3, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q3, hm];
                zahlen[hn]:=0;
              end;
            end;
            q3:=q3 + 1;
            hk:=moeglich[q3, 1];
            if hk > 0 then
            begin
              ht:=hk + 1;
              for hm:=2 to ht do
              begin
                hn:=moeglich[q3, hm];
                zahlen[hn]:=0;
              end;
            end;
            for hk:=1 to 9 do
            begin
              hn:=zahlen[hk];
              if hn = 1 then
              begin
                lla1:=1;
              end;
            end;
          end;
        end;
        if ((lla = 0) and (lla1 = 0)) then
        begin
          loes:=1;
          Moeglichkeiten;
          for h2:=1 to 81 do
          begin
            horgfeld[h2]:=orgfeld[h2];
            hvorgabe[h2]:=vorgabe[h2];
            for h3:=1 to 10 do
            begin
              hmoeglich[h2, h3]:=moeglich[h2, h3];
            end;
            ffn:=h2;
            Umrechnungff;
            hquadrat[qq1, qq2]:=quadrat[qq1, qq2];
            hreihe[rr1, rr2]:=reihe[rr1, rr2];
            hzeile[ss1, ss2]:=zeile[ss1, ss2];
          end;
          h4:=1;
          while h4 = 1 do
          begin
            loes:=1;
            Moeglichkeiten;
            h5:=0;
            h7:=0;
            for h2:=1 to 81 do
            begin
              h6:=orgfeld[h2];
              h3:=loesung[h2];
              if h6 = 0 then
              begin
                h7:=h7 + 1;
                if h3 > 0 then
                begin
                  ffn:=h2;
                  Umrechnungff;
                  orgfeld[h2]:=h3;
                  quadrat[qq1, qq2]:=h3;
                  reihe[rr1, rr2]:=h3;
                  zeile[ss1, ss2]:=h3;
                  h5:=h5 + 1;
                end;
              end;
            end;
            if h5 = 0 then
            begin
              h4:=0;
              if h7 > 0 then
              begin
                lla1:=1;
              end else begin
                for h2:=1 to 81 do
                begin
                  orgfeld[h2]:=horgfeld[h2];
                  vorgabe[h2]:=hvorgabe[h2];
                  for h3:=1 to 10 do
                  begin
                    moeglich[h2, h3]:=hmoeglich[h2, h3];
                  end;
                  ffn:=h2;
                  Umrechnungff;
                  quadrat[qq1, qq2]:=hquadrat[qq1, qq2];
                  reihe[rr1, rr2]:=hreihe[rr1, rr2];
                  zeile[ss1, ss2]:=hzeile[ss1, ss2];
                end;
                if anzvor <> 27 then
                begin
                  if anzvor > 27 then
                  begin
                    h6:=anzvor - 27;
                    h4:=1;
                  end else begin
                    h6:=27 - anzvor;
                    h4:=2;
                  end;
                  while h6 > 0 do
                  begin
                    Randomize;
                    h3:=Random(82);
                    if h3 > 0 then
                    begin
                      if h4 = 1 then
                      begin
                        h5:=orgfeld[h3];
                        if h5 = 0 then
                        begin
                          h5:=loesung[h3];
                          orgfeld[h3]:=h5;
                          vorgabe[h3]:=h5;
                          ffn:=h3;
                          Umrechnungff;
                          quadrat[qq1, qq2]:=h5;
                          reihe[rr1, rr2]:=h5;
                          zeile[ss1, ss2]:=h5;
                          h6:=h6 - 1;
                        end;
                      end else begin
                        h5:=orgfeld[h3];
                        if h5 > 0 then
                        begin
                          h5:=0;
                          orgfeld[h3]:=h5;
                          vorgabe[h3]:=h5;
                          ffn:=h3;
                          Umrechnungff;
                          quadrat[qq1, qq2]:=h5;
                          reihe[rr1, rr2]:=h5;
                          zeile[ss1, ss2]:=h5;
                          h6:=h6 - 1;
                        end;
                      end;
                    end;
                  end;
                  h4:=0;
                  Moeglichkeiten;
                end;
              end;
            end;
          end;
        end;
        if ((lla = 0) and (lla1 = 1)) then
        begin
          lla:=1;
        end;
      end;
      Label2.Caption:='';
      Label2.Refresh;
      for h1:=1 to 81 do
      begin
        h2:=orgfeld[h1];
        if h2 > 0 then
        begin
          feldnum:=h1;
          feldfarbe:=1;
          Farbsfeld;
          feldwert:=h2;
          Anzfeld;
        end;
      end;
      Moeglichkeiten;
      mspiel:=1;
      Timer1.Enabled:=True;
      Form1.Cursor:=crDefault;
//      Form1.Refresh;
    end;
    Form1.Refresh;
    Form1.Repaint;
  end;
end;
Jürgen









 
  Verein
Verein 
 Links
Links Suche
Suche