![]() |
Re: Sekunden an einen Timer übergeben
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)
Delphi-Quellcode:
dann den code von mir, vom post davor...
dec(sekunde);//oder sekunde:=sekunde-1;
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 :mrgreen: |
Re: Sekunden an einen Timer übergeben
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 |
Re: Sekunden an einen Timer übergeben
Hai Tavik,
mir ist noch immer nicht ganz klar was Du machen möchtest :oops: Möchtest Du einen Countdown der von einer von Dir festgelegten Zeit auf 0 zählt und dieses anzeigen? |
Re: Sekunden an einen Timer übergeben
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. |
Re: Sekunden an einen Timer übergeben
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:
--> eingegeben werden: vorhandene Rohstoffe, Benötigte Rohstoffe und die anzahl der Erzeugten rohstoffe pro stunde! alles wird auf sekunden runtergerechnet,
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. 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 |
Re: Sekunden an einen Timer übergeben
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} |
Re: Sekunden an einen Timer übergeben
so:
Delphi-Quellcode:
also den berechnungs/ausgabecode einfach nur umkopieren!!!
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; jetzt isses zwar so, das die anzeige erst 1 sek nach buttonclick geupdated wird, aber das machste jetzt selber!!! |
Re: Sekunden an einen Timer übergeben
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: Sekunden an einen Timer übergeben
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) |
Re: Sekunden an einen Timer übergeben
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:
ich verzweifele, und du auch!
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. 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! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz