![]() |
AW: Problem bei TStringList
Zitat:
Zitat:
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; |
AW: Problem bei TStringList
In diesem Fall nicht, aber es ist unnötig, wenn er eine Methode daraus macht.
|
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.
|
AW: Problem bei TStringList
Weil
Delphi-Quellcode:
viel kürzer ist als
[1, 1, 1, 1, 0]
Delphi-Quellcode:
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.
[True, True, True, True, False]
|
AW: Problem bei TStringList
Zitat:
|
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; |
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; |
AW: Problem bei TStringList
Zitat:
Pssst: Die Werte sind fortlaufend ... siehe mein erster Code. :wink: |
AW: Problem bei TStringList
@Sir Rufo: Dein Code ist jetzt aber falsch, weil die übrigen Labels nicht ausgeblendet werden bei AValues.Count <= 4.
|
AW: Problem bei TStringList
Dann kann man den Teil
Delphi-Quellcode:
so ankürzen:
StringRoh := AValues[LIdx];
Zeit := Copy(StringRoh, 1, 5); Info := StringRoh; if Length(StringRoh) > 6 then Delete(Info,1,6); Labels[LIdx].Caption := (Zeit + ' - ' + Info);
Delphi-Quellcode:
U. U. kann man noch AValues[LIdx] noch gegen StringRoh tauschen, dann ist das alles nur noch eine Zeile.
StringRoh := AValues[LIdx];
Labels[LIdx].Caption := Copy(StringRoh, 1, 5) + ' - ' + IfThen(Length(StringRoh) > 6, Copy(StringRoh, 7, MaxInt), StringRoh); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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