Toon posts:

Vraagje mbt sets in Delphi

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag iets van het volgende doen (maar m'n delphi
kennis reikt weer 's niet ver genoeg :():

- definieren van een set van woorden (bijv:

NON_RELEVANT = 'THE', 'A', 'IN', etc

en deze set vervolgens ergens in de code gerbuiken:

if s in NON_RELEVANT then begin
(** blaat **)
end else begin
(** blaat **)
end;

waar s een string.

Wie-o-wie kan mij helpen?

Bvd..

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Volgens mij kan je geen woorden (strings) in een set zetten.

Je kan wel zo doen:

Lijstje:='THE,A,BLADIEBLA,NOGEENWOORD,'

if Pos('NOGEENWOORD'+',',Lijstje)>0 then begin
...

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
Ok, dan doe ik het op die manier..

Thanks

  • Monga
  • Registratie: Mei 2002
  • Laatst online: 10:40
Op zondag 02 juni 2002 15:01 schreef Varienaja het volgende:
Volgens mij kan je geen woorden (strings) in een set zetten.

Je kan wel zo doen:

Lijstje:='THE,A,BLADIEBLA,NOGEENWOORD,'

if Pos('NOGEENWOORD'+',',Lijstje)>0 then begin
...
Bij deze methoden kan het fout gaan wanneer woorden ook komma's mogen bevatten (misschien niet direct een issue, maar toch). Ik zou alle woorden/combinaties in een StringList zetten, en dan mbv StringList.IndexOf('eenstring') kijken of ie er in zit. Op deze manier heb je geen last van scheidingstekens.

Verwijderd

Volgens mij (maar check het nog ff in de help van Delphi) kan je gewoon iets doen als:
code:
1
2
3
4
5
6
7
Type nonsense = (THE, A, IN);

Var NON_RELEVANT : set of nonsense;
    sometext : string;
begin
  if sometext in NON_RELEVANT then
     doe iets

Verwijderd

Waarschijnlijk is dit wat je zoekt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type
  TEnumTest=(etOne, etTwo, etThree);
  TEnumTests=set of TEnumTest;
const
  sEnumTest: Array[TEnumTest] of String=('Een', 'Twee', 'Drie');

procedure TForm1.Button1Click(Sender: TObject);
var
  ET: TEnumTests;
  I: Integer;
begin
  ET:=[etOne, etThree];
  for I:=Ord(Low(TEnumTest)) to Ord(High(TEnumTest)) do
    if TEnumTest(I) in ET then
    ShowMessage(sEnumTest[TEnumTest(I)]);
end;

Er is trouwens nog een manier bedenk ik me net:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
uses
  TypInfo;

type
  TEnumTest=(etOne, etTwo, etThree);

procedure TForm1.Button1Click(Sender: TObject);
var
  et: TEnumTest;
begin
  et:=etOne;
  Showmessage(GetEnumName(TypeInfo(TEnumTest), Ord(et)));
end;
Pagina: 1