Hallo juelin,
mit meinem Halbwissen ist mir folgendes aufgefallen:
Es steht da z. B.
Code: Alles auswählen
procedure TForm1.Anzfeldleer;
begin
if feldnum = 1 then
begin
MaskEdit1.SpaceChar:=' ';
MaskEdit1.Refresh;
end;
if feldnum = 2 then
begin
MaskEdit2.SpaceChar:=' ';
MaskEdit2.Refresh;
end;
// usw. usw. bis
if feldnum = 81 then
begin
MaskEdit81.paceChar:=' ';
MaskEdit81.Refresh;
end;
kostet das nicht doch erheblich mehr Zeit als wenn man jeweils alles mit einem "else" verbindet, also
Code: Alles auswählen
procedure TForm1.Anzfeldleer;
begin
if feldnum = 1 then
begin
MaskEdit1.SpaceChar:=' ';
MaskEdit1.Refresh;
end else
if feldnum = 2 then
begin
MaskEdit2.SpaceChar:=' ';
MaskEdit2.Refresh;
end else
// usw. usw. bis
if feldnum = 81 then
begin
MaskEdit81.SpaceChar:=' ';
MaskEdit81.Refresh;
end;
end;
oder einfacher, nachdem man die MaskEdit# einem Array zugeordnet hat
Code: Alles auswählen
procedure TForm1.Anzfeldleer;
var i : integer;
begin
for i := 1 to 81 do
if feldnum = i then
begin
MaskEdit[i].SpaceChar:=' ';
MaskEdit[i].Refresh;
break;
end;
end;
"Anzfeldleer" wird häufig aufgerufen (257 mal)
und es gibt einige ähnliche "if loops" die von 1 bis 81 laufen:
TForm1.Anzfeld;
TForm1.Anzfeldleer;
TForm1.Farbhfeld;
TForm1.Farbsfeld; // Riesenschleife, da muss man aber vorher einiges einem Array zuordnen
TForm1.Feldaus;
Das alles sind Ideen um schneller zu werden. Ich kann kein Delphi 7 (mehr) mit Windows 11 starten, um das damit zu vergleichen.
Aber vielleicht sind die Ideen weiter oben weitaus effizienter.
Auf jeden Fall wünsche ich viel Erfolg
Rudi