AGB  ·  Datenschutz  ·  Impressum  







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

Timer zu langsam

Ein Thema von faux · begonnen am 11. Sep 2005 · letzter Beitrag vom 11. Sep 2005
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Timer zu langsam

  Alt 11. Sep 2005, 15:37
Hallo!

Ich habe folgenden Code geschrieben, um alle Möglichkeiten zwischen A und ZZZZZZ zu bekommen:

Code:
[color=blue]char[/color][] valueString;
[color=blue]int[/color] count = 0;
Code:
valueString[count]++;
[color=blue]if[/color] (valueString[count] > [color=darkred]'Z'[/color])
{
  valueString[count] = [color=darkred]'A'[/color];
  [color=blue]if[/color] (count != 0)
    [color=blue]for[/color] ([color=blue]int[/color] i = count - 1; i >= 0; i--)
    {
      valueString[i]++;
      [color=blue]if[/color] (valueString[i] <= [color=darkred]'Z'[/color])
        [color=blue]break[/color];
      else
        valueString[i] = [color=darkred]'A'[/color];
      [color=blue]if[/color] (i == 0)
        count++;
    }
  else
  {
    valueString[0] = [color=darkred]'A'[/color];
    count++;
  }
}
.
Der 2. Teil ist in einem Timer, um eine Ausgabe zu erzeugen, welche ich in einer Schleife nicht hätte.
Jedoch ist das Programm sehr langsam (siehe Anhang). Das Intervall ist jedoch bereits auf 1. Wie kann ich das beschleunigen?
Liegt es am Algorithmus, am Timer oder an etwas anderem?
Ich habe übrigens den System.Windows.Forms.Timer genommen. Wäre der System.Timers.Timer besser?

Danke schon mal.
Grüße
Faux
Angehängte Dateien
Dateityp: exe windowsapplication6_189.exe (20,0 KB, 9x aufgerufen)
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Timer zu langsam

  Alt 11. Sep 2005, 15:42
Zitat von faux:
Der 2. Teil ist in einem Timer, um eine Ausgabe zu erzeugen, welche ich in einer Schleife nicht hätte.
Welches ist bei dir der zweite Teil? Und warum kannst du in einer Schleife nichts ausgeben?

Zitat:
Das Intervall ist jedoch bereits auf 1.
Unter Windows NT ff. hat ein normaler Timer eine maximale Auflösung von 10 ms, unter ConsumerWindows gar nur ca. 40 ms. Ich denke, das wird beim Framework nicht anders sein.

Zitat:
Liegt es am Algorithmus, am Timer oder an etwas anderem?
Warum ein Timer um Gottes Willen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Timer zu langsam

  Alt 11. Sep 2005, 15:49
Wenn ich schreibe
Code:
for (int i = 0; i <= 100; i++)
{
  textBox1.Text += ( i.ToString() );
}
Dann sieht man erst nach Ablauf der Schleife das Ergebnis.


Zitat von Luckie:
Welches ist bei dior der zweite Teil? Und warumn kannst du in einer Schleife nichts ausgeben? Grübelnd...
Ich habe einen kurzen und einen langen Code-Teil gepostet. Der lange ist der zweite Teil.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Timer zu langsam

  Alt 11. Sep 2005, 15:53
Zitat von faux:
Wenn ich schreibe
Code:
for (int i = 0; i <= 100; i++)
{
  textBox1.Text += ( i.ToString() );
}
Dann sieht man erst nach Ablauf der Schleife das Ergebnis.
Das wird daran liegen, dass du deinem Fenster gar nicht die Chance gibst sich selber neu zu zeichnen. Rufe mal nach der Ausgabe das .NET Äquivalent zu TEdit.Refresh oder TEdit.Repaint auf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Timer zu langsam

  Alt 11. Sep 2005, 15:58
Ja, mit Refresh hab ichs auch schon probiert. Geht leider auch nicht.
Jedoch liegts wirklich am Timer.
Ich hab grad eine equivalente Konsolenanwendung dazu geschrieben, jedoch mit einer for-Schleife.
Das funktioniert perfekt.

Ja du hast recht. Es liegt daran, dass sich das Textfeld nicht aktualisieren kann.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Timer zu langsam

  Alt 11. Sep 2005, 16:00
Das muss gehen mit Refresh oder Repaint oder was es da unter .NET eben gibt. So was hab eich noch nie mit eibnem Timer gelöst, geschweigen denn schon mal so gelöst gesehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Timer zu langsam

  Alt 11. Sep 2005, 16:05
Ich wollte es ja auch nur mit einem Timer machen, da ich bei for keine Ausgabe bekam (jetzt weiß ich woran es liegt).

Mit textBox1.Refresh(); gings jetzt (keine Ahnung, wieso es vorher nicht ging. Ich habe es vor der Timer-Möglichkeit ausprobiert...)...

Danke für die Hilfe.

EIne Frage noch:
Ich will einen STOP-Button einbauen. Wie kann ich das realisieren?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Timer zu langsam

  Alt 11. Sep 2005, 16:08
Nimm eine globale boolean Variable bzw. privat für die Klasse: bCancel: Boolean = False; Setze sie mit der Schaltfläche auf True und frag sie in der Schleife ab. Das macht es aber erforderlich, dass das fenster seine Nachrichtenschleife abarbeitet. Du brauchst also ein .NEt Äquivalent zu Application.Processmessages.

Eleganter geht es natürlcih mit Threads. Und es wäre die Frage, ob diese nicht benutzen sollte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Timer zu langsam

  Alt 11. Sep 2005, 16:14
OK, danke.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  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 03:09 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