Autor |
Beitrag |
Amun
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Fr 06.08.04 10:12
Ich habe ein Problem ich habe einen Taschenrecher und der soll Zeiten addieren können.
wie zb. man gibt 1:20 (eine stunde 20 minuten) + 1:50 (eine stunde 50 minuten)
= 3:10 ( drei stunden 10 minuten)
es muss ja so sein das ich den string den ich im label habe auslesen muss
bis zum ':' oder? dann diesen teilstring in einen int. umwandeln und nach dem ':'
es auch in einen Int umwandeln und wenn es über 60 geht denn den anderen int +1
frage ist jetzt nur wie ich das bewerkstellige
ich habe noch nicht so richtig anhnung von delphi
bin bis jetzt nur dev. c++ gewohnt gewesen und dadurch ist es ein bißchen neuland für mich! ich hoffe das ich hier hilfe finden kann.
Ich will delphi lernen und hoffe das ich hier nette leute kennen lernen
die man auch über icq mal was fragen kann.
´
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, Buttons;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Label1: TLabel; Button17: TButton; Button18: TButton; CheckBox1: TCheckBox; Button19: TButton; procedure Button18Click(Sender: TObject); procedure Button17Click(Sender: TObject); procedure ZeiButtonClick(Sender: TObject); procedure OpButtonClick(Sender: TObject); procedure IstButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Hilfe2Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
var strBuff1, strBuff2: string; op: Char; mode: Byte = 1; procedure TForm1.Button17Click(Sender: TObject); begin if mode = 1 then StrBuff1 := '' else StrBuff2 := ''; Label1.Caption := '' end;
procedure TForm1.ZeiButtonClick(Sender: TObject); var zei: Char; begin if Sender = Button10 then zei := '0'; if Sender = Button1 then zei := '1'; if Sender = Button2 then zei := '2'; if Sender = Button3 then zei := '3'; if Sender = Button4 then zei := '4'; if Sender = Button5 then zei := '5'; if Sender = Button6 then zei := '6'; if Sender = Button7 then zei := '7'; if Sender = Button8 then zei := '8'; if Sender = Button9 then zei := '9'; if Sender = Button11 then zei := '.'; if Sender = Button19 then zei := ':'; if mode = 1 then begin strBuff1 := strBuff1 + zei; Label1.Caption := strBuff1 end else begin strBuff2 := strBuff2 + zei; Label1.Caption := strBuff2 end end;
procedure TForm1.OpButtonClick(Sender: TObject); begin if mode = 1 then begin if Sender = Button14 then op:= '+'; if Sender = Button15 then op:= '-'; if Sender = Button12 then op:= '*'; if Sender = Button13 then op:= '/'; StrBuff2:=''; mode := 2 end end;
procedure TForm1.IstButtonClick(Sender: TObject); var res, op1, op2: Double; code: Integer; s: string; begin if mode = 2 then begin Val(strBuff1, op1, code); Val(strBuff2, op2, code); if CheckBox1.Checked then begin
end else begin case op of '+': res:= op1 + op2; '-': res := op1 - op2; '*': res := op1 * op2; '/': res := op1 / op2 end; end; s:= Format('%g',[res]); Label1.Caption := s; mode := 1; strBuff1 := '' end end;
procedure TForm1.Button18Click(Sender: TObject); begin Close end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.HelpFile := 'Taschenrechner.hlp' end;
procedure TForm1.Button19Click(Sender: TObject); begin Application.HelpJump('Inhalt') end;
procedure TForm1.Hilfe2Click(Sender: TObject); begin Application.HelpJump('Inhalt') end;
procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked then begin Button19.Visible := true; end else Button19.Visible := false; end;
end.
function IsValidDate(AString : string; var ADateTime : TDateTime): Boolean; begin Result := True; try ADateTime := StrToDateTime(AString); except ADateTime := 0; Result := False; end; end; |
Moderiert von Peter Lustig: Delphi-Tags hinzugefügt und Verzierungen aus Titel entfernt
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Fr 06.08.04 10:28
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 06.08.04 10:45
Wieso umständlich in Int konvertieren? Den ganzen String in TDateTime umwandeln und dann addieren und zurückverwandeln.
Außerdem könntest du das
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if Sender = Button10 then zei := '0'; if Sender = Button1 then zei := '1'; if Sender = Button2 then zei := '2'; if Sender = Button3 then zei := '3'; if Sender = Button4 then zei := '4'; if Sender = Button5 then zei := '5'; if Sender = Button6 then zei := '6'; if Sender = Button7 then zei := '7'; if Sender = Button8 then zei := '8'; if Sender = Button9 then zei := '9'; |
durch Button-Tags vereinfachen:
Delphi-Quelltext 1:
| zei := Chr(Ord('0') + (Sender as TButton).Tag); |
AXMD
PS.: Kann vielleicht einer der Mods oben Code-Tags einfügen - der Übersichtlichkeit wegen
Zuletzt bearbeitet von AXMD am Fr 06.08.04 11:06, insgesamt 1-mal bearbeitet
|
|
Amun 
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Fr 06.08.04 10:51
ja und wie geht das?
also wie ist das zu bewerkstelligen
wie gesagt ich habe noch nicht so ein gutes wissen über delphi -.-
wie wären denn jetzt die befehle genau für mein programm?
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 06.08.04 11:13
DateTime-Werte kannst du wie Zahlen addieren, was daran liegt, dass TDateTime intern als Fließkommazahl behandelt wird. Wenn du beispielsweise zwei DateTime-Werte hast (t1 und t2), kannst du die beiden addieren / subtrahieren. Ein Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var t1, t2, t3: TDateTime; begin t1 := StrToDate(Edit1.Text); t2 := StrToDate(Edit2.Text); if Addieren then t3 := t1 - t2 else t3 := t1 + t2; Edit3.Text := DateToStr(t3); end; |
AXMD
//EDIT: Wenn du jetzt z.B. 1:20 in Edit1 und 1:50 in Edit2 eingibst, bekommst du in Edit3 deine 3:10
|
|
Amun 
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Fr 06.08.04 11:29
ich hab es jetzt so eingebunden...
und es geht nicht was ist daran noch falsch?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, Buttons;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Label1: TLabel; Button17: TButton; Button18: TButton; CheckBox1: TCheckBox; Button19: TButton; procedure Button18Click(Sender: TObject); procedure Button17Click(Sender: TObject); procedure ZeiButtonClick(Sender: TObject); procedure OpButtonClick(Sender: TObject); procedure IstButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Hilfe2Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
var strBuff1, strBuff2: string; op: Char; mode: Byte = 1; procedure TForm1.Button17Click(Sender: TObject); begin if mode = 1 then StrBuff1 := '' else StrBuff2 := ''; Label1.Caption := '' end;
procedure TForm1.ZeiButtonClick(Sender: TObject); var zei: Char; begin if Sender = Button10 then zei := '0'; if Sender = Button1 then zei := '1'; if Sender = Button2 then zei := '2'; if Sender = Button3 then zei := '3'; if Sender = Button4 then zei := '4'; if Sender = Button5 then zei := '5'; if Sender = Button6 then zei := '6'; if Sender = Button7 then zei := '7'; if Sender = Button8 then zei := '8'; if Sender = Button9 then zei := '9'; if Sender = Button11 then zei := '.'; if Sender = Button19 then zei := ':'; if mode = 1 then begin strBuff1 := strBuff1 + zei; Label1.Caption := strBuff1 end else begin strBuff2 := strBuff2 + zei; Label1.Caption := strBuff2 end end;
procedure TForm1.OpButtonClick(Sender: TObject); begin if mode = 1 then begin if Sender = Button14 then op:= '+'; if Sender = Button15 then op:= '-'; if Sender = Button12 then op:= '*'; if Sender = Button13 then op:= '/'; StrBuff2:=''; mode := 2 end end;
procedure TForm1.IstButtonClick(Sender: TObject); var res, op1, op2: Double; code: Integer; s: string; begin if mode = 2 then begin Val(strBuff1, op1, code); Val(strBuff2, op2, code); if CheckBox1.Checked then begin
var t1, t2, t3: TDateTime; begin t1 := strBuff1; t2 := strBuff2;
t1 := StrToDate(Edit1.Text); t2 := StrToDate(Edit2.Text); if op1 then t3 := t1 + t2 else t3 := t1 - t2; Edit3.Text := DateToStr(t3);
end;
end else begin case op of '+': res:= op1 + op2; '-': res := op1 - op2; '*': res := op1 * op2; '/': res := op1 / op2 end; end; s:= Format('%g',[res]); Label1.Caption := s; mode := 1; strBuff1 := '' end end;
procedure TForm1.Button18Click(Sender: TObject); begin Close end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.HelpFile := 'Taschenrechner.hlp' end;
procedure TForm1.Button19Click(Sender: TObject); begin Application.HelpJump('Inhalt') end;
procedure TForm1.Hilfe2Click(Sender: TObject); begin Application.HelpJump('Inhalt') end;
procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked then begin Button19.Visible := true; end else Button19.Visible := false; end;
end.
function IsValidDate(AString : string; var ADateTime : TDateTime): Boolean; begin Result := True; try ADateTime := StrToDateTime(AString); except ADateTime := 0; Result := False; end; end; |
Moderiert von Peter Lustig: Code- durch Delphi-Tags ersetzt.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 06.08.04 11:34
Ganz einfach: die beiden Zeilen Delphi-Quelltext 1: 2:
| t1 := StrToDate(Edit1.Text); t2 := StrToDate(Edit2.Text); | sind zu viel
AXMD
//EDIT: außerdem musst du den Code an dein Programm anpassen - du musst statt Edit3 Label1 schreiben 
|
|
Amun 
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Fr 06.08.04 11:36
|
|
Amun 
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Fr 06.08.04 15:19
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 07.08.04 12:57
Delphi-Quelltext 1:
| FormatDateTime('hh:nn', t3); |
Für weitere Formatierungen sieh mal in der Hilfe unter FormatDateTime nach
AXMD
|
|
Amun 
      
Beiträge: 50
XP Home ;(((
D6 Pers
|
Verfasst: Mo 09.08.04 11:22
Thx hat schon gereicht danke nochmal für die hilfe
|
|