Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Dynamischer Verweis auf Komponente (https://www.delphipraxis.net/197899-dynamischer-verweis-auf-komponente.html)

Moombas 19. Sep 2018 10:51

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Zitat von DeddyH (Beitrag 1413386)
Wieso sollte der Code eine Exception werfen, wenn im 6. Zeichen eine Ziffer steht?

Er wirft eine Exception wenn dort KEINE Ziffer steht.

DeddyH 19. Sep 2018 10:59

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Delphi-Quellcode:
    try
      StrToInt(copy(Name, 6, 1));
//1-Stellig (0-9)
    except
//2-Stellig (10-99)
    end;

Ach, und in dem Fall sind es dann 2 Ziffern? Ich verstehe Dein Exception-Handling nicht.

Moombas 19. Sep 2018 11:50

AW: Dynamischer Verweis auf Komponente
 
Ja genau. Aber es ist doch einfach zu verstehen. Die Namen bauen sich (logischerweise) so auf:

ButtonXABC
...
ButtonXXABC

Nun schaue ich (nach obigem Beispiel) ob an 8. Stelle eine Zahl ist. Wenn ja, dann ist an der 7. Stelle auch eine Zahl und somit sind wir im Bereich 10-99. Andernfalls sind wir im Bereich 0-9.
Oder Andres gesagt: Versucht er bei "ButtonXABC" sonst das "A" in eine Zahl zu wandeln, was nicht geht -> exception -> anderes Handling.
Delphi-Quellcode:
    try
      StrToInt(copy(Name, 8, 1));
//1-Stellig (0-9)
    except
//2-Stellig (10-99)
    end;
Alternativ hätte man auch generell 2-Stellig arbeiten können:
Button0XABC
...
ButtonXXABC
Dann bräuchte man nur prüfen ob an 7. Stelle eine "0" vorhanden ist und dementsprechend ableiten, also:
Delphi-Quellcode:
if Name[7] = '0' then
//1-Stellig (0-9)
    else
//2-Stellig (10-99)

noisy_master 21. Sep 2018 08:35

AW: Dynamischer Verweis auf Komponente
 
Also ehrlich gesagt finde ich das alles sehr aufwändig. ich würde - wenn es wirklich nur um Nummern geht - einfach das .Tag verwenden:

beim erstellen des Buttons das Tag mit der entsprechenden Nummer versehen, alle Buttons auf das gleiche onClick und dann 'tool'+inttostr((sender as Tbutton).tag)+'......'

Moombas 21. Sep 2018 09:33

AW: Dynamischer Verweis auf Komponente
 
@noisy_master: Es gibt viele Wege nach Rom ;)

Aber ich denke (nur persönliche Meinung), das in der Summe es wesentlich länger dauert, bei jedem Button manuell den "Tag" anzupassen als einmal dies (über den sowieso schon manuell gesetzten Namen) per Exception abzufangen.
Auch die Fehlerquelle ist höher, denn: Buttons mit gleichem "Tag" sind möglich ("Tag"-Änderung beim manuellen Erstellen des Buttons vergessen), mit gleichen Namen jedoch nicht (-> Fehlermeldung)!

Anders wäre dies evtl. bei generierten Buttons im Programm, da hier das Setzen des "Tag" mal "nebenbei" mit gemacht werden kann und dies mit einer dafür angelegten Variable durchgezählt werden kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.
Seite 3 von 3     123   

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