2017-11-14 61 views
11

IDelphi'de bir dizi dizini olarak kullanılan sayılan bir Türün ilk öğesini nasıl hariç tutabilirim?

TBValues: array [low(TEnum)..High(TEnum)] of boolean; 

sadece son n-1 değerleri içeren bu dizi olmak üzere, bu sabit tür

type 
    TEnum = (val0, val1, val2, val3, val4); 

ilk değeri hariç istediğiniz (bu durumda n = 5). 'Int64' ve 'TEnum: Bu derleyici hatayı

E2010 Uyumsuz türleri alıyorum çünkü

TBValues: array [low(TEnum)+1..High(TEnum)] of boolean; 

ama aritmetik işlemleri tahmin bu durumda izin verilmez:

Bu çalıştı '

Bu nasıl yapılır?

+0

Garip derleyici iletisi. TBValues ​​= dizi [Ord (Düşük (TEnum)) ..Yüksek (TEnum)] Boole; 'Bu da bir Int64 uyuşmazlığından şikayet ediyor. –

+0

@SertacAkyuz Aklımda da aynı soru vardı ama çözümü buldum. Bu belgelerin Ord (X) hakkında söylediği şey: _X bir Delphi ordinal-type ifadesidir. Sonuç X'in sıradaki pozisyonudur; ** tipi, X'in türünün tüm değerlerini tutabilecek en küçük standart tam sayıdır. ** _ Bu nedenle hata iletisi. –

cevap

14

Ne bariz hakkında daha fazla bilgi için

TBValues: array [Succ(low(TEnum))..High(TEnum)] of boolean; 

:

  • gerçek enum isimleri kaçınmak istiyorsanız

    TBValues: array [val1..val4] of boolean; 
    

    , bunu bu şekilde yazabilir Succ

  • Pred
+1

İkinci seçeneğinizi gerçekten çok beğeniyorum. Benim için bütün nokta, enum isimlerini önlemek – Dsm

İlgili konular