AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei TStringList

Offene Frage von "DeddyH"
Ein Thema von muffin104k6 · begonnen am 11. Jun 2014 · letzter Beitrag vom 12. Jun 2014
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.376 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem bei TStringList

  Alt 11. Jun 2014, 20:24
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
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Jun 2014 um 20:30 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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-2025 by Thomas Breitkreuz