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 2 von 3     12 3      
Benutzerbild von glkgereon
glkgereon

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

Re: Sekunden an einen Timer übergeben

  Alt 29. Aug 2004, 21:15
also

du gehst bei den komponenten in die kategorie system...
da is ne uhr, der TTimer
den klotzt du auf deine form (den sieht man nachher eh nicht)
du stellst bei dem das intervall auf 1000 (ms=1 sekunde)
du stellst enabled auf false (dies bewirkt das er nicht sofort losläuft...)
nun machst du einen doppelklick drauf, du landest im quelltext, in einer procedure namens Timer1onTimer (oder so ähnlich)
da tust du rein: dec(sekunde)

dec(sekunde);//oder sekunde:=sekunde-1; dann den code von mir, vom post davor...

nun sagst du, nachdem du die variable sekunden eingelesen hast einfach Timer1.Enabled:=true;

und das wärs

EDIT mist, zu langsam, aber ich war genauer
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tavik

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 16:50
hallo! problem noch nicht gelöst!


ich bin jetzt soweit, dass sowohl stunde (h), minute (m) als auch sekunde(s)
mit integerwerten belegt sind. dank der bisherigen hilfe kann ich jetzt das ganze auch als vernünftige zeitangabe wiedergeben


Edit4.Text:= inttostr(h)+':'+inttostr(m)+':'+inttostr(s);

jetzt möchte ich aber, dass diese Zeitangabe auch timermäßig läuft!

also nicht nur die sekunden abgezählt werden, sondern alle stellen entsprechend einem echten Timer runterlaufen!


danke im voraus für eure hilfe
sascha
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
 
#13

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 16:55
Hai Tavik,

mir ist noch immer nicht ganz klar was Du machen möchtest
Möchtest Du einen Countdown der von einer von Dir festgelegten Zeit auf 0 zählt und dieses anzeigen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#14

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 17:43
Das hat doch glkbkk sehr schön erklärt.
Erst sorst du mit dec(Sekunde) dafür, dass die Sekunden um 1 erniedrigt werden, dann lässt du den geposteten wieder ausführen und gibt's alles wieder aus.

Kontrollier vielleicht noch, ob die ausgegebenen Werte 2-stellig sind und bau vielleicht noch eine führende Null ein.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Tavik

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 20:06
ah! jetzt verstehe ich! ihr ändert die werte schon so weit oben im quelltext! alles klar!

was ich jetzt nicht verstehe, ich habe jetzt 2 Prozeduren:
eine OnChange, die abläuft wenn alle Eingaben aus Drei Edits getätigt wurden und ich habe einen Disableden Timer!

wie bringe ich jetzt beide zusammen...hier mal mein kompletter quelltext

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    GroupBox3: TGroupBox;
    Edit2: TEdit;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    Edit4: TEdit;
    Button1: TButton;
    Timer1: TTimer;
    procedure Edit3Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);


  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  vorhanden, prostunde, benoetigt, fehlend:real;
  zeitstunden :real;
  zeitsekunden:integer;
  h,m,s:integer;
implementation

{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
dec(zeitsekunden);
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
Timer1.Enabled:=true;
vorhanden:= strtofloat(Edit1.Text);
prostunde:= strtofloat(Edit2.Text);
benoetigt:= strtofloat(Edit3.Text);

fehlend:= benoetigt - vorhanden;
zeitstunden:= fehlend / prostunde;
zeitsekunden:= round(zeitstunden * 3600);



h:= zeitsekunden div (60 * 60);
zeitsekunden:= zeitsekunden - h*60*60;
m:= zeitsekunden div 60;
zeitsekunden:= zeitsekunden - m*60;
s:= zeitsekunden;

Edit4.Text:= 'h: '+inttostr(h)+' min: '+inttostr(m)+' sec: '+inttostr(s);

end;
end.
--> eingegeben werden: vorhandene Rohstoffe, Benötigte Rohstoffe und die anzahl der Erzeugten rohstoffe pro stunde! alles wird auf sekunden runtergerechnet,
dann wir eine Umrechnung in Stunden, Minuten und Sekunden abgegeben!

nun will ich die dec(zeitsekunden) so einflechten, dass auch tatsächlich runtergezählt wird! aber wie verbinde ich diese beiden Prozeduren?


danke für eure geduld mit mir!

sascha
Ich bin ein Noob und das ist auch gut so!
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#16

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 20:34
Im Timer wird bisher nur Sekunden dekrementiert und nischt weiter. Du müsstest das ganze Zeug aus dem Onchange (ausser Timer1.enabled) in den Timer schreiben. Am Besten schreibst du dir eine Funktion, der du die ganzen Variablen übergibst und die dir dann den Zeit-String [12:22:05] zurückgibt. Die kannst du dann auch in den OnChanges und im TImer aufrufen.

{Überprüfst du auch, ob man in den Edits keinen Müll wie Buchstaben eingeben kann? Sonst gibt's unschöne Fehlermeldungen}
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 20:42
so:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
dec(zeitsekunden);
vorhanden:= strtofloat(Edit1.Text);
prostunde:= strtofloat(Edit2.Text);
benoetigt:= strtofloat(Edit3.Text);

fehlend:= benoetigt - vorhanden;
zeitstunden:= fehlend / prostunde;
zeitsekunden:= round(zeitstunden * 3600);

h:= zeitsekunden div (60 * 60);
zeitsekunden:= zeitsekunden - h*60*60;
m:= zeitsekunden div 60;
zeitsekunden:= zeitsekunden - m*60;
s:= zeitsekunden;

Edit4.Text:= 'h: '+inttostr(h)+' min: '+inttostr(m)+' sec: '+inttostr(s);
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
Timer1.Enabled:=true;
end;
also den berechnungs/ausgabecode einfach nur umkopieren!!!
jetzt isses zwar so, das die anzeige erst 1 sek nach buttonclick geupdated wird, aber das machste jetzt selber!!!
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tavik

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 21:28
ich bin am verzweifeln!

jetzt habt ihr mir schon den source gegeben und das prog will einfach nicht laufen.

der timer läuft einfach nicht an!

kommt es zur überschneidung von dec(zeitsekunde) und der definition durch zeitstunde welches wiederum durch feste werte gegeben ist?

ich hab das projekt jetzt beigefügt...
vielleicht hat ja nochmal glkbkk die musse!


vielen dank
sascha
Angehängte Dateien
Dateityp: zip projekt_166.zip (10,1 KB, 4x aufgerufen)
Ich bin ein Noob und das ist auch gut so!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 22:24
bei mir funzt es...

AABBEERR

MACH DA EINEN BUTTON REIN
WELCHER ARME USER SOLL DEN AHNEN DAS ES 1 SEKUNDE NACH ÄNDERUNGEN IN EDIT§ ZU EINER FEHLERMELDUNG KOMMT WEIL ER NICHT SCHNELL GENUG GETIPPT HAT
*schüttel armen tavik bis er button hinmacht und brüll in dabei an*

(sorry fürs anbrüllen)
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tavik

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

Re: Sekunden an einen Timer übergeben

  Alt 30. Aug 2004, 22:39
ja aber wohin? dat läuft immernoch nicht! selbst wenn ich jetzt den Timer mit Button1 starte
kommen mit meinen eingabeweten 0,3600,3600 zwar die ein stunde, aber die fängt nicht an zu laufen!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    GroupBox3: TGroupBox;
    Edit2: TEdit;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    Edit4: TEdit;
    Timer1: TTimer;
    Button1: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  vorhanden, prostunde, benoetigt, fehlend:real;
  zeitstunden :real;
  zeitsekunden:integer;
  h,m,s:integer;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
dec(zeitsekunden);
vorhanden:= strtofloat(Edit1.Text);
prostunde:= strtofloat(Edit2.Text);
benoetigt:= strtofloat(Edit3.Text);

fehlend:= benoetigt - vorhanden;
zeitstunden:= fehlend / prostunde;
zeitsekunden:= round(zeitstunden * 3600);

h:= zeitsekunden div (60 * 60);
zeitsekunden:= zeitsekunden - h*60*60;
m:= zeitsekunden div 60;
zeitsekunden:= zeitsekunden - m*60;
s:= zeitsekunden;

Edit4.Text:= 'h: '+inttostr(h)+' min: '+inttostr(m)+' sec: '+inttostr(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

end.
ich verzweifele, und du auch!
mach dem bitte ein Ende und erklär es einem NOOOOOOOOB wie mir ausführlich! wohin mit dem Button?
gruss
sascha


erklär mir doch der einfachkeit halber mal das prinzip der prozeduren und wie sie sich gegenseitig beeinflussen können!
Ich bin ein Noob und das ist auch gut so!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:41 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