![]() |
Type und getEnumValue
Hallo zusammen,
ich habe verschiedene listen und je nach eingabe des benutzer möchte ich wissen, welche position ein bestimmtes Word in jeder dieser listen hat. Zuerst dachte ich an ein "Array of String" aber die suche nach dem Wort scheint doch ziemlich zeitaufwendig zu sein. Deshalb versuche ich mich an folgendem :
Delphi-Quellcode:
Die Nachfrage würde dann etwa so aussehen :
Type
LList1 = (en_, er_, _de, der, ung, ich, sch, _di, nd_, ie_, die, _be, und, ein, _un, che, ng_, ten, ch_, gen, den, _in, _au, _ei, in_, nde, eit, cht, ter, es_, ber, ver, _zu, on_, _vo, _ge, ste, _da, end, hen, nge, te_, ine, lic, nte, ers, _an, it_, run, ere, _mi, _er, aus, ion, _ve, ren, _si, ert, and, ist, nen, auf, sta, _we, uer, ent, des, ht_, ebe, mit, fue, tio, ngs, von, ne_, ges, bei, _st, rei, ati, ell, rde, ach, men, st_, he_, isc, ege, sse, im_, wer, ite, _fu, eru, ier, est, em_, das, _im, lle); LList2 = (es_, _de, de_, ion, ent, nt_, on_, _le, tio, le_, _co, re_, _la, la_, les, ati, que, des, ns_, _en, et_, _pa, men, _l_, ur_, _qu, ue_, _un, ne_, _et, _d_, _à_, _pr, ant, par, our, te_, _po, ons, con, en_, er_, _au, eme, ce_, tre, est, _ce, rs_, ts_, eur, ont, _so, _in, res, _se, lle, iqu, _su, _dé, ire, _re, nce, _du, _es, is_, com, du_, ans, té_, pro, _pe, pou, it_, nte, _di, une, ux_, un_, st_, _ma, dan, _ré, cti, onn, se_, ité, urs, au_, _da, ect, son, sur, ell, ist, me_, ar_, age, air, us_) ...
Delphi-Quellcode:
Das problem liegt nun an den listen selbst. In der ersten list zum beispiel habe ich ein "end" was mir nun einen Fehler beim Kompilieren bringt.
getEnumValue(TypeInfo(LList1), 'rde'));
getEnumValue(TypeInfo(LList2), 'rde')); ... Vielleicht gibt es andere wege das problem zu lösen ? Danke |
AW: Type und getEnumValue
![]() ![]() Und da du nicht verraten hast, welche Delphiversion du nutzt, verrate ich auch nicht die Möglichkeiten der neuen RTTI. and, end und andere "reservierte Wörter" sind nunmal nicht möglich. Man kann höchstens versuchen ein & voranzustellen (
Delphi-Quellcode:
), aber wie wäre es mit einem Prefix?
&and
Das kann man anhängen, wenn man den ordinalen wert sucht und abschneiden, wenn man den String hat. Nutzt du irgendwo im Programm überhaupt diese ENUMs? Also die Werte ala "en_" selber. Den Typen "LList1" kann man z.B. als Byte deklarieren und das Andere einfach nur als String-Array-Konstante. PS: Ich glaub deine Shift-Taste funktioniert etwas unregelmäßig. (das zu Lesen ist da nicht so einfach) |
AW: Type und getEnumValue
Hallo,
ich benutze Delphi 2010, Architekt. Gruss |
AW: Type und getEnumValue
Dann würde ich dir die Unit "RTTI", zusätzlich zur "TypInfo" empfehlen.
Das fängt mit TRTTIContext.Create an und von da kann man sich bis zu allem durchhangeln. Im Forum sollte sich schon Einiges finden lassen. (kann aber heut Abend daheim nochmal etwas Code raussuchen) |
AW: Type und getEnumValue
Zitat:
Es ist schon ziemlich schwierig diese listen zu lesen, hab etwa 10 verschiedene davon (mehr geplant). Die Wörter in den Types haben eine bestimmte Reihenfolge, auch wen das nicht gleich ersichtlich ist. Meine Procedure soll dann ermitteln, an welcher Stelle ein bestimmter String (in meinem Beispiel oben "rde") in jeder dieser Listen hat. So eine Art "IndexOf" eben. die listen stehen fest und sollen zur Laufzeit auch nicht verändert werden. Hatte es Anfangs mit einer "Array of String" Constante versucht, auch das habe ich oben schon erwähnt. Aber da konnte ich den "IndexOf" nur mit einer längeren Schleife ermitteln. Das mit dem Prefix hab ich auch schon ausprobiert und scheint wohl die beste Lösung zu sein... Danke ... |
AW: Type und getEnumValue
Es würde sich auch ein TDictionary anbieten, dann hast du keine Probleme mit den Präfixen.
Und die Suche innerhalb sollte damit auch recht zügig sein. |
AW: Type und getEnumValue
![]() ![]() ![]() ![]() Zitat:
![]() Die Ausnahme sind sortierte Listen, HashMaps oder z.B. BTree's, wo optimaler gesucht werden kann. |
AW: Type und getEnumValue
Darum ja auch ein
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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 by Thomas Breitkreuz