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 ...