Autor Beitrag
Amun
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: 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.
´


ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var strBuff1, strBuff2: string;   // Operanden- u. Ergebnisspeicher
    op: Char;                     // Operation (+,-,*,/)
    mode: Byte = 1;               // 1 = ersten Operand eingeben
                                  // 2 = zweiten Operand eingeben

procedure TForm1.Button17Click(Sender: TObject); // Anzeige löschen
begin
 if mode = 1 then StrBuff1 := ''
             else StrBuff2 := '';
 Label1.Caption := ''
end;

procedure TForm1.ZeiButtonClick(Sender: TObject);       // Zahleneingabe
var zei: Char;      // eingegebenes Zeichen
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);   // Operation auswählen
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); // Ergebnis berechnen
var res, op1, op2: Double;
    code: Integer;
    s: string;
begin
 if mode = 2 then
 begin
  Val(strBuff1, op1, code);     // StringBuffer1 in Zahl verwandeln
  Val(strBuff2, op2, code);     // StringBuffer2 in Zahl verwandeln
  if CheckBox1.Checked then
  begin




  end
  else
  begin
    case op of                    // Operation durchführen
    '+': res:= op1 + op2;
    '-': res := op1 - op2;
    '*': res := op1 * op2;
    '/': res := op1 / op2
  end;
  end;
  s:= Format('%g',[res]);      // Ergebnis formatieren
  Label1.Caption := s;         // ... und anzeigen
  mode := 1;
  strBuff1 := ''
 end 
end;

procedure TForm1.Button18Click(Sender: TObject);  // Rechner ausschalten
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 : stringvar ADateTime : TDateTime): Boolean; 
  begin 
    Result := True; 
    try 
      ADateTime := StrToDateTime(AString); 
    except 
      ADateTime := 0
      Result := False; 
    end
  end;


Moderiert von user profile iconPeter Lustig: Delphi-Tags hinzugefügt und Verzierungen aus Titel entfernt
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.08.04 10:28 
Auslesen bis zu einem bestimmten Wert:

ausblenden Delphi-Quelltext
1:
TempString1 := Copy(TempString, 0, Pos(':', TempString));					


Konvertieren in Int:

ausblenden Delphi-Quelltext
1:
MeinInteger := StrToInt(TempString);					



Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt.

_________________
Ha! Es compiliert! Wir können ausliefern!
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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
ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  t1, t2, t3: TDateTime;
begin
  t1 := StrToDate(Edit1.Text); //kA, ob die Funktion nicht StrToDateTime heißt - bin grad in der Arbeit und hab kein Delphi da
  t2 := StrToDate(Edit2.Text);
  if Addieren {variable - damit das Prog weiß, ob addiert oder subtrahiert werden soll} 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: Fr 06.08.04 11:29 
ich hab es jetzt so eingebunden...
und es geht nicht was ist daran noch falsch?

ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var strBuff1, strBuff2: string;   // Operanden- u. Ergebnisspeicher
    op: Char;                     // Operation (+,-,*,/)
    mode: Byte = 1;               // 1 = ersten Operand eingeben
                                  // 2 = zweiten Operand eingeben

procedure TForm1.Button17Click(Sender: TObject); // Anzeige löschen
begin
 if mode = 1 then StrBuff1 := ''
             else StrBuff2 := '';
 Label1.Caption := ''
end;

procedure TForm1.ZeiButtonClick(Sender: TObject);       // Zahleneingabe
var zei: Char;      // eingegebenes Zeichen
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);   // Operation auswählen
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); // Ergebnis berechnen
var res, op1, op2: Double;
    code: Integer;
    s: string;
begin
 if mode = 2 then
 begin
  Val(strBuff1, op1, code);     // StringBuffer1 in Zahl verwandeln
  Val(strBuff2, op2, code);     // StringBuffer2 in Zahl verwandeln
  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                    // Operation durchführen
    '+': res:= op1 + op2;
    '-': res := op1 - op2;
    '*': res := op1 * op2;
    '/': res := op1 / op2
  end;
  end;
  s:= Format('%g',[res]);      // Ergebnis formatieren
  Label1.Caption := s;         // ... und anzeigen
  mode := 1;
  strBuff1 := ''
 end 
end;

procedure TForm1.Button18Click(Sender: TObject);  // Rechner ausschalten
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 : stringvar ADateTime : TDateTime): Boolean; 
  begin 
    Result := True; 
    try 
      ADateTime := StrToDateTime(AString); 
    except 
      ADateTime := 0
      Result := False; 
    end
  end;



Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 06.08.04 11:34 
Ganz einfach: die beiden Zeilen
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: Fr 06.08.04 11:36 
also wenn ich sie rauslösche geht es? ne oder?
irgendwie glaub ich noch nicht daran -.-

und dieses anpassen ist halt mein problem
ich hab das proggi nicht angefangen sondern wer anders und ich kann mich um
gottes willen net da rein lesen das schaff ich net...

also muss ich alles neu machen oder fügt mir einer das so ein das es klappt?
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Amun Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: Fr 06.08.04 15:19 
Amun hat folgendes geschrieben:
also wenn ich sie rauslösche geht es? ne oder?
irgendwie glaub ich noch nicht daran -.-

und dieses anpassen ist halt mein problem
ich hab das proggi nicht angefangen sondern wer anders und ich kann mich um
gottes willen net da rein lesen das schaff ich net...

also muss ich alles neu machen oder fügt mir einer das so ein das es klappt?
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:



naja ich hab jetzt alles nochmal gemacht und es klappt jetzt!
man bin ich froh!

ein kleine frage habe ich noch!
Wenn ich sie Zeit also das Ergebniss ausgebe. gibt er mir es mit sekunden aus
zb. 1:20 + 2:50 = 4:10:00 und ich will die sekunden weg haben
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 07.08.04 12:57 
ausblenden Delphi-Quelltext
1:
FormatDateTime('hh:nn', t3);					


Für weitere Formatierungen sieh mal in der Hilfe unter FormatDateTime nach

AXMD
Amun Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

XP Home ;(((
D6 Pers
BeitragVerfasst: Mo 09.08.04 11:22 
Thx hat schon gereicht danke nochmal für die hilfe