Autor Beitrag
Sack2000
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 31.05.05 15:30 
Hi, Community

Im Informatikunterricht programmieren wir einen Elternsprechtagmanager, bei dem die Anfangszeiten und die Endzeiten jeweils in zwei integer Variablen gespeichert sind. Zum einen in start_hour, start_minute , end_hour und end_minute.

Ich möchte jetzt gerne wissen, wenn jetzt in start_hour 15 steht und in start_minute 30, wie kann ich die beiden Zahlen in einer anderen Variable benutzen, sodass sie hintereinander stehen, also dann so "1530".

Ich brauche nämlich die Differenz aus der Endzeit - Anfangszeit, aber dies geht nur wenn die Zahlen 4 Ziffern haben...

Ich hoffe das Problem wird klar :D
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 15:40 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
start_hour, start_minute , end_hour, end_minute: Integer;
start, ende: Integer;
begin
start := StrToInt(IntToStr(start_hour)+IntToStr(start_minute));
ende := StrToInt(IntToStr(end_hour)+IntToStr(end_minute));
end;


Beispiel:
start_hour :arrow: 15
start_minute :arrow: 30

:arrow: start :arrow: 1530


Zuletzt bearbeitet von WeBsPaCe am Di 31.05.05 16:17, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 31.05.05 15:40 
So kannst du nicht mit Zeiten rechnen. 1530 - 1450 = 80. Bei mir sind es von 10 vor drei bis halb vier aber nur 40 Minuten. :roll:

Nimm ein Edit (TMaskEdit), lass diort die Zeit im Format hh:mm eingeben und wandele das in TTime um und rechen damit.
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 15:41 
Ich nehme mal an, das das Info-Unterricht ist. Und dann kann man da wunderschön irgendwelche Prozeduren schreiben, die überprüfen ob die erste Zahl größer ist oder die zweite. Ich kenn sie doch die Info-Lehrer. :mrgreen: ;)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 31.05.05 15:44 
Und was nützt dir das? Guck dir mein Rechenbeispiel in meinem vorherigen Post an. Dir ist wohl noch nie aufgefallen, dass eine Stunde nur 60 Minuten hat und nicht hundert.
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:00 
Dann hab ich deine Problembeschreibung falsch gesehen. ;) Dachte an sowas: 1450-1620 ;) Aber dein Problem ist ja wohl auch zu lösen. Mit div und mod hast du dann ganz schnell folgenden Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
differenz, dauer_stunden, dauer_minuten: Integer;
begin
differenz := 80;
dauer_stunden := differenz div 60;
dauer_minuten := differenz mod 60;
ShowMessage(IntToStr(dauer_stunden));
ShowMessage(IntToStr(dauer_minuten));
end;

;)
Sack2000 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 31.05.05 16:08 
Danke erstmal

ne es geht draum, dass ich die Anwesenheit programmieren soll, also von wann bis wann ein Lehrer oder Eltern Teil da ist. Und die Anwesenheit wird in zwei Comboboxen angezeigt also die eine heißt halt von und die andere bis.

In dieser Box sollen dann alle möglichen Gespräche eines Tages auftauchen. Und ich dachte daran, dass man halt wenn jetzt der Sprechtag von 15:30 bis 18:30 geht, erstmal rechnet:

1830-1530 dann geteilt durch die Gesprächslänge also 10 Min

dann hat man 300:10 = 30

Also 30 freie Termine und dann wollte ich mit ner for schleife von 1 bis 30 die Gesprächslänge dazu addieren
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:11 
Klingt doch ganz ordentlich. Wo ist das Problem? :gruebel:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 31.05.05 16:13 
user profile iconSack2000 hat folgendes geschrieben:

1830-1530 dann geteilt durch die Gesprächslänge also 10 Min

dann hat man 300:10 = 30

Du hast es nicht verstanden, was ich versucht habe dir zu erklären. Von 15:30 bis 18:30 sind es drei Stunden also 180 Minuten. 180 geteilt durch 10 Minuten Gesprächslänge ergibt 18 Termine!
Sack2000 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 31.05.05 16:16 
Stimmt wie muss ich denn jetzt die Rechnung ändern, damit das hinkommt.
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:16 
user profile iconLuckie hat folgendes geschrieben:
Du hast es nicht verstanden, was ich versucht habe dir zu erklären. Von 15:30 bis 18:30 sind es drei Stunden also 180 Minuten. 180 geteilt durch 10 Minuten Gesprächslänge ergibt 18 Termine!

Genau. Passt doch. Ich glaube, ich hab's wirklich nicht verstanden, was du meinst. :eyes: :? Versuch's bitte nochmal zu erklären. ;)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 31.05.05 16:16 
Das Problem?
Manoman.
15:30 bis 18:30 sind 3 Stunden. Macht 180 Minuten.
Das durch 10 sind 18 Termine.

Sind euch die warmen Tage zu Kopf gestiegen? :lol:
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:18 
user profile iconSack2000 hat folgendes geschrieben:
Stimmt wie muss ich denn jetzt die Rechnung ändern, damit das hinkommt.

Welche Rechnung? :shock:
Sack2000 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 31.05.05 16:20 
Ja das Programm muss doch jetzt die 3 Stunden erkennen und wissen, dass 3 Stunden 180 Minuten haben. Und dann 180 : 10 teilen. Oder nicht
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 31.05.05 16:22 
Du musst mit Variablen vom Typ TTime rechnen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 31.05.05 16:24 
Du kannst mit Zeitwerten rechnen. Z.B.: Differenzen bilden.
Wenn du dir noch die Funktionen StrToTime und TimeToStr in der Hilfe ansiehst, solltest du eigentlich zurecht kommen.
Kleiner Tipp: Intern werden Zeitwerte als Zahlen behandelt.
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:27 
Häh? :shock:

Du hast doch zwei Zahlen wie z.B. 16, 20, 15 und 40 oder nicht? Die fügst du mit meinem Code von da oben zusammen. Dann hast du 1620 und 1540. Das subtrahieren: 1620-1540. Dann hast du 80. Teilst die 80 durch 10: 80/10. Und hast deine Anzahl der Termine raus: 8.

:gruebel:
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 31.05.05 16:30 
@webspace:
Schau mal auf die Uhr und zähl die Minuten. Das sind nämlich nur 40.


Zuletzt bearbeitet von jasocul am Di 31.05.05 16:30, insgesamt 1-mal bearbeitet
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Di 31.05.05 16:30 
integers die man in Delphi mit einem Wert belegt werden ersteinmal als Zahlen im Zehnersystem interpretiert. leider sehen wir unsere Zeitangaben auch so an, was nicht stimmt, da 60 s=1min ; 60 min=1 h und 24 h =1 T ist also total konfus

Tja wie man das rechnet: Vielleicht die Stunden in Minuten umrechnen (*60) (dann hast du nämlich einheitliche Einheiten und kannst dann auch durch 10 min teilen andernfalls kannst du nicht einfach Stunden durch Minuten teilen was soll denn da Einheitenmäßig rauskommen (so wie Äpfel durch Birnen teilen) (Minute durch Minute ist einheitenlos, was ja eine Anzahl auch sein sollte))
Wenn du den Befehl div und mod mit 60 benutzt also Division mit Rest und so kannst du dann beim zurückrechnen sofort wieder Stunden und Minuten bekommen
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Di 31.05.05 16:43 
user profile iconjasocul hat folgendes geschrieben:
@webspace:
Schau mal auf die Uhr und zähl die Minuten. Das sind nämlich nur 40.

Gut. Jetzt hab ich das Problem verstanden. :mrgreen: