Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem bei TStringList (https://www.delphipraxis.net/180717-problem-bei-tstringlist.html)

Popov 11. Jun 2014 22:25

AW: Problem bei TStringList
 
Zitat:

Zitat von mkinzler (Beitrag 1261999)
3.) Vergessse with

In dem Fall sehe ich nichts verwerfliches dran, aber jeder nach seinem Geschmack.

Zitat:

4.)
Delphi-Quellcode:
procedure TForm1.Marmelade(ShowX: array of Byte);
var
  i: Integer;
begin
  for i := Low(ShowX) to High(ShowX) do
    FindComponent('Show'+IntToStr(i+1)).Visible := ShowX[i] = 1;
end;

mkinzler 11. Jun 2014 22:27

AW: Problem bei TStringList
 
In diesem Fall nicht, aber es ist unnötig, wenn er eine Methode daraus macht.

Stevie 11. Jun 2014 22:49

AW: Problem bei TStringList
 
Warum man ein array of Byte für True/False übergibt um dann auf Gleichheit mit 1 zu überprüfen anstatt ein array of Boolean zu übergeben, entzieht sich mir.

Popov 11. Jun 2014 23:01

AW: Problem bei TStringList
 
Weil
Delphi-Quellcode:
[1, 1, 1, 1, 0]
viel kürzer ist als
Delphi-Quellcode:
[True, True, True, True, False]
zu schreiben ist. Und da waren viel Trues und Falses, und ich bin von Natur aus faul. Aber ja, unter normalen Umständen würde man Boolean nehmen. Außerdem müssen es auch keine offene Array-Parameter sein, war nur etwas Schabernack.

Popov 11. Jun 2014 23:03

AW: Problem bei TStringList
 
Zitat:

Zitat von mkinzler (Beitrag 1262001)
In diesem Fall nicht, aber es ist unnötig, wenn er eine Methode daraus macht.

Ok, habe ich nicht mitbekommen.

Namenloser 11. Jun 2014 23:12

AW: Problem bei TStringList
 
Viel zu kompliziert...

Vorausgesetzt ich habe richtig interpretiert, was der Code des OP machen soll:
Delphi-Quellcode:
procedure PrintOutAuto;
var
  Labels: array[0..4] of TLabel;
  StringRoh: String;
  Zeit: String;
  Info: String;
  i: integer;
begin
  Labels[0] := Form1.Show1;
  Labels[1] := Form1.Show2;
  Labels[2] := Form1.Show3;
  Labels[3] := Form1.Show4;
  Labels[4] := Form1.Show5;
 
  // Standardmäßig alle Labels ausblenden
  for i := low(Labels) to high(Labels) do
    Labels[i].Visible := False;
 
  for i := 0 to slA.Count-1 do
  begin
    ShowMessage(Format('Z%d,slA[%d]', [i+1, i]));

    StringRoh := slA[i];
    Zeit := Copy(StringRoh, 1, 5);
    Info := StringRoh;
    if Length(StringRoh) > 6 then
      Delete(Info,1,6);

    Labels[i].Caption := (Zeit + ' - ' + Info);
    // Bedarfsweise Labels wieder einblenden
    Labels[i].Visible := True;
  end;
end;

Sir Rufo 11. Jun 2014 23:54

AW: Problem bei TStringList
 
Wenn man schon keine Methode daraus bauen will, warum werden hier die Referenzen hart einkodiert, anstatt diese als Parameter zu übergeben? :roll:
Delphi-Quellcode:
procedure PrintOutAuto( AForm : TForm1; AValues : TStrings );
var
  Labels: array[0..4] of TLabel;
  StringRoh: String;
  Zeit: String;
  Info: String;
  LIdx: integer;
begin
  Labels[0] := AForm.Show1;
  Labels[1] := AForm.Show2;
  Labels[2] := AForm.Show3;
  Labels[3] := AForm.Show4;
  Labels[4] := AForm.Show5;
 
  for LIdx := 0 to AValues.Count-1 do
  begin
    ShowMessage(Format('Z%d,AValues[%d]', [LIdx+1, LIdx]));

    StringRoh := AValues[LIdx];
    Zeit := Copy(StringRoh, 1, 5);
    Info := StringRoh;
    if Length(StringRoh) > 6 then
      Delete(Info,1,6);

    Labels[LIdx].Caption := (Zeit + ' - ' + Info);
    // Bedarfsweise Labels wieder einblenden
    Labels[LIdx].Visible := ({Bedingung einfügen für die Sichtbarkeit});
  end;
end;

himitsu 11. Jun 2014 23:56

AW: Problem bei TStringList
 
Zitat:

Zitat von Stevie (Beitrag 1262002)
Warum man ein array of Byte für True/False übergibt um dann auf Gleichheit mit 1 zu überprüfen anstatt ein array of Boolean zu übergeben, entzieht sich mir.

Warum überhaupt ein Array, wo es doch nur eine einzige Nummer reichen würde?
Pssst: Die Werte sind fortlaufend ... siehe mein erster Code. :wink:

Namenloser 12. Jun 2014 00:02

AW: Problem bei TStringList
 
@Sir Rufo: Dein Code ist jetzt aber falsch, weil die übrigen Labels nicht ausgeblendet werden bei AValues.Count <= 4.

Popov 12. Jun 2014 00:35

AW: Problem bei TStringList
 
Dann kann man den Teil
Delphi-Quellcode:
    StringRoh := AValues[LIdx];
    Zeit := Copy(StringRoh, 1, 5);
    Info := StringRoh;
    if Length(StringRoh) > 6 then
      Delete(Info,1,6);

    Labels[LIdx].Caption := (Zeit + ' - ' + Info);
so ankürzen:
Delphi-Quellcode:
      StringRoh := AValues[LIdx];
      Labels[LIdx].Caption := Copy(StringRoh, 1, 5) + ' - ' + IfThen(Length(StringRoh) > 6, Copy(StringRoh, 7, MaxInt), StringRoh);
U. U. kann man noch AValues[LIdx] noch gegen StringRoh tauschen, dann ist das alles nur noch eine Zeile.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz