AGB  ·  Datenschutz  ·  Impressum  







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

Sekunden an einen Timer übergeben

Ein Thema von Tavik · begonnen am 29. Aug 2004 · letzter Beitrag vom 31. Aug 2004
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#21

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 23:09
hmm, bei den eingabewerten hab ich auch einen fehler...moment

nein, ich will einfach das der timer nicht OnEdit3Change aktiviert wird sondern wenn der user aufn button klickt...

ahh, hier:
Delphi-Quellcode:
vorhanden:= strtofloat(Edit1.Text);
prostunde:= strtofloat(Edit2.Text);
benoetigt:= strtofloat(Edit3.Text);

dec(zeitsekunden);//runterzählen

fehlend:= benoetigt - vorhanden;
zeitstunden:= fehlend / prostunde;
zeitsekunden:= round(zeitstunden * 3600);//und dann wieder auf festen wert setzen
du musst das noch reintuen:

vorhanden:=vorhanden+round((zeitsekundenold-zeitsekunden)*prostunde/3600); nee, klappt auch nicht...

argghhh!!!

erst decrementierst du die zeitsekunden und dann sagst du
Delphi-Quellcode:
h:= zeitsekunden div (60 * 60);
zeitsekunden:= zeitsekunden - h*60*60;
m:= zeitsekunden div 60;
zeitsekunden:= zeitsekunden - m*60;
s:= zeitsekunden;
ich mach das mal neu...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#22

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 23:23
also, ich hab das mal etwas anders gelöst, nebenbei noch ne fehler-abfrage gemacht, es sollte jetzt klappen:

Delphi-Quellcode:
var
  Form1: TForm1;//erst mal hab ich deine globalen variablen gelichtet
  vorhanden, prostunde, benoetigt:double;
  laufzeit:integer;
implementation

{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var
  h, m, s, sekunden:integer;
  fehlend:double; //dafür lokale...
begin
inc(laufzeit); //wie lange läuft es schon?
vorhanden:=laufzeit*prostunde/3600; //wieviel is nach der zeit da
fehlend:=benoetigt-vorhanden; //wieviel fehlt dann noch
sekunden:=round((fehlend)/prostunde*3600);//soviel zeit fehlt noch

h:= sekunden div (60 * 60); //deine berechnung
sekunden:= sekunden - h*60*60;
m:= sekunden div 60;
sekunden:= sekunden - m*60;
s:= sekunden;

Edit4.Text:= 'h: '+inttostr(h)+' min: '+inttostr(m)+' sec: '+inttostr(s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin //auf buttonklick
try
  vorhanden:= strtofloat(Edit1.Text); //einlesen
  prostunde:= strtofloat(Edit2.Text);
  benoetigt:= strtofloat(Edit3.Text);
  Timer1.Enabled:=true; //timer enablen
except //wenns fehler gibt (zahl flsch drin oder so)
  Application.MessageBox('Da Stimmt aber eine Zahl nicht...','Oops...');
end;
end;
und ich versteh immer noch nicht was das prog macht...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tavik

Registriert seit: 29. Aug 2004
10 Beiträge
 
#23

Re: Sekunden an einen Timer übergeben

  Alt 31. Aug 2004, 05:59
folge diesem Link und melde dich an, dann verstehst du was los ist!


http://ds80-237-205-38.dedicated.hos....php?ref=cMzrb



wenn dir das Spiel spaß macht komm zur BUC! wir sind zwar klein, aber wir spielen nur aus Spaß an der Freunde.
Das Programm erleichtert dort die Planung der Baueinsätze!

schwer zu erklären....probier es einfach aus!


vielen vielen Dank nochmal!
tavik
Ich bin ein Noob und das ist auch gut so!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Sekunden an einen Timer übergeben

  Alt 31. Aug 2004, 07:34
Hai Tavik,

auch wenn es mir nicht gesagt wird sehe ich das so das Du einen Countdown anzeigen möchtest?
Warum dafür nicht mit der Systemzeit arbeiten?
Hier mal mein Ansatz. Er benötigt:
1 x Timer
1 x Button
3 x Edit
2 x Label
Delphi-Quellcode:
var
  stunden : Integer;
  minuten : Integer;
  sekunden : Integer;
  startzeit : TTime;
  countdown : TTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := False;
  Timer1.Interval := 25;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  stunden := StrToInt (Edit1.Text);
  minuten := StrToInt (Edit2.Text);
  sekunden := StrToInt (Edit3.Text);
  countdown := EncodeTime (stunden,minuten,sekunden,0);
  startzeit := Now;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := TimeToStr (now); // Echzeit
  Label2.Caption := TimeToStr (countdown - (now-startzeit)); // Mein Countdown
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Tavik

Registriert seit: 29. Aug 2004
10 Beiträge
 
#25

Re: Sekunden an einen Timer übergeben

  Alt 31. Aug 2004, 14:40
hi glkbkk


leider haben deine veränderungen auch einen nachteil!
die variable benötigt hat keinen einfluss mehr auf den timer!
er zählt nur runter wie lange gebraucht wird um die rohstoffe zusammenzusparen wenn nix da ist!

gib mal ein:

vorhanden: 30
pro stunde: 60
benoetigt: 30

der timer sollte jetzt null anzeigen! da ich genügend rohstoffe zusammenhab, aber leider fängt er bei einer halben stunde an!

hast du vielleicht die rettende idee?


gruss
sascha
Angehängte Dateien
Dateityp: zip hochlade.zip (10,4 KB, 2x aufgerufen)
Ich bin ein Noob und das ist auch gut so!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 16:13 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