Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: wie initialisiert man am besten Variablen-Typen?

  Alt 10. Sep 2005, 17:56
@ 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
Jürgen
  Mit Zitat antworten Zitat