AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debuggen einer Schleife

Ein Thema von MrMooed · begonnen am 16. Jan 2014 · letzter Beitrag vom 17. Jan 2014
Antwort Antwort
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: Debuggen einer Schleife

  Alt 17. Jan 2014, 12:52
Zitat:
Einmal vor der Schleife gemerkt, reicht
Nur wenn sich der Wert innerhalb der Schleife nicht verändert.
Aber hier weiß ja keiner was Zustand, Zustand.Top oder Without eigentlich machen.
Ja und 'Doch, z.T.': 'Top' liefert den TOS, Zustand ist ein Stack, der lokal definiert, offenbar nicht instantiiert, nicht als Parameter verwendet und somit auch nicht verändert wird.

Falls Codeteile nicht weggelassen wurden.
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Debuggen einer Schleife

  Alt 17. Jan 2014, 14:08
Erst einmal Danke für die vielen Antworten und Entschuldigung meinerseits für die etwas .. wirre Frage.

Das ist ein typisches Einsatzgebiet für FastMM. Das sagt dir im FullDebugMode evtl. sofort wo das Problem liegt.
Ein vorheriger Fehler hatte immer einen Fehler in der FastMM unit ausgelöst, weswegen ich es Test Weise deaktiviert habe - und vergessen es wieder einzubinden.
Nachdem es dann wieder eingeschaltet war, kam nicht mehr das CPU-Fenster, sondern er sprang in eine Methode - die der constructor aufruft.
[..] Falls Codeteile nicht weggelassen wurden.
Naja, Dinge wie die Initialisierung von Variablen habe ich schon weggelassen. Den ganzen Code wollte ich niemandem zumuten

Ziel des ganzen war es jedenfalls, aus einem Zustand (etwa die Stellung auf einem Schachbrett) alle möglichen folge-Zustände zu ermitteln - und die daraus folgenden.
Dem constructor
  • wird ein Array übergeben, dass alle "Spielfiguren" enthällt (außer dem, das bewegt wird)
  • das Feld, welches verändert/ bewegt wurde
  • und der vorherige Zustand
Der Fehler lag letztendlich in der Funktion 'without' - hier sollte ein Array zurückgegeben werden, das alle Elemente außer das gewählte enthällt (Das Feld das bewegt wird).
Delphi-Quellcode:
function without(var aFeldArray: FeldArray1D; aPos: Integer): FeldArray1D;
var
  i, b: Integer;
begin
  SetLength( result,
             High( aFeldArray )
            );
  b := 0;
  for i:=0 to High( aFeldArray ) do
  begin
    if not (i = aPos)
      then begin
        result[b] := aFeldArray[i]; // diese Zeile
        Inc( b ); // mit dieser vertauscht
      end;
  end;
end;
Zitat:
Delphi-Quellcode:
try
  ...
except
  ShowMessage('nichtssagender Text');
end;
Sowas liebe ich immer.
[..]
Obwohl mir die Try-Except (so wie ich sie genutzt habe) nicht viel gebracht haben, werde ich wohl demnächst darauf achten sie vernünftig zu nutzen - danke dafür
Gruß,
MrMooed
"Unsere Luft hat einen Vorteil: Man sieht was man einatmet" - Ein Chinese
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Debuggen einer Schleife

  Alt 17. Jan 2014, 15:26
Nicht obwohl, sondern weil du diese komische Exceptionbehandlung da so reingefriemelt hast, bringt dir das nichts.

Exceptions nur behandeln, wenn ich dafür eine Ausweichmöglichkeit habe.
Einfach nur einen nichtssagenden Text anzeigen ist keine.

Beispiel:

Eine simple Berechnung
Delphi-Quellcode:
function f( const x : Extended ) : Extended;
begin
  Result := 1/x;
end;
Beim Aufruf von y := f(0); wird die Exception Delphi-Referenz durchsuchenEDivByZero ausgelöst.
Na und? Wenn der erfolgreiche Ablauf von dem Wert abhängig ist, dann ist hier wohl ein Fehler passiert und der restliche Ablauf ist somit nicht mehr zu gewährleisten.

Stellen wir uns ein anderes Szenario mit der gleichen Funktion vor.
Die Funktion soll grafisch dargestellt werden. Jetzt ticken die Uhren anders
Delphi-Quellcode:
x := -1;
while x <= 1 do
begin
  try
    y := f( x );
    DrawPoint( x, y );
  except
    on E: EDivByZero do
      NoDataFor( x );
  end;
  x := x + 0.1;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Debuggen einer Schleife

  Alt 17. Jan 2014, 16:33
Nicht obwohl, sondern weil du diese komische Exceptionbehandlung da so reingefriemelt hast, bringt dir das nichts.

Exceptions nur behandeln, wenn ich dafür eine Ausweichmöglichkeit habe.
Einfach nur einen nichtssagenden Text anzeigen ist keine.
Das mir ein solcher "nichtssagender Text" im weiteren Programmverlauf nichts bringt ist mir klar, nur hatte ich vorher das Problem, dass ich nicht die Stelle gefunden habe an der es kracht - und nur dafür sollte der exception-Block her. Aber nun werde ich besser drauf Acht geben
Gruß,
MrMooed
"Unsere Luft hat einen Vorteil: Man sieht was man einatmet" - Ein Chinese
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:42 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