@ Sniper_W
nun, ich als Anfänger habe jetzt lange mit mir gerungen, ob ich eine der Proceduren hier posten sollte. (schäm..)
Aber vielleicht kann ich von der zu erwartenden konstruktiven Kritik und Schelte ja auch wieder einiges lernen, da ich mir bis jetzt alles (sehr mühevoll) erarbeiten musste. (mit sehr großer Hilfe dieses Forums übrigens
)
Ein weiteres "Problem" ist eben auch die
verwendeten Variablen in
dieser einen Procedur zu ermitteln
Aber ich habe mir den Code genau angeschaut, es können tatsächlich ALLE Variablen bei jeder Procedur neu initialisert werden. Das macht dann alles einfacher.
Delphi-Quellcode:
procedure TSpezieller_Rechner.AdditionClick(Sender: TObject);
Begin
a := 0 ;
b := 0 ;
c := 0 ;
If Flset = false then begin
try
a := strtofloat(InputA.text);
b := strtofloat(InputB.text);
c := a + b;
OutputC.text := formatfloat('#,##0.######',c);
Zwischenspeicher.text := floattostr(c);
except
Windows.Beep(2000,250) ;
ShowMessage ('Bitte kontrollieren: Eingabe ist falsch!" ');
InputA.SetFocus
end;
end
else begin
lsTime_a := Trim(InputA.Text);
lcDelim_a := ':';
liPos_a := Pos(lcDelim_a, lsTime_a);
if (liPos_a = 0) then begin
lcDelim_a := '.';
liPos_a := Pos(lcDelim_a, lsTime_a);
end;
if (liPos_a = 0) then begin
lcDelim_a := ',';
liPos_a := Pos(lcDelim_a, lsTime_a);
end;
if (liPos_a = 0) then begin
lsHour_a := lsTime_a;
lsMinute_a := '';
end
else begin
lsHour_a := Copy(lsTime_a, 1, liPos_a - 1);
lsMinute_a := Copy(lsTime_a, liPos_a + 1, MaxInt);
end;
try // except
if (lsHour_a = '') then begin
liHour_a := 0;
end
else begin
liHour_a := StrToInt(lsHour_a);
end;
if (lsMinute_a = '') then begin
liMinute_a := 0;
end
else begin
liMinute_a := StrToInt(lsMinute_a);
end;
except
on EConvertError do begin
ShowMessage('Eingabe falsch')
end;
end; // except
lsTime_b := Trim(InputB.Text);
lcDelim_b := ':';
liPos_b := Pos(lcDelim_b, lsTime_b);
if (liPos_b = 0) then begin
lcDelim_b := '.';
liPos_b := Pos(lcDelim_b, lsTime_b);
end;
if (liPos_b = 0) then begin
lcDelim_b := ',';
liPos_b := Pos(lcDelim_b, lsTime_b);
end;
if (liPos_b = 0) then begin
lsHour_b := lsTime_b;
lsMinute_b := '';
end
else begin
lsHour_b := Copy(lsTime_b, 1, liPos_b - 1);
lsMinute_b := Copy(lsTime_b, liPos_b + 1, MaxInt);
end;
try // except
if (lsHour_b = '') then begin
liHour_b := 0;
end
else begin
liHour_b := StrToInt(lsHour_b);
end;
if (lsMinute_b = '') then begin
liMinute_b := 0;
end
else begin
liMinute_b := StrToInt(lsMinute_b);
end;
except
on EConvertError do begin
ShowMessage('Eingabe falsch')
end;
end; // except
If (liMinute_a + liMinute_b >59) then begin
Min_ := 1; //diesen Wert muss später in Variable "o" zu den Stunden dazu gezählt werden
end;
o := (liHour_a) + (liHour_b) + Min_; // Stundensumme
p := ((liMinute_a) + (liMinute_b)); // Minutensumme
If (p >=60) then begin // wenn die Minutensumme >=60 ist, so wird von der Variable "s" 60 Minuten abgezogen
s := -60 + (p);
end
else begin
s := (p);
end;
try //except
OutputC.text := floattostr(o)+ ':' + formatfloat('00.##',s); //Anzeigen des Ergebnisses in Normalminuten
@ BlackJack
zu 1.) -> ich kanns net besser...
zu 2.) -> das hört sich doch interessant an! Wie kann man denn eine "Unterprocedur" erstellen und in einer Procedur dann verwenden? (ich meine, dass wäre doch genau das was ich will)
zu 3.) ist damit einfach zu unübersichtlich...
zu 4.) verstehe ich net ganz. Wenn keine weiteren Posts kommen die mir hier schneller weiter helfen, würde ich mich da mal "einarbeiten"
Gruß Jürgen