AGB  ·  Datenschutz  ·  Impressum  







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

in turbo pascal

Ein Thema von Mick · begonnen am 7. Apr 2003 · letzter Beitrag vom 8. Apr 2003
Antwort Antwort
Mick

Registriert seit: 31. Dez 2002
47 Beiträge
 
Delphi 6 Personal
 
#1

in turbo pascal

  Alt 7. Apr 2003, 18:48
hi,

habe in turbo pascal eine übung gemacht, mit gettime und settime. klappt von der theorie auch
gibt nur das problem das beim ausführen der *.exe die cpu an die decke geht...

hier glaub ich ist das Problem?
Zitat:
settime(h,m,s1,hun1);

warte:=random(30)+10; {zufällige wartezeit ermitteln}

repeat
gettime(h,m,s2,hun2);
until (s1+warte)=s2;
weiß es aber nicht genau...

wenn es hilft kann ich den source hier hinterlegen.
Angehängte Dateien
Dateityp: pas aufg27d.pas (1,8 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 7. Apr 2003, 19:35
Zitat:
(s1+warte)=s2;
Da setzt du aber eine sehr genaue Zeitmessung voraus. Was passiert, wenn s1+waret einfach den Wert s2 überspringt? Ein >= ist sicherlich besser.
  Mit Zitat antworten Zitat
Mick

Registriert seit: 31. Dez 2002
47 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 7. Apr 2003, 19:52
stimmt da hast du recht.

Zitat:
Da setzt du aber eine sehr genaue Zeitmessung voraus. Was passiert, wenn s1+waret einfach den Wert s2 überspringt? Ein >= ist sicherlich besser.

nur warum geht die cpu hoch bis an die 100% ?

was könnte ich den falsch gemacht haben?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4
  Alt 7. Apr 2003, 20:05
klarer Fall für Endlosschleife. Und die CPU ist dann damit beschäftigt in die Unendlichkeit zu segeln.
Gruß
Hansa
  Mit Zitat antworten Zitat
Mick

Registriert seit: 31. Dez 2002
47 Beiträge
 
Delphi 6 Personal
 
#5
  Alt 7. Apr 2003, 20:09
ist es die stelle?
kannst du mir kurz sagen was/wo sch.... ist?
bzw. warum.
Zitat von Hansa:
klarer Fall für Endlosschleife. Und die CPU ist dann damit beschäftigt in die Unendlichkeit zu segeln.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6
  Alt 7. Apr 2003, 20:15
ohhh, random (30) heißt, der Maximalwert ist 30 und plus 10 dann sinds 40. Danach passiert doch nichts mehr. Dann ist die Zeit längst rum. Ja und dann versucht die CPU die unendlichkeit zu berechnen.
Gruß
Hansa
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#7
  Alt 7. Apr 2003, 20:44
Hallo,

die CPU geht deshalb auf 100% weil Du sie voll damit auslastest, so schnell wie sie kann immer wieder die Zeit abzufragen. Unter DOS (Turbo Pascal) war das auch OK, was soll die CPU da auch anderes machen.

Gruss
Wolfgang
  Mit Zitat antworten Zitat
arnoldo

Registriert seit: 8. Dez 2002
Ort: Berlin
131 Beiträge
 
Delphi 7 Personal
 
#8
  Alt 7. Apr 2003, 22:19
Hallo,

ich denke es liegt am folgenden:

was passiert wenn beispielsweise s1=49 sekunden und warte=12
ist? Dann wäre s1+warte > 60s und somit eine Endlosschleife!
Da s2 nie > 60 sein kann!

Das müsste klappen:

Code:
s3:=s1+warte;
if s3>59 then dec(s3,60);
repeat
 gettime(h,m,s2,hun2);
until s3=s2;
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#9
  Alt 8. Apr 2003, 19:39
Hallo,

du mußt hier zwei Dinge auseinanderhalten, nämlich die Gefahr einer Endlosschleife, und die CPU-Auslastung während die Schleife läuft, also hier folgendes:

Um die Endlosschleife zu vermeiden, mußt Du auf jeden Fall (in deinem ersten Posting, )

(s1+warte)=s2

ersetzen durch

(s1+warte) >= s2

Während die Schleife läuft wird die CPU aber immer auf volle Auslastung gehen,woher soll die Anwendung denn wissen, daß sie diese Schleife nicht so schnell wie möglich durchlaufen soll.

Bei einer echten Turbo Pascal (DOS) Anwendung ist das auch in Ordnung.
Bei einer Windowsanwendung würde man das Problem anders lösen.

Gruss
Wolfgang
  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:01 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