Wo genau liegt der Unterschied im Case Block 0 bzw. 1... suche aber finde es gerade nicht. €: gefunden AND/OR
String werden
imho in Delphi mit '' initialisiert, bei Ordinalen Werden verwende ich Const, weis aber nicht ob das gut ist:
Delphi-Quellcode:
// statt
var
iRadioGroup : integer;
begin
iRadioGroup := 1;
// schreibe ich gerne
const
iRadioGroup : integer = 1;
Für den Case-Block folgende Idee
Delphi-Quellcode:
// Funktion sucht Substring und gibt True, wenn entweder einen oder beiden gefunden
function FindStrings(SubStr1, SubStr2, Str : String; FindBoth : Boolean) : Boolean
begin
if FindBoth then
Result := (Pos(SubStr1, Str) > 0) and (Pos(SubStr2, Str) > 0)
else
Result := (Pos(SubStr1, Str) > 0) or (Pos(SubStr2, Str) > 0);
end;
// kurz vor der For-Schleife
FindBoth := GetRadioGroupIdx(AnsichtForm, iRadioGroup) = 1;
// dann statt den beiden Case-Blöcken
if GetCheckBoxState(AnsichtForm, iCheckBox) then
begin
if FindStrings(GetEditString(AnsichtForm, iEdit1),
GetEditString(AnsichtForm, iEdit2),
DatenMB.Ereignis, FindBoth) then
Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
[...]
Wobei der ganze Vorgang wirklich sehr extrem aussieht. Auch ziemlich anhängig von korrekten Control-Namen etc.
Das ganze würde ich irgendwann nochmal komplett überdenken