AGB  ·  Datenschutz  ·  Impressum  







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

Endlosschleife???

Ein Thema von luzifer · begonnen am 6. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
luzifer

Registriert seit: 7. Aug 2004
19 Beiträge
 
#1

Endlosschleife???

  Alt 6. Dez 2004, 02:13
isch glaube ich werd hier bekloppt! Vielleicht kann hier mal jemand einen Blick drauf werfen. Ich find´s einfach nicht.
Die Schleife läuft immer unendlich. Hab aber doch nur 4 Testdatensätze drin....

Code:
Table1.Active:=true;
   Table1.Open;
   Table1.First;
     while not Table1.Eof DO
       begin
       if Table1Lauf1.Text<Table1Lauf2.Text then
        begin
           Table1.Edit;
           Table1Bestzeit.Text:= Table1Lauf1.Text;
           Table1.Post;
        end;
          Table1.Next;
      end;
Bitte um Hilfe. Ich bin den Quellcode schon 1000mal hoch und runter marschiert und find einfach nicht.
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." Zitat von John Osborne (1929-94)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Endlosschleife???

  Alt 6. Dez 2004, 02:34
Moin,

wieso machst du ein Active:=true und dann ein Open? (das ist doch das Selbe) und dann ein First, nach dem Öffnen ist man immer auf dem ersten Datensatz.

Na gut, das nur nebenbei.

Hast du mal deine IF-Bedingung ausgeklammert? Machst du eventuell etwas im AfterPost-Ereignis?

Kannst ja nochmal mehr schreiben.

MfG
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.345 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Endlosschleife???

  Alt 6. Dez 2004, 07:20
So eine Sache würde ich mit einem Update-SQL-Statement machen. Dann ist die ganze Schleife hinfällig und dürfte auch sehr viel schneller sein.
Das geht mit einem TQuery. Das SQL-Statement dürfte etwa so aussehen:
SQL-Code:
update <Tabellenname>
set Bestzeit = Lauf1
where Lauf1 < Lauf2
Abschließend das Statement mit Query1.ExecSQL ausführen
Peter
  Mit Zitat antworten Zitat
luzifer

Registriert seit: 7. Aug 2004
19 Beiträge
 
#4

Re: Endlosschleife???

  Alt 6. Dez 2004, 17:32
Hallo,

das mit Active und Open, da hab ich nur vergessen einen zu löschen.

Die IF-Bedingung hab ich hier auch schon mal ausgeklammert, bleibt das selbe.
Ich hab das ganze auch schon mit Haltepunkte durchgelaufen macht ja alles soweit richtig, aber die Schleife bleibt beim letzten Datensatz hängen und läuft den letzten Datensatz unendlich mal durch.

Die Schleife brauch ich schon. Die soll ja Datensatz für Datensatz, den jeweils kleineren Wert aus Lauf1 und Lauf2, in Bestzeit eintragen.
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." Zitat von John Osborne (1929-94)
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Endlosschleife???

  Alt 6. Dez 2004, 18:24
Jedenfalls scheinst du nicht der einzigste zu sein, der das Malheur kennt ....

Suche mal per Google nach TTable + Eof.

Und wenn alle Brücken brechen, probiere mal ob - wie auch in der Online-Hilfe vorgeschlagen - die Verwendung von TTable.DisableControls und TTable.EnableControls was bringt.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Endlosschleife???

  Alt 6. Dez 2004, 18:37
Edit, Post und Next innerhalb der Schleife, das ist immer gefährlich. Wo ist der Filepointer vor dem Edt, oder nach dem Post ? Wenn er auf dem letzten Datensatz ist, wo ist er dann nach dem Next ?

Ich vermute, das EOF wird übersprungen und das ergibt dann eben Endlosschleife. Eventuell aber auch nicht immer. Die Konstruktion sieht etwas wackelig aus. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.345 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Endlosschleife???

  Alt 6. Dez 2004, 18:56
Zitat von luzifer:
Die Schleife brauch ich schon. Die soll ja Datensatz für Datensatz, den jeweils kleineren Wert aus Lauf1 und Lauf2, in Bestzeit eintragen.
Das würde mit dem SQL-Statement auch gemacht. Nur benötigst du dann eben die Schleife nicht.
Peter
  Mit Zitat antworten Zitat
luzifer

Registriert seit: 7. Aug 2004
19 Beiträge
 
#8

Re: Endlosschleife???

  Alt 6. Dez 2004, 20:37
Zitat von IngoD7:
Jedenfalls scheinst du nicht der einzigste zu sein, der das Malheur kennt ....

Suche mal per Google nach TTable + Eof.

Und wenn alle Brücken brechen, probiere mal ob - wie auch in der Online-Hilfe vorgeschlagen - die Verwendung von TTable.DisableControls und TTable.EnableControls was bringt.
Danke IngoD7,

mit google schauen war ne gute Idee, hätt ich ja och selber drauf kommen können.
Und zwar hab ich bei Delphi-Source.de was gefunden.

Wen´s interessiert: http://www.delphi-source.de/tutorials/dbteil2/?page=8

Also der Tip mit TTable.DisableControls und TTable.EnableControls war gut. Ich wusst ja nicht das graphische Komponenten da ne Auswirkung drauf haben.

"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." Zitat von John Osborne (1929-94)
  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 12:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz