AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Kompletten Type in Combobox, Variable Werte

Ein Thema von ChEeTaH · begonnen am 20. Jan 2009 · letzter Beitrag vom 21. Jan 2009
Antwort Antwort
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#1

Kompletten Type in Combobox, Variable Werte

  Alt 20. Jan 2009, 20:37
Hi
in meinem Programm muss der Benutzer aus einer festgelegten Anzahl von Werten eines selbst definierten Typs auswählen.
ich habe eine Combobox, die ich gerne mit Werten dieses Typs füttern möchte.

Beispiel:

type FruchtTyp = (Banane, Apfel, Birne, Kiwi); Jetzt habe ich eine Funktion, die den Ordinalwerten einen String zuordnet:

Delphi-Quellcode:
function FruchtTypToStr(FruchtTyp: FruchtTyp): String;
begin
  Case FruchtTyp of
   Banane: FruchtTypToStr := 'Banane';
   Apfel: FruchtTypToStr := 'Apfel';
   Birne: FruchtTypToStr := 'Birne';
   Kiwi: FruchtTypToStr := 'Kiwi';
  end;
end;
Wie kann ich alle Werte (Anzahl variabel, hab keine Lust jedesmal alle Comboboxen zu aktualisieren^^) über die Funktion FruchtTypToStr in eine ComboBox hinzufügen?
Gibts es eine Art Count Methode? Dann könnte ich mit einer simplen For-Schleife alle Einträge hinzufügen.


2. Problem:
Wie finde ich heraus, was der Benutzer ausgewählt hat? Meine Combobox ist nach Alphabet geordnet.

Danke schonmal.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Kompletten Type in Combobox, Variable Werte

  Alt 20. Jan 2009, 21:00
Zitat:
Gibts es eine Art Count Methode?
Delphi-Quellcode:
     ord(high(FruchtTyp)) //=Index des letzten Elements
succ(ord(high(FruchtType))) // = Anzahl der Elemente
Ralph
  Mit Zitat antworten Zitat
ChEeTaH

Registriert seit: 12. Jan 2009
49 Beiträge
 
Delphi XE2 Architect
 
#3

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 06:22
Danke für die schnelle Antwort.
Wie kann ich das mit einer For schleife lösen?
Delphi-Quellcode:
   
for I := 0 to succ(ord(high(FruchtTyp))) - 1 do
begin
  Showmessage(FruchttypToStr(ord(i)));
end;
Gibts eine Umkehrfunktion von ord?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 08:04
Versuch es mal mitShowmessage(FruchttypToStr(FruchtTyp(i))); Wobei es etwas unglücklich ist, dass der Parameter genauso wie der Typ heißt, daher benennt man Typen ja in der Regel mit einem "T" als Präfix.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 08:15
Wenn du dir einfach eine Funktion schreibst der du die TStrings der Combobox übergibst musst du auch nur diese eine Funktion pflegen. Für jede Combobox eine eigene Schleife finde ich übertrieben und unglücklich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#6

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 08:25
Schade Daddy war mal wieder schneller, aber hab trotzdem noch was senfähnliches was ich dazu abgeben kann

Zitat von ChEeTaH:
Delphi-Quellcode:
   
for I := 0 to succ(ord(high(FruchtTyp))) - 1 do
begin
  Showmessage(FruchttypToStr(ord(i)));
end;
Die Schleife dürfte so nicht functionieren.
ord(high(FruchtTyp)) ist ja schon der index des letzten Elements, davon succ ist dieser Index +1, gibts also nicht.

Ich weiss sowieso nicht was succ von nem ord bzw ord von nem integer bewirken soll.

high(FruchtTyp) gibt schon nen integer zurück, davon ord ist eigentlich wenig sinnig.
und succ(i) ist = i+1...
narf - not a real function
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.980 Beiträge
 
Delphi 12 Athens
 
#7

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 08:49
Zitat von HenKst:
Die Schleife dürfte so nicht functionieren.
Doch! Na ja, fast.

Zitat von HenKst:
ord(high(FruchtTyp)) ist ja schon der index des letzten Elements, davon succ ist dieser Index +1, gibts also nicht.
Deswegen zieht er ja auch 1 davon ab!

Zitat von HenKst:
Ich weiss sowieso nicht was succ von nem ord bzw ord von nem integer bewirken soll.
succ gibt einfach den nächst höheren Wert der übergenen Variablen zurück. Bei einem Integer ist das wieder ein Integer, bei einem Aufzählungstyp ist das auch wieder dieser Typ.

Zitat von HenKst:
high(FruchtTyp) gibt schon nen integer zurück, davon ord ist eigentlich wenig sinnig.
und succ(ord(i)) ist = i+1...
high(FruchtTyp) gibt keinen Integer zurück, sondern einen FruchtTyp - genauer gesagt, den höchsten FruchtTyp.

Die Funktionen succ, pred, high und low geben alle genau den Typ zurück, dere ihnen übergeben wurde. Pascal's Typsicherheit läßt grüßen.

Ich gestehe aber zu, daß die Schleifengrenze unnötig kompliziert angegeben wurde (mal abgesehen davon, daß ord(I) natürlich nicht geht):

Delphi-Quellcode:
var
  ft: FruchtTyp;

for ft := low(FruchtTyp) to high(FruchtTyp) do
begin
  Showmessage(FruchttypToStr(ft));
end;
Bei neueren Delphi-Versionen geht auch dies:

Delphi-Quellcode:
var
  ft: FruchtTyp;

for ft in FruchtTyp do
begin
  Showmessage(FruchttypToStr(ft));
end;
Uwe Raabe
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#8

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 09:00
okay das -1 hatte ich mal creativ überlesen

In der delphi hilfe steht aber eindeutig
function High(var X: Type): Integer; War einfach mal davon ausgegangen das das pauschal gilt und nicht getestet/weitergelesen, aus dem was weiter unten steht könnte man schliessen das tatsächlich der Typ zurückgegeben wird

Ich nehme alles zurück und behaupte das Gegenteil!

Abgesehen vom succ

succ(ord(high(FruchtTyp))) = ord(high(FruchtTyp) + 1
narf - not a real function
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Kompletten Type in Combobox, Variable Werte

  Alt 21. Jan 2009, 11:04
Hallo,

schau mal hier, ansonsten sollte das über RTTI und TypeInfo gehen, ohne das Du eine "Übersetzungstabelle" pflegen musst.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:09 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