![]() |
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:
weil in TMainFormMC2004.FormCreate immer der else-Zweig abgearbeitet wird, wenn FensterPosSave false gilt:
//.....
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;
Delphi-Quellcode:
Du hast ja schon geschrieben, daß Du auf if-else-Konstruktionen stehst, aber vielleicht solltest Du Dir selbst das Leben erleichtern und so etwas:
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;
Delphi-Quellcode:
doch besser so schreiben:
if Geoeffnete = True then
begin CheckBox1.Checked := True; end else if Geoeffnete = False then begin CheckBox1.Checked := False; end;
Delphi-Quellcode:
Ist doch irgendwie übersichtlicher und leichter verständlich.
CheckBox1.Checked := Geoeffnete;
Und wenn ich schon dabei bin, aus:
Delphi-Quellcode:
hätte ich folgendes gemacht:
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;
Delphi-Quellcode:
Endlich mal eine sinnvolle Anwendung für diese Funktion, die ich aus einer Zeitung habe:
const
maxB = 7; Bauds : array[0..maxB] of string = ('1200','2400','9600','14400','19200','28800','38400','55600'); //..... ComboBoxBaud.ItemIndex := NofStr(s, Bauds); //....
Delphi-Quellcode:
Wahrscheinlich wäre ich noch einen Schritt weiter gegangen und hätte statt String-Werte für die Baudrate Integer in meinem Array verwendet.
{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; Vorsichtshalber: Das soll kein Mäkeln an Deinem Programm sein, sondern nur ein Hinweis zum Reduzieren von Aufwand. mfg eddy |
Nachtrag:
Hallo Daniel B, schau mal ins Thema "Mengen mit kompletten Strings?". Vielleicht sind diese Anregeungen für Deine Baudraten nützlich. mfg eddy |
Hello eddy,
Zitat:
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 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz