Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Fenster positionierung (https://www.delphipraxis.net/2621-problem-mit-fenster-positionierung.html)

eddy 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:

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

Und wenn ich schon dabei bin, aus:

Delphi-Quellcode:
  if s = '2400' then
  begin
    ComboBoxBaud.ItemIndex := 0;
  end
  else if s = '4800' then
  begin
    ComboBoxBaud.ItemIndex := 1;
  end
  else if s = '9600' then
  begin
    ComboBoxBaud.ItemIndex := 2;
  end
  else if s = '14400' then
  begin
    ComboBoxBaud.ItemIndex := 3;
  end
  else if s = '19200' then
  begin
    ComboBoxBaud.ItemIndex := 4;
  end
  else if s = '28800' then
  begin
    ComboBoxBaud.ItemIndex := 5;
  end
  else if s = '38400' then
  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

eddy 31. Jan 2003 11:59

Nachtrag:

Hallo Daniel B,

schau mal ins Thema "Mengen mit kompletten Strings?". Vielleicht sind diese Anregeungen für Deine Baudraten nützlich.

mfg
eddy

Daniel B 31. Jan 2003 15:02

Hello eddy,
Zitat:

Zitat von eddy
schau mal ins Thema "Mengen mit kompletten Strings?". Vielleicht sind diese Anregeungen für Deine Baudraten nützlich.

Werd ich machen!
Und ich sollte wirklich auf "CheckBox1.Checked := Geoeffnete;" umsteigen.
Ich musss sowieso noch einiges "umkrempeln", da sich die Datenstruktur doch erheblich geändert hat.
Das mit den ComPorts ist auch nciht schlecht, wobei ich da noch ein Filter mit rein bauen werde, damit die ganzen AVM-Karten usw. nicht erkannt werden. Denn die brauch ich ja nicht, sondern nur die serielle mit meinen BaudRaten, die die Du aufgelistet hast sind für mich nciht ganz zu gebrauchen, da ich nur die verwenden kann/darf die ich im Source drin habe.
Aber ansonsten gefällt mir was Du geschrieben hast, vielleicht schaffe ich es doch noch unter 10.000 Zeilen zu bleiben.
Danke Dir, aber erst muss ich noch ein Film schauen. :mrgreen:

Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz