![]() |
StringList Buchstaben verbieten?
Guten Morgen zusammen:-D,
ich lese alle Ordernamen in eine StringList ein. Nun möchte ich mit diesen weiter arbeiten, jedoch nur mit denen, die numerisch sind. Gibt es irgendwie eine Möglichkeit, mit der man bei einer StringListe nur numerische Einträge zulasssen kann? Oder muss ich im nachhinein die nicht numerischen Einträge irgendwie raussuchen und dann löschen?:pale: Schon mal vielen Dank für eure Antworten:wink: |
AW: StringList Buchstaben verbieten?
Moin...:P
Zitat:
Zitat:
Zitat:
Sichwort: TSringList.Delete, Copy oder RexEx... |
AW: StringList Buchstaben verbieten?
Oder du machst dir eine Ableitung der TStringList und überschreibst die Add Methode. Hier kannst du direkt filtern was du zulassen möchtest und was nicht. Halte ich persönlich für die einfachste Variante ohne mir jetzt irgendwelchen SourceCode ausgedacht zu haben.
|
AW: StringList Buchstaben verbieten?
Danke für eure schnellen Antworten :)
Zitat:
Ich probier es nun mal so: Zitat:
|
AW: StringList Buchstaben verbieten?
Für ersteren Vorschlag hab ich mal schnell etwas zusammengedengelt. Es geht auch eleganter, aber ich denke, so ist es halbwegs verständlich:
Delphi-Quellcode:
Wenn ich keinen Denkfehler gemacht habe, sollten nur noch Strings hinzugefügt werden, die komplett aus Ziffern bestehen.
type
TMyStringList = class(TStringList) public function Add(const S: string): Integer; override; end; ... { TMyStringList } function TMyStringList.Add(const S: string): Integer; function IsNumeric(const s: string): Boolean; const NUMBERS = ['0'..'9']; var i: integer; begin Result := true; for i := 1 to Length(s) do if not (s[i] in NUMBERS) then begin Result := false; Exit; end; end; begin if IsNumeric(S) then Result := inherited Add(S) else Result := -1; end; |
AW: StringList Buchstaben verbieten?
Moin Jörn,
bitte denke dran: Da Du, aller Voraussicht nach, Zeilen aus der Strlngliste löschen wirst, solltest Du diese rückwärts durchgehen, also von StringList.Count-1 to 0, da Du ansonsten auf einen Fehler laufen wirst. (Index out of bounds) |
AW: StringList Buchstaben verbieten?
downto ;)
|
AW: StringList Buchstaben verbieten?
Zitat:
Entweder Inc(Idx) oder SL.Delete(Idx) :stupid: So, genug verwirrt ... viel Spaß noch damit. |
AW: StringList Buchstaben verbieten?
Zitat:
Delphi-Quellcode:
und
'0'
Delphi-Quellcode:
vergleicht.
'9'
Zur Erklärung grob vereinfacht: Jedes Zeichen entspricht einem numerischen Wert (also Strings sind eigentlich Zahlenketten; jede Zahl hat dann eine standardisierte Entsprechung). So weiß dann Windows oder dein Textzeichner deiner Wahl, welche Glyphe verwendet werden soll, die es zeichnen soll. So. Und jetzt ist das Schöne, dass die Zeichencodes von 0 bis 9 zufällig (?) ![]()
Delphi-Quellcode:
im entsprechenden Zahlenabschnitt ist. Dadurch, dass du nur mit '0' und '9' vergleichen musst, wird die Prüfung ein wenig effizienter, als wenn du in einem
s[i]
Delphi-Quellcode:
Feld nachschaust (der
NUMBERS
Delphi-Quellcode:
-Operator macht nach dem Übersetzen eine lineare Suche durch das Feld -> Aufwand ist multiplikativ mit der Länge des
in
Delphi-Quellcode:
-Feldes verknüpft)
NUMBERS
Wenn du natürlich auf beliebige bestimmte Zeichen testen musst, dann funktioniert dieser Trick unter Umständnen nicht mehr... :o Hoffe, ich habe nicht mehr verwirrt, als geholfen. Im Zweifel diesen Post einfach ignorieren :P Brighty |
AW: StringList Buchstaben verbieten?
Zitat:
(wie sehen noch mal die UNC-Angaben aus?) Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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