1) Qualcuno sa se è possibile eseguire il ciclo di un'enumerazione irregolare in Delphi (XE)?Ciclo attraverso enumerazione irregolare in Delphi
Il ciclo su una normale numerazione è ok. Da Delphi Basics:
var
suit : (Hearts, Clubs, Diamonds, Spades);
begin
// Loop 3 times
For suit := Hearts to Diamonds do
ShowMessage('Suit = '+IntToStr(Ord(suit)));
end;
Ma, se 'vestito' invece è dichiarata come
var
suit : (Hearts=1, Clubs, Diamonds=10, Spades);
esso loop 10 volte. Non sorprendente, ma mi piacerebbe loop 3. L'unica soluzione che ho trovato finora è la conversione di un'enumerazione in un set e utilizzare il 'for ... in'-loop come su delphi.about.com.
Quindi, se la risposta alla domanda 1) è no, quindi:
2) Come convertire dall'enumerazione per impostare in Delphi?
Il contesto in cui lo sto utilizzando è un array di componenti di edit-box (TEdit) che ha una numerazione irregolare (edit1, edit5, edit7, edit3, ...). Mentre è possibile riordinare tutte le caselle di modifica, rimuove il motivo dell'utilizzo dell'enumerazione come modo flessibile per consentire l'aggiunta di una casella di modifica nel mezzo dell'enumerazione.
Perché non potete usare qualche discendente 'TList' e iterare su quello? –
L'enumerazione verrà utilizzata come indice nelle matrici di TLabels, TEdit e Stringhe in modo che sia possibile utilizzare StringArray [Job]: = Editbox [Job]. TList potrebbe funzionare, ma l'obiettivo era rendere il codice sorgente più facile da leggere usando enumerazioni (irregolari) come indici, come HashMap in Java. Quello che vedo ora probabilmente non funzionerà ... – Truls
Hai provato a usare XEs RTTI? L'ordinario RTTI dall'unità 'TypInfo' fallisce miseramente. Apparentemente non si può avere 'TypeInfo()' su un'enumerazione irregolare, ho anche provato con un set e mi hanno dato le violazioni di accesso. –