AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi procedure abbrechen bzw. warum läuft sie weiter? ^^
Thema durchsuchen
Ansicht
Themen-Optionen

procedure abbrechen bzw. warum läuft sie weiter? ^^

Ein Thema von Olga · begonnen am 30. Apr 2010 · letzter Beitrag vom 1. Mai 2010
 
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: procedure abbrechen bzw. warum läuft sie weiter? ^^

  Alt 30. Apr 2010, 19:45
Zitat von Olga:
bisher hatte es halt gereicht, das ICH weiß was da steht^^
Anscheinend weißt du es ja eben nicht, sonst wüsstest du, wo das Problem liegt.

Ich habe eben mal versucht, den Code im Kopf durchzugehen, bin aber zu keinem Ergebnis gekommen, weil ich durch den Spaghetticode nicht durchblicke. Was mir aber aufgefallen ist, sind aber immer wieder ähnliche Muster, z.B.:
Delphi-Quellcode:
      Reihe(b,c);
      if e = 1 then
      Spalte(b,c);
      if e = 1 then
      Kasten(b,c);
      if e = 1 then
      begin
        Positionsarray[Nr-1,0] := INr;
        Nr := Nr+1;
        INr := 0;
        Richtung := 1;
        BackTracking(Nr,INr);
      end;
    if e <> 1 then
    begin
Warum fragst du den Wert von e hier vier mal direkt hintereinander ab? Fasse sowas zusammen, denn solcher Code ist (insbesondere durch die irreführende Einrückung) unleserlich und verwirrend.
Delphi-Quellcode:
    Reihe(b,c);
    if e = 1 then
    begin
      Spalte(b,c);
      Kasten(b,c);
      Positionsarray[Nr-1,0] := INr;
      Nr := Nr+1;
      INr := 0;
      Richtung := 1;
      BackTracking(Nr,INr);
    end
    else
    begin
      ...
Ebenfalls irreführend ist sowas:
Delphi-Quellcode:
    if Moeglichkeitenarray[Nr-1,0] <> 0 then
    sudokuarray[b,c] := 0;
    Nr := Nr-1;
    INr := (Positionsarray[Nr-1,0])+1;
    Richtung := 0;
    Backtracking(Nr,INr);
Auf den ersten Blick könnte man vermuten, dass alle diese Zeile von der Bedigung abhängig sind. Tatsächlich ist es aber nur die erste, die anderen werden immer ausgeführt.

Usw...

Rücke deinen Code ordentlich ein, fasse so weit wie möglich zusammen, und lagere redundante Codeteile in Subroutinen aus - glaub mir, es lohnt sich. Und ich wette, dass dir der Fehler sofort in die Augen springt, wenn du den Code mal ordentlich strukurierst.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz