![]() |
Mit Delphi Alter berechnen
Hallo,
ich habe hier eine Aufgabe, komme aber nicht richitg damit zurecht: -In einem Formular soll man das Alter in einer Edit-Komponente angeben können. Anschließend wird das Alter in Tage,Stunden,Minuten und Sekunden umgerechnet und auf dem Formular ausgegeben. Kann mit vielleicht jemand dabei helfen wie man das am besten macht? Ich habe schon mal angefangen, komme aber nicht weiter...in dem Abteil "begin" ist etwas falsch..aber was? was soll ich da anderst machen udn warum? so sieht es bei mir aus:
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
unit uAlter;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrmAlter = class(TForm) Label1: TLabel; EdtAlter: TEdit; Label2: TLabel; EdtTage: TEdit; EdtStunden: TEdit; EdtMinuten: TEdit; EdtSekunden: TEdit; LblTage: TLabel; LblStunden: TLabel; LblMinuten: TLabel; LblSekunden: TLabel; BtnAlter: TButton; procedure BtnAlterClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var FrmAlter: TFrmAlter; implementation {$R *.dfm} procedure TFrmAlter.BtnAlterClick(Sender: TObject); var tag,stu,min,sek:integer; begin Tage:=StrToInt(EdtTage.Text)*365; Stunden:=StrToInt(EdtStunden.Text)*8760; Minuten:=StrToInt(EdtMinuten.Text)*525600; Sekunden:=StrToInt(EdtSekunden.Text)*31536000; Tage:=IntToStr(EdtTage.Text); Stunden:=IntToStr(EdtStunden.Text); Minuten:=IntToStr(EdtMinuten.Text); Sekunden:=IntToStr(EdtSekunden.Text); end; end. |
Re: Mit Delphi Alter berechnen
Schau dir mal
DateUtils.YearsBetween() an |
Re: Mit Delphi Alter berechnen
ok hab ich, aber mit den beiträgen der anderen kann ich kaum was anfangen, weil die iwie anders aufgebaut sind als meins.
|
Re: Mit Delphi Alter berechnen
Du meinst wahrscheinlich
Delphi-Quellcode:
EdtTage.Text:=IntToStr(Tage;
EdtStunden.Text):=IntToStr(Stunden; EdtMinuten.Text:=IntToStr(Minuten); EdtSekunden.Text:=IntToStr(Sekunden); Gruß K-H |
Re: Mit Delphi Alter berechnen
[quote="Funnygirly"]
Delphi-Quellcode:
Versucht du hier nicht irgendwie eine Stringvariable auf eine Integer zu packen?
Tage:=IntToStr(EdtTage.Text);
Stunden:=IntToStr(EdtStunden.Text); Minuten:=IntToStr(EdtMinuten.Text); Sekunden:=IntToStr(EdtSekunden.Text); Wenn ich das richtig verstanden habe, dann gibst du ja das Alter in einem Edit in Jahren ein und möchtest dann das Ergebnis in Tagen, Stunden, Minuten, ... in anderen Edits auf Knopfdruck erzeugen. versuchmal Folgendes:
Delphi-Quellcode:
Die Umrechnungsfaktoren beziehen sich nämlich immer auf das Jahr.
procedure TFrmAlter.BtnAlterClick(Sender: TObject);
var tag,stu,min,sek:integer; begin {Tage:=StrToInt(EdtTage.Text)*365; Stunden:=StrToInt(EdtStunden.Text)*8760; Minuten:=StrToInt(EdtMinuten.Text)*525600; Sekunden:=StrToInt(EdtSekunden.Text)*31536000;} EdtTage.Text := inttostr(strtoint(EdtJahre.text)*365))); EdtStunden.Text := inttostr(strtoint(EdtJahre.text)*8760))); EdtMinuten.Text := inttostr(strtoint(EdtJahre.text)*525600))); ... end; end. MfG BAMatze [Edit] Bedenke auch, dass du Schaltjahre IMO noch nicht bedacht hast [/Edit] |
Re: Mit Delphi Alter berechnen
Ich glaube mkinzler meinte, du sollst dir das mal in der Delphi-Hilfe angucken (in Delphi oben auf Hilfe -> Delphi-Hilfe und dann nach YearsBetween suchen).
Aber ich glaube, dass bringt dir nicht wirklich viel (jedenfalls wenn ich die Aufgabe richtig verstanden habe...). Ziel ist doch, dass du dein Alter (zb 20 Jahre) in das Feld eingibst und dir das Programm das dann jeweils in die anderen Einheiten (Tage, Stunden usw.) umrechnet oder? Edit: War wohl einer schneller und der rote Kasten hat Urlaub :roll: |
Re: Mit Delphi Alter berechnen
@funnygirly
Weitere nützliche Informationen gibt es in der OH unter Dateutils oder ![]() Gruß Wolfgang |
Re: Mit Delphi Alter berechnen
ok danke...ich habe es jetzt so umgeändert (die erste zeile):
Delphi-Quellcode:
Jetzt gibt er diesen Fehler an: [Fehler] uAlter.pas(41): Inkompatible Typen: 'TEdit' und 'Integer'
EdtTage:=StrToInt(EdtAlter.Text)*365;
@ ToFaceTeKilla: Ja stimmt. |
Re: Mit Delphi Alter berechnen
Zitat:
Delphi-Quellcode:
MfG
EdtTage.Text := inttostr(strtoint(EdtAlter.text)*365)));
[Edit] EdtJahre -> EdtAlter[/Edit] |
Re: Mit Delphi Alter berechnen
Zitat:
Delphi-Quellcode:
und die Schaltjahre nicht vergessen.
EdtTage.text:=IntToStr(StrToInt(EdtAlter.Text)*365);
Grüße Klaus |
Re: Mit Delphi Alter berechnen
Edit2: Beitrag wegen Redundanz entfernt. Ihr seid mir zu schnell ^^
|
Re: Mit Delphi Alter berechnen
hier mal der Quellcode des meines Programmes von dort
![]()
Delphi-Quellcode:
In Edit5 wird die Differenz in Tage-Stunden-Minuten... zerlegt
Procedure TForm1.DateTimePicker1Change(Sender: TObject);
Var T: TDateTime; Begin If CheckBox1.Checked Then Begin DateTimePicker1.Date := Now; DateTimePicker2.Time := Now; End; If CheckBox2.Checked Then Begin DateTimePicker3.Date := Now; DateTimePicker4.Time := Now; End; Timer1.Enabled := CheckBox1.Checked or CheckBox2.Checked; T := Trunc(DateTimePicker1.Date) + Frac(DateTimePicker2.Time); T := Trunc(DateTimePicker3.Date) + Frac(DateTimePicker4.Time) - T; Edit1.Text := IntToStr(Round(T)); Edit2.Text := IntToStr(Round(T * 24)); Edit3.Text := IntToStr(Round(T * 24 * 60)); Edit4.Text := IntToStr(Round(T * 24 * 60 * 60)); Edit5.Text := Format('%d Tage %d Stunden %d Minuten %d Sekunden', [ Trunc(T), Trunc(T * 24) mod 24, Trunc(T * 24*60) mod 60, Trunc(T * 24*60*60) mod 60]); End; Dieses mußt du mit deinen Edits erstmal andersrum machen, also die Zeitangaben der einzelnen Edits erstmal in eine einheitliche Größe umrechnen und dann einfach summieren. Ja und danach kannst du diesen Wert dann wieder in die Einheiten zerlegen, welche du letztendlich haben willst. |
Re: Mit Delphi Alter berechnen
ah ok jetzt zeigt er die zeile nicht mehr als falsch an...
aber wieso wird das so anders geschrieben?:
Delphi-Quellcode:
EdtTage.Text:=IntToStr(StrToInt(EdtAlter.Text)*365);
|
Re: Mit Delphi Alter berechnen
type EdtTage.Text = String
IntToStr() macht aus einem Integer einen String StrToInt(EdtAlter.Text) macht aus einem String einen Integer Grüße Klaus |
Re: Mit Delphi Alter berechnen
ich wollte mich nochmal bei euch allen bedanke, für die schnelle hilfe. jetzt funktioniert es! :) vielen dank! ich bin so froh, dass ich das endlich hinbekommen habe. wenn ich so ähnliche aufgaben bearbeiten muss, sollte ich das dann so in der art wissen, wie wir das hier gerade aufgebaut haben, also muss man sowas auswendig lernen oder geht das einem bestimmten prinzip nach?
mfg |
Re: Mit Delphi Alter berechnen
Zitat:
im Edit gibst du Strings ein, aber mit diesen kann man nicht rechnen mit einem Integer könnte man etwas berechnen also mußt du bei der Eingabe erstmal den String in einen Integer (oder einen anderen passenden Typen) umwandeln, kannst damit dann etwas berechnen und zur Ausgabe wieder in einem Edit muß das Rechenergebnis natürlich irgendwie wieder in einen String umgewandelt werden. |
Re: Mit Delphi Alter berechnen
@All
Zitat:
Anscheinend wird davon augegangen, daß jedes Jahr 365 Tage hat und die Eingabe von 20 Jahren absolut 20 Jahre und keine Sekunde mehr meint. Wenn der Geburtstag, Systemdatum von heute und Schaltjahre mitspielen, geht die Arbeit erst richtig los ;-) Gruß Wolfgang |
Re: Mit Delphi Alter berechnen
@Wolfgang
jo da hast Du verdammt recht, aber da ich einige Aufgabenstellungen von meiner Tocher (besser der Lehrer meiner Tochter) mitbekommen habe, will ich die Aufgabenstellung nicht in Frage stellen. Ich hatte einen Lehrer einmal auf so etwas angesprochen, als Antwort kam dann "...man darf die Kinder nicht überfordern" Gruß K-H |
Re: Mit Delphi Alter berechnen
Als Anfängerübung war das hier ohne Hilfe schon anspruchsvoll genug :-D
Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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 by Thomas Breitkreuz