| Autor | Beitrag | 
| Sack2000 Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Di 31.05.05 14: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   | 
|  | 
| WeBsPaCe 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 14:40 
 
		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 
 | varstart_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    15
 start_minute    30
   start    1530 
 Zuletzt bearbeitet von WeBsPaCe am Di 31.05.05 15:17, insgesamt 1-mal bearbeitet
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 31.05.05 14: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.    Nimm ein Edit (TMaskEdit), lass diort die Zeit im Format hh:mm eingeben und wandele das in TTime um und rechen damit. | 
|  | 
| WeBsPaCe 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 14: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.     | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 31.05.05 14: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 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15: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:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | vardifferenz, 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  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Di 31.05.05 15: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 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15:11 
 
Klingt doch ganz ordentlich. Wo ist das Problem?   | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 31.05.05 15:13 
 
	  |  Sack2000 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  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Di 31.05.05 15:16 
 
Stimmt wie muss ich denn jetzt die Rechnung ändern, damit das hinkommt. | 
|  | 
| WeBsPaCe 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15:16 
 | 
|  | 
| jasocul 
          Beiträge: 6395
 Erhaltene Danke: 149
 
 Windows 7 + Windows 10
 Sydney Prof + CE
 
 | 
Verfasst: Di 31.05.05 15: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?   | 
|  | 
| WeBsPaCe 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15:18 
 
	  |  Sack2000 hat folgendes geschrieben: |  	  | Stimmt wie muss ich denn jetzt die Rechnung ändern, damit das hinkommt. | 
 Welche Rechnung?    | 
|  | 
| Sack2000  Hält's aus hier
 Beiträge: 11
 
 
 
 
 | 
Verfasst: Di 31.05.05 15: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
 
 
 
 
 | 
Verfasst: Di 31.05.05 15:22 
 
Du musst mit Variablen vom Typ TTime rechnen. | 
|  | 
| jasocul 
          Beiträge: 6395
 Erhaltene Danke: 149
 
 Windows 7 + Windows 10
 Sydney Prof + CE
 
 | 
Verfasst: Di 31.05.05 15: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 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15:27 
 
Häh?     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.
  | 
|  | 
| jasocul 
          Beiträge: 6395
 Erhaltene Danke: 149
 
 Windows 7 + Windows 10
 Sydney Prof + CE
 
 | 
Verfasst: Di 31.05.05 15: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 15:30, insgesamt 1-mal bearbeitet
 | 
|  | 
| Allesquarks 
          Beiträge: 510
 
 Win XP Prof
 Delphi 7 E
 
 | 
Verfasst: Di 31.05.05 15: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 
          Beiträge: 2322
 Erhaltene Danke: 1
 
 FireFox 3, Internet Explorer 6 SP1
 D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
 
 | 
Verfasst: Di 31.05.05 15:43 
 
	  |  jasocul 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.   | 
|  |