Problemy ze zbiorem wyliczeniowym

0

Umiescilem na sztywno naglowki tabeli w taki sposob
var tabkol = set of [Nr,Imie,Nazwisko,Ulica ...];
nastepnie w warunku if(nazwaStringu in tabkol) then .....
Kompilaotr protestuje, bo nie moze sprawdzic czy nazwaStringu jest w typie wyliczeniowym. Co zrobic .

0

nie podałeś całego kodu więc przypuszczam, że czegoś Ci brakuje. Na początek zajrzyj może tu i porównaj swój kod z tym, który tam jest http://www.delphibasics.co.uk/RTL.asp?Name=Set

0
Isek napisał(a)

Umiescilem na sztywno naglowki tabeli w taki sposob
var tabkol = set of [Nr,Imie,Nazwisko,Ulica ...];
nastepnie w warunku if(nazwaStringu in tabkol) then .....
Kompilaotr protestuje, bo nie moze sprawdzic czy nazwaStringu jest w typie wyliczeniowym. Co zrobic .

chyba coś poknocone ? to działa ? bo chyba powinno być chociaż nie sprawdzałem:
type tabkol = set of [Nr, Imie, Nazwisko, Ulica ...];
a potem:
var costam: tabkol;
i:
if(nazwaStringu in costam) then ...

0
Adamo napisał(a)

bo chyba powinno być chociaż nie sprawdzałem:
type tabkol = set of [Nr, Imie, Nazwisko, Ulica ...];
a potem:
var costam: tabkol;
i:
if(nazwaStringu in costam) then ...

no właśnie niekoniecznie zobacz sobie na link, który podałem

0

Z tego, co zrozumiałem, to przyda się konwersja nazwy elementu na typ String - poszukaj informacji o RTTI (RunTime Type Information).

0
brodny napisał(a)

Z tego, co zrozumiałem, to przyda się konwersja nazwy elementu na typ String - poszukaj informacji o RTTI (RunTime Type Information).

ke??? niedługo będziecie do tego chcieli asma zaprząc! Wejdzcie sobie na link, który podałem i zobaczcie jak wygląda prawidłowa deklaracja takiej zmiennej!!

taki mały hint dla autora pytania, bo tu też może mieć problem zadeklarowanie zmiennej nie przypisuje jej wartości

0

Cos takiego z linku
var
Alphabet : Set of 'A'..'z';

tylko ja chccialem zrobic rekord stringów var tabstr=set of String; ale takie cos nie istnieje, wiec powstal typ wyliczeniowy, gdzie zawarte elementy chce sprawdzic ze zmieniajacym sie nazwa jakiegos stringu

0
Isek napisał(a)

Cos takiego z linku
var
Alphabet : Set of 'A'..'z';

tylko ja chccialem zrobic rekord stringów var tabstr=set of String; ale takie cos nie istnieje, wiec powstal typ wyliczeniowy, gdzie zawarte elementy chce sprawdzic ze zmieniajacym sie nazwa jakiegos stringu

nie da się tak - albo zbiory albo stringi

type
  ttabkol = set of (Nr,Imie,Nazwisko,Ulica);
var
  tabkol: ttabkol;
begin
  tabkol := [Nr,Imie,Nazwisko,Ulica];
  if (Nr in tabkol) then
    ShowMessage('jest');
end;

albo

var
  tabkol: set of (Nr,Imie,Nazwisko,Ulica);
begin
  tabkol := [Nr,Imie,Nazwisko,Ulica];
  if (Nr in tabkol) then
    ShowMessage('jest');
end;

nie można tak

var
  tabkol: set of (Nr,Imie,Nazwisko,Ulica);
  aa: string;
begin
  aa := 'Nr';
  tabkol := [Nr,Imie,Nazwisko,Ulica];
  if (aa in tabkol) then
    ShowMessage('jest');
end;

jak chcesz sprawdzać coś takiego to sobie StringList stwórz z wartościami, które mogą być w stringu i sprawdzaj przez
if StringList.IndexOf(string) <> -1 then jest
lub szybciej, ale przy posortowanej StringLiscie
if StringList.Find(string, miejsce) then jest

0
Misiekd napisał(a)

ke??? niedługo będziecie do tego chcieli asma zaprząc! Wejdzcie sobie na link, który podałem i zobaczcie jak wygląda prawidłowa deklaracja takiej zmiennej!!

Przestań na mnie naskakiwać, bo ja też potrafię być niemiły. Jeśli komuś się to podoba - niech sobie klepie w asemblerze, ma do tego święte prawo. A nie moja wina, że Autor nieprecyzyjnie wyjaśnił, o co mu chodziło. W moim przekonaniu chodziło o to, czy wpisany przez użytkownika tekst (np. w polu typu TEdit, czyli po prostu podany przez usera string) ma odpowiadającą sobie wartość w typie wyliczeniowym - do tego przydałaby się konwersja nazwy wartości typu wyliczeniowego na string, aby nie wstawiać ich na sztywno w kodzie. Zrozumiał, co miałem na myśli?

// EDITED:
Zawsze się zastanawiam - nie moja wina, że tak to zrozumiałem. Równie dobrze Twoje myślenie mogło być błędne - też nie poprosiłeś o rozwinięcie tematu etc., ale czy na Ciebie naskoczyłem z tego powodu?

0

zrozumiał, a Ty mógłbyś się zastanowić albo chociaż poprosić o rozwinięcie tematu zanim odpowiesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1