Thema: Auslesen .ini

Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Auslesen .ini

  Alt 15. Dez 2013, 13:23
Wenn man den Quellcode mal formatiert, dann fällt folgendes auf:
Delphi-Quellcode:
procedure TForm1.sostClick(Sender: TObject);
begin
  if g < 50
  then
    ShowMessage('Sie haben zu wenige Geld.');

  if g >= 50
  then
    g := g - 50;

  // Der Rest hier wird immer ausgeführt, egal ob genug Geld da war oder nicht
  // Soll das so sein?

  xost := xost + 1;
  tost1.Interval := 5000;
  tost1.Enabled := true;
end;
Kann ich mir ja nicht vorstellen.

Vorstellen kann mich mir aber eher, dass diese Codezeilen, des Öfteren bei dir auftauchen (wobei der Wert 50 wohl eher variiert)
Delphi-Quellcode:
  if g < 50
  then
    ShowMessage('Sie haben zu wenige Geld.');

  if g >= 50
  then
    g := g - 50;
Warum dann nicht eine Methode, die die Kosten automatisch abzieht und das Resultat als Boolean zurückliefert.
Es wäre auch schön, wenn die Variable einen sprechenden Namen bekommen würde. g ist wenig aussagekräftig. Geld würde da schon eher passen. Ist aber Kosmetik, die nicht die Funktion aber die Pflege des Programms beeinträchtigt.
Delphi-Quellcode:
function TForm1.ErfolgreicheZahlung( const Kosten : Integer ) : Boolean;
begin
  Result := ( g >= Kosten );
  if Result
  then
    begin
      g := g - Kosten;
    end
  else
    begin
      ShowMessage( 'Sie haben zu wenig Geld' );
    end;
end;

procedure TForm1.sostClick(Sender: TObject);
begin
  if ErfolgreicheZahlung( 50 )
  then
    begin
      xost := xost + 1;
      tost1.Interval := 5000;
      tost1.Enabled := true;
    end;
end;
alternativ geht dann auch (wahrscheinlich sogar übersichtlicher)
Delphi-Quellcode:
procedure TForm1.sostClick(Sender: TObject);
begin
  if not ErfolgreicheZahlung( 50 )
  then
    Exit; // Die Methode wird einfach verlassen

  xost := xost + 1;
  tost1.Interval := 5000;
  tost1.Enabled := true;
end;
Auch dieses Konstrukt ist eher unüblich (obwohl nicht wirklich falsch)
Delphi-Quellcode:
if xost > 0 then tost1.Interval:=5000;
if xost > 0 then tost1.Enabled:= true;
Besser
Delphi-Quellcode:
if xost > 0
then
  begin
    tost1.Interval := 5000;
    tost1.Enabled := true;
  end;
Warum er aus deiner Ini-Datei nichts ausliest, können wir aber nicht sagen, weil wir nicht sehen wie du in diese Datei speicherst bzw. nicht den Inhalt der Datei kennen.

Eventuell liest du aus der falschen Datei, die falsche Section, den falschen Wert aus ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (15. Dez 2013 um 13:26 Uhr)
  Mit Zitat antworten Zitat