Announcement

Collapse
No announcement yet.

Code vereinfachen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Code vereinfachen

    Hallo,

    gibt es eine Möglichkeit, folgenden Source-Code zu vereinfachen?

    if TrackBar1.Position = 0 then<p>
    LabelZeitLimit.Caption := '30 Sekunden';<p>
    if TrackBar1.Position = 1 then<p>
    LabelZeitLimit.Caption := '1 Minute';<p>
    if TrackBar1.Position = 2 then<p>
    LabelZeitLimit.Caption := '1 Minute 30 Sekunden';<p>
    ...
    Das ganze geht bis TrackBar1.Position = 9 und nimmt ziemlich viele Zeilen im Source-Code ein. Find' ich... )

    Schonmal 1ooo Dank im Vorraus...

    Andy

  • #2
    Schreib einfach:

    <pre>
    LabelZeitLimit.Caption := Format('%d Minute', [Trackbar1.Position div 2]); // Minuten schreiben
    if Odd(Trackbar1.Position) = False then LabelZeitLimit.Caption := LabelZeitLimit.Caption + ' 30 Sekunden';
    </pre>

    Gruß,<br>
    Bernhar

    Comment


    • #3
      wenn man aus den 'if then'- auch noch 'if then else '-strukturen macht ist das aber performanter als mit 'format etc...', denke ich. und wen interessiert es wie groß der sourcecode ist? ist doch eigentlich wurscht

      Comment


      • #4
        ..... sicher, und mit Assembler wäre man noch ein Stück schneller. Mir kommt es beim Code-Optimieren vorallem drauf an, dass er möglichst leicht verständlich ist. Unnötig lange Konstrukte mögen zwar manchmal schneller sein und für den CPU einfacher seib, das versteh ich aber nicht unter Code-Vereinfachen.<p>
        Eine weite Möglichkeit wäre übrigens die Werte in einem konstanten Array zu speichern und dann über die Trackbar-Position zuzugreifen (find ich am elegantsten):<p>
        <pre>
        const
        TrackbarTexte: array of string = ('30 Sekunden', '1 Minute', '1 Minute und 30 Sekunden' usw. );
        begin
        LabelZeitLimit.Caption := TrackbarTexte[TrackBar1.Position];
        // usw.
        </pre>
        Wahrscheinlich hat er aber das Problem eh schon lang selber gelöst...

        Comment


        • #5
          <p>Da es sich hier um eine Reihe handelt, ist die Lösung von Bernhard Berger am einfachsten. Würde es sich nicht um eine Reihe handeln (z.B.: '30s', '2min', '5min') währe hier die case-Anweisung angebrach:</p>
          <pre><b>case</b>TrackBar1.Position <b>of</b>
          0 : LabelZeitLimit.Caption := '30s';
          1 : LabelZeitLimit.Caption := '2min';
          2 : LabelZeitLimit.Caption := '5min';
          end;</pre&gt

          Comment

          Working...
          X