Avatar billede friiiiis Novice
25. maj 2011 - 22:03 Der er 12 kommentarer og
2 løsninger

ny Type

Hej

Ligesom man har boolean typen hvor kun én af 2 værdier kan være mulige true/false så vil jeg gerne kunne definere en type der kun kan bestå af 2 eller flere værdier - hvordan opretter jeg sådan en type?
Avatar billede erikjacobsen Ekspert
25. maj 2011 - 22:16 #1
Du skal vel have gang en opremsningstype:

http://www.hkbu.edu.hk/~bba_ism/ISM2110/pas027.htm
Avatar billede friiiiis Novice
25. maj 2011 - 22:28 #2
fantastisk - smid et svar ;)
Avatar billede friiiiis Novice
25. maj 2011 - 22:29 #3
ok - fattet det - du vil ikke have point... ;)
Avatar billede erikjacobsen Ekspert
25. maj 2011 - 22:30 #4
Nej tak ;)
Avatar billede martinlind Nybegynder
26. maj 2011 - 00:43 #5
lidt extra :

  EnumToString/SttingToEnum

  for i:= lo(enum) to hi(enum) do listbox.items.add(EnumToString(TypeInfo(EnymType),Ord(enum)));


Sådan ca :-) Kan være gode til en GUI.
Avatar billede hrc Mester
26. maj 2011 - 10:41 #6
60 points for et svar til det spørgsmål? Det var ikke småting :-)

MartinLind: Jo, det var noget i den retning:

type
  TMyEnum = (meOne, meTwo, meThree, meFour);

procedure TForm1.AddToStrings(aStrings: TStrings);
var
  i: TMyEnum;
begin
  aStrings.BeginUpdate;
  try
    aStrings.Clear;

    // Et vanligt gennemløb
    for i := low(TMyEnum) to high(TMyEnum) do
      aStrings.AddObject(GetEnumName(TypeInfo(TMyEnum),integer(i)),TObject(i));

    // Man burde kunne gøre dette, men ak. Syntaksen vokser ikke ind i himlen
    //  for i in TMyEnum do ..

    // Men man kan godt for sæt af enums:
    for i in [meOne, meThree] do
      aStrings.AddObject(GetEnumName(TypeInfo(TMyEnum),integer(i)),TObject(i));
  finally
    aStrings.EndUpdate;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AddToStrings(lbNames.Items);
end;

Bemærk, at jeg bruger AddObject. På den måde har jeg stadig enumen holdt sammen med navnet:


var
  i: TMyEnum;
begin
  with ListBox do
    if ItemIndex >= 0 then
    begin
      i := TMyEnum(Items.Objects[ItemIndex]);
      ...
    end;
end;

Alternativt kan man bruge TypInfo-funktionerne den anden vej (hvor man finder enumen udfra navnet:

procedure TForm1.lbNamesClick(Sender: TObject);
var
  i: TMyEnum;
begin
  with (Sender as TListBox) do
    if ItemIndex >= 0 then
    begin
      case TMyEnum(GetEnumValue(TypeInfo(TMyEnum),Items[ItemIndex])) of
        meOne  : lStatus.Caption := '1';
        meTwo  : lStatus.Caption := '2';
        meThree : lStatus.Caption := '3';
        meFour  : lStatus.Caption := '4';
      end;
    end;
end;
Avatar billede martinlind Nybegynder
26. maj 2011 - 11:07 #7
ak ja... det er ved at være noget tid siden jeg har haft Delphi kørene....
Det er mest blevet til ESXi 4.1 på min lille Atom dual-core "lege-server", det kører og er meget sjovt at lege med :-)
Avatar billede hrc Mester
26. maj 2011 - 11:18 #8
(blærerøv) Konen synes ikke vi har brug for sådan en. Så køber jeg bare et Canon D60 kamerahus i stedet (eller et nyt surfbræt)!
Avatar billede hrc Mester
26. maj 2011 - 11:19 #9
(Kan en dual-atom trække en ESXi?) Hvad med RAM?
Avatar billede martinlind Nybegynder
26. maj 2011 - 11:33 #10
AT5ION-I med 4gb, det kører, når man lige finder og tilføjer en nic til Realtek 8168 chippen, men den findes på support siderne og så spiller det, har også haft en 3.5 på, men er endt med en SME 7.5.1 server med vmware som plugin ( en vmware 2.02 ), det kører også super, så har jeg web/mail/subversion/vmware-server og fileshare i en og samme lille spille ( der bruger ca. 30 watt )

( hehe er single.... så jeg købte den bare *gg* )
Avatar billede martinlind Nybegynder
26. maj 2011 - 11:36 #11
har sme kørende på en lille FIT-PC ( 10 watt på 220v siden ) , på 6 år dog kun med mail og web, men den kører MEGA stabilt og har ikke haft problemmer overhovdet
Avatar billede friiiiis Novice
26. maj 2011 - 19:42 #12
Martinlind + HRC - kan I ikke smide et svar så I kan få point jf. Erik Jacobsens ønske?
Avatar billede martinlind Nybegynder
26. maj 2011 - 19:47 #13
Gerne, men det er vel mest hrc der har fortjent :-)
Avatar billede hrc Mester
27. maj 2011 - 06:26 #14
Det var Erik der svarede mens vi tilføjede flødeskummet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester