Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Mit Delphi Alter berechnen (https://www.delphipraxis.net/140718-mit-delphi-alter-berechnen.html)

Funnygirly 24. Sep 2009 14:18


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:
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.
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

mkinzler 24. Sep 2009 14:23

Re: Mit Delphi Alter berechnen
 
Schau dir mal
DateUtils.YearsBetween() an

Funnygirly 24. Sep 2009 14:26

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.

p80286 24. Sep 2009 14:30

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

BAMatze 24. Sep 2009 14:32

Re: Mit Delphi Alter berechnen
 
[quote="Funnygirly"]
Delphi-Quellcode:
  Tage:=IntToStr(EdtTage.Text);
  Stunden:=IntToStr(EdtStunden.Text);
  Minuten:=IntToStr(EdtMinuten.Text);
  Sekunden:=IntToStr(EdtSekunden.Text);
Versucht du hier nicht irgendwie eine Stringvariable auf eine Integer zu packen?
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:
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.
Die Umrechnungsfaktoren beziehen sich nämlich immer auf das Jahr.

MfG
BAMatze

[Edit] Bedenke auch, dass du Schaltjahre IMO noch nicht bedacht hast [/Edit]

ToFaceTeKilla 24. Sep 2009 14:32

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:

Wolfgang Mix 24. Sep 2009 14:39

Re: Mit Delphi Alter berechnen
 
@funnygirly

Weitere nützliche Informationen gibt es in der OH unter Dateutils oder hier

Gruß

Wolfgang

Funnygirly 24. Sep 2009 14:41

Re: Mit Delphi Alter berechnen
 
ok danke...ich habe es jetzt so umgeändert (die erste zeile):

Delphi-Quellcode:
EdtTage:=StrToInt(EdtAlter.Text)*365;
Jetzt gibt er diesen Fehler an: [Fehler] uAlter.pas(41): Inkompatible Typen: 'TEdit' und 'Integer'

@ ToFaceTeKilla: Ja stimmt.

BAMatze 24. Sep 2009 14:45

Re: Mit Delphi Alter berechnen
 
Zitat:

Zitat von Funnygirly
ok danke...ich habe es jetzt so umgeändert (die erste zeile):

Delphi-Quellcode:
EdtTage:=StrToInt(EdtAlter.Text)*365;
Jetzt gibt er diesen Fehler an: [Fehler] uAlter.pas(41): Inkompatible Typen: 'TEdit' und 'Integer'

@ ToFaceTeKilla: Ja stimmt.

EdtTage ist ein TEdit! auf welchem du keinen integer-Wert legen kannst.

Delphi-Quellcode:
EdtTage.Text := inttostr(strtoint(EdtAlter.text)*365)));
MfG

[Edit] EdtJahre -> EdtAlter[/Edit]

Klaus01 24. Sep 2009 14:46

Re: Mit Delphi Alter berechnen
 
Zitat:

Zitat von Funnygirly
ok danke...ich habe es jetzt so umgeändert (die erste zeile):

Delphi-Quellcode:
EdtTage:=StrToInt(EdtAlter.Text)*365;
Jetzt gibt er diesen Fehler an: [Fehler] uAlter.pas(41): Inkompatible Typen: 'TEdit' und 'Integer'

@ ToFaceTeKilla: Ja stimmt.

Delphi-Quellcode:
EdtTage.text:=IntToStr(StrToInt(EdtAlter.Text)*365);
und die Schaltjahre nicht vergessen.

Grüße
Klaus

ToFaceTeKilla 24. Sep 2009 14:46

Re: Mit Delphi Alter berechnen
 
Edit2: Beitrag wegen Redundanz entfernt. Ihr seid mir zu schnell ^^

himitsu 24. Sep 2009 14:54

Re: Mit Delphi Alter berechnen
 
hier mal der Quellcode des meines Programmes von dort http://www.delphipraxis.net/internal...t.php?t=165272

Delphi-Quellcode:
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;
In Edit5 wird die Differenz in Tage-Stunden-Minuten... zerlegt

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.

Funnygirly 24. Sep 2009 14:55

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);

Klaus01 24. Sep 2009 14:59

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

Funnygirly 24. Sep 2009 15:00

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

himitsu 24. Sep 2009 15:06

Re: Mit Delphi Alter berechnen
 
Zitat:

Zitat von Funnygirly
also muss man sowas auswendig lernen oder geht das einem bestimmten prinzip nach?

Das Prinzip ist, daß es verschiedene (Daten)Typen gibt, mit welchen man unterschiedliche Dinge machen kann und welche nicht kompatibel sind.

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.

Wolfgang Mix 24. Sep 2009 16:04

Re: Mit Delphi Alter berechnen
 
@All
Zitat:

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.
Für mich ist die Fragestellung schon mehrdeutig.
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

p80286 24. Sep 2009 16:15

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

Wolfgang Mix 24. Sep 2009 16:21

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 03:53 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