Jup, im Prinzip könnte man denken daß dort ein Begin-End fehlt, aber letztendlich ist das egal, da beide Vergleiche genau das selbe machen.
Und da die nächsten IFs darauf aufbauen (noch mehr Zeilen), kürzt sich das erste IF so oder so logisch gesehn eh weg.
Delphi-Quellcode:
procedure TForm1.PrintOutAuto;
var
Zeit: String;
Info: String;
StringRoh: String;
Zeilen: Integer;
begin
Zeilen:=slA.Count; //Füllen der Zeilen
ShowMessage(IntTOStr(Zeilen));
if Zeilen >= 1 then
//if Length(slA[0]) >= 1 then
begin
ShowMessage('Z1,slA[0]');
StringRoh:=slA[0];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Show1.Caption:=Zeit + ' - ' + Info;
end;
if Zeilen >= 2 then
//if Length(slA[1]) >= 1 then
begin
ShowMessage('Z2,slA[1]');
StringRoh:=slA[1];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Show2.Caption:=Zeit + ' - ' + Info;
end;
if Zeilen >= 3 then
//if Length(slA[2]) >= 1 then
begin
ShowMessage('Z3,slA[2]');
StringRoh:=slA[2];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Show3.Caption:=Zeit + ' - ' + Info;
end;
if Zeilen >= 4 then
//if Length(slA[3]) >= 1 then
begin
ShowMessage('Z4,slA[3]');
StringRoh:=slA[3];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Show4.Caption:=Zeit + ' - ' + Info;
end;
if Zeilen >= 5 then
//if Length(slA[4]) >= 1 then
begin
ShowMessage('Z5,slA[4]');
StringRoh:=slA[4];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
Show5.Caption:=Zeit + ' - ' + Info;
end;
{für die ersten 5: zeit + info ausgeben}
Show1.Visible := slA.Count >= 1;
Show2.Visible := slA.Count >= 2;
Show3.Visible := slA.Count >= 3;
Show4.Visible := slA.Count >= 4;
Show5.Visible := slA.Count >= 5;
end;
Ist dir beim Schreiben nicht aufgefallen, daß du da ständig Code kopiert hast?
Delphi-Quellcode:
if Zeilen >= XXX then
//if slA[XXX-1]) <> '' then
begin
ShowMessage(Format('Z%d,slA[%d]', [XXX, XXX-1]));
StringRoh:=slA[XXX-1];
Zeit:=Copy(StringRoh,1,5);
Info:=StringRoh;
if Length(StringRoh) >6 then Delete(Info,1,6);
(FindComponent('Show'+IntToStr(XXX)) as TLabel).Caption:=Zeit + ' - ' + Info;
end;
Man glaubt es kaum, sowas kann man entweder in eine eigene Methode auslagern, oder als Schleife zusammenfassen.
Außerdem verwendest du manchmal "Zeilen" und dann wieder slA.Count, welches doch alles das Selbe ist.
Nja egal, aber wenn schon, dann sollte man sich schon auf Einwas einigen.
Und das
ShowXXX.Visible := slA.Count >= XXX;
lässt sich notfalls auch in eine Schleife legen, oder gleich mit dem
Zeilen >= XXX
abgleichen.
Siehst'e, hier wird auch wieder das Gleiche verwendet, also kann man das sogar an eine Stelle zusammenfassen.
Delphi-Quellcode:
ShowXXX.Visible := Zeilen >= XXX;
if ShowXXX.Visible then
...
Das komplette PrintOutAuto besteht letztendlich nur aus effektiv maximal 15 Codezeilen (eher die Hälfte), aus Welchen jemand fast 150 gemacht hat.
Je mehr Code, um so besser ist er und 5 mal der gleiche Code, das ist dann natürlich 5 Mal so guter Code