![]() |
String Collection
Mh.. ich habe gerade irgendwie nen totalen Blackout und bitte daher um Hilfe :)
Ich brauche eine kostannte Sammlung von bestimmten Strings, sodass ich später per 'in'-Operator prüfen kann, ob ein anderer String eines dieser Elemente enthält. Aber wie verflixt noch mal, kann man so eine konstante Collection deklarieren?! :oops: Danke, Evian |
Re: String Collection
Also von einzelnen Zeichen geht so
Delphi-Quellcode:
Also Sets mit Strings, wo man mit dem "in" Operator arbeiten kann, sind mir allerdings in Delphi.Win32 nicht bekannt...
const
Coll = ['a', 'b', 'c']; var C: Char; begin C := 'd'; if C in Coll then ... end; (Edit: Da gibts lediglich die typisierten Arrays, die Du initialiseren kannst, da geht der in Operator aber nicht...) mfG mirage228 |
Re: String Collection
Das wird nicht gehen, da in einem Set nur "ordinale" Werte gespeichert werden können.
Diese oridinalen Werte wiederum dürfen nur eine maximalen Umfang von 0-254 haben, das heisst, sie müssen 1 Byte groß sein (Sprich du kannst Zahlen von 0-254 sowie einzelne Zeichen darin speichern) Deklarierst du ein Set als (mtBla, mtBlubb, mtSowieso), dann werden diese intern auch nur als Byte-Zahlen behandelt (mtBla = 0, mtBlubb = 1, mtSowieso = 2,....). |
Re: String Collection
Mh.. man kann nur Ordinal Typen in ein solches Set schreiben?!
Och schade, dachte dass man das auc bei Strings machen kann, also dass ich es dann nutzen kann wie TShiftstate, nur eben als Konstante. |
Re: String Collection
Du deklarierst ein Array Of String als Konstante
Delphi-Quellcode:
und suchst dann per For-Schleife:
Const
cStrings : Array [0..4] of String = ('Zero','Eins','Dwa','Thrie','Vor');
Delphi-Quellcode:
Oder du packst die Strings in einen String, mit delimiter und suchst mit Pos:
Function StringIn (Const aPattern : String; aStringArray : TStringArray) : Boolean;
Begin For i:=.... End;
Delphi-Quellcode:
Beides kurz und knapp und ausreichend schnell (wenn man es nicht gerade 100000000 aufruft).
Const
ccStrings = '#Zero#Eins#Dwa#Thrie#Vor'; Begin If Pos ('#'+aPattern, ccStrings)<>0 Then .... |
Re: String Collection
naja ich hatte es jetzt mit IF und mehrmals or gelöst, aber Deine Lösung gefällt mir besser :) .. Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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