AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Type und getEnumValue

Ein Thema von DavidKlimas · begonnen am 12. Jun 2012 · letzter Beitrag vom 13. Jun 2012
Antwort Antwort
DavidKlimas

Registriert seit: 24. Sep 2006
Ort: Arlon, Belgien
71 Beiträge
 
#1

Type und getEnumValue

  Alt 12. Jun 2012, 22:52
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:
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_)
...
Die Nachfrage würde dann etwa so aussehen :
Delphi-Quellcode:
getEnumValue(TypeInfo(LList1), 'rde'));
getEnumValue(TypeInfo(LList2), 'rde'));
...
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.

Vielleicht gibt es andere wege das problem zu lösen ?

Danke

Geändert von DavidKlimas (12. Jun 2012 um 22:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Type und getEnumValue

  Alt 12. Jun 2012, 23:34
Delphi-Referenz durchsuchenGetEnumName was man übrigens selbst gefunden hätte, hätte man mal in die OH gesehn denn in Delphi-Referenz durchsuchenGetEnumValue wird das verlinkt.

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 (&and ), aber wie wäre es mit einem Prefix?
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)
$2B or not $2B

Geändert von himitsu (12. Jun 2012 um 23:42 Uhr)
  Mit Zitat antworten Zitat
DavidKlimas

Registriert seit: 24. Sep 2006
Ort: Arlon, Belgien
71 Beiträge
 
#3

AW: Type und getEnumValue

  Alt 13. Jun 2012, 01:02
Hallo,

ich benutze Delphi 2010, Architekt.

Gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Type und getEnumValue

  Alt 13. Jun 2012, 09:21
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)
$2B or not $2B
  Mit Zitat antworten Zitat
DavidKlimas

Registriert seit: 24. Sep 2006
Ort: Arlon, Belgien
71 Beiträge
 
#5

AW: Type und getEnumValue

  Alt 13. Jun 2012, 21:23
Delphi-Referenz durchsuchenGetEnumName was man übrigens selbst gefunden hätte, hätte man mal in die OH gesehen denn in Delphi-Referenz durchsuchenGetEnumValue wird das verlinkt.
Nunja, dass GetEnumName kenne ich ja auch nur das das nicht meine Frage betrifft.

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 ...

Geändert von DavidKlimas (13. Jun 2012 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Type und getEnumValue

  Alt 13. Jun 2012, 22:39
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Type und getEnumValue

  Alt 13. Jun 2012, 22:41
Delphi-Referenz durchsuchenIndexText
Delphi-Referenz durchsuchenIndexStr
Delphi-Referenz durchsuchenMatchText
Delphi-Referenz durchsuchenMatchStr

Zitat:
Aber da konnte ich den "IndexOf" nur mit einer längeren Schleife ermitteln.
Hier im Forum suchenTStrings.IndexOf macht auch nichts anderes, als die ganze Liste in einer Schleife durchzugehn und den String zu suchen.
Die Ausnahme sind sortierte Listen, HashMaps oder z.B. BTree's, wo optimaler gesucht werden kann.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Type und getEnumValue

  Alt 13. Jun 2012, 22:56
Darum ja auch ein Delphi-Referenz durchsuchenTDictionary, weil das mit einer Hash-Liste arbeitet
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.
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