Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#11
  Alt 31. Jan 2003, 11:54
Hallo Daniel B,

ich habe die Ini-Datei noch mal gelöscht, Programm neu gestartet -> keine Fehler erzielbar.

Allerdings ist mir aufgefallen, daß dieser Teil in TMainFormMC2004.FormClose überflüssig ist:

Delphi-Quellcode:
    //.....
    end
    else //if FensterPosSave = False then
    begin
      ini.WriteInteger('Fensterdaten', 'Links', 0);
      ini.WriteInteger('Fensterdaten', 'Oben', 0);
      ini.WriteInteger('Fensterdaten', 'Breite', 641);
      ini.WriteInteger('Fensterdaten', 'Hoehe', 375);
    end;
weil in TMainFormMC2004.FormCreate immer der else-Zweig abgearbeitet wird, wenn FensterPosSave false gilt:

Delphi-Quellcode:
    FensterPosSave :=
             ini.ReadBool('Fensterdaten', 'Fensterposition', false);
    if FensterPosSave then begin
// MainFormMC2004.Left := ini.ReadInteger('Fenst....
// .... ('Fensterdaten', 'Hoehe', 0);
    end
    else begin // if FensterPosSave = False then begin
      MainFormMC2004.Position := poScreenCenter;
    end;
Du hast ja schon geschrieben, daß Du auf if-else-Konstruktionen stehst, aber vielleicht solltest Du Dir selbst das Leben erleichtern und so etwas:

Delphi-Quellcode:
  if Geoeffnete = True then
  begin
    CheckBox1.Checked := True;
  end
  else if Geoeffnete = False then
  begin
    CheckBox1.Checked := False;
  end;
doch besser so schreiben:

  CheckBox1.Checked := Geoeffnete; Ist doch irgendwie übersichtlicher und leichter verständlich.

Und wenn ich schon dabei bin, aus:

Delphi-Quellcode:
  if s = '2400then
  begin
    ComboBoxBaud.ItemIndex := 0;
  end
  else if s = '4800then
  begin
    ComboBoxBaud.ItemIndex := 1;
  end
  else if s = '9600then
  begin
    ComboBoxBaud.ItemIndex := 2;
  end
  else if s = '14400then
  begin
    ComboBoxBaud.ItemIndex := 3;
  end
  else if s = '19200then
  begin
    ComboBoxBaud.ItemIndex := 4;
  end
  else if s = '28800then
  begin
    ComboBoxBaud.ItemIndex := 5;
  end
  else if s = '38400then
  begin
    ComboBoxBaud.ItemIndex := 6;
  end;
hätte ich folgendes gemacht:

Delphi-Quellcode:
const
  maxB = 7;
  Bauds : array[0..maxB] of string =
     ('1200','2400','9600','14400','19200','28800','38400','55600');

//.....

  ComboBoxBaud.ItemIndex := NofStr(s, Bauds);

//....
Endlich mal eine sinnvolle Anwendung für diese Funktion, die ich aus einer Zeitung habe:

Delphi-Quellcode:
{liefert 0 ... n zurück, wenn s in sarr gefunden wurde, -1, wenn nicht}
function NofStr( s : string; sarr : array of string) : integer;
var
  erg, i : integer;
begin
  erg := -1;
  s := uppercase(s);
  for i := 0 to high(sarr) do begin
    if s = uppercase(sarr[i]) then begin
      erg := i;
      break;
    end;
  end;
  Result := erg;
end;
Wahrscheinlich wäre ich noch einen Schritt weiter gegangen und hätte statt String-Werte für die Baudrate Integer in meinem Array verwendet.

Vorsichtshalber:
Das soll kein Mäkeln an Deinem Programm sein, sondern nur ein Hinweis zum Reduzieren von Aufwand.

mfg
eddy
  Mit Zitat antworten Zitat