Case of

0

Mam problem z pętlą Case of. Czytając w helpie piszą że Selektorem nie może być zmienna typu string. I faktycznie gdy takiej zmiennej użyję wywala błąd ''Ordinal type required". Ale w podanym przykładzie w helpie z kolorami jest użyta typu string (tak mi się przynajmniej wydaje) - czyli jest dozwolone? Jak ten problem rozwiązać - potrzebuję użyć tej zmiennej

0

clwhite to nie string tylko const.
kliknij na niego z wcisnietym ctrl'em to cie przeniesie do miejsca gdzie jest deklaracja tej stalej - i zobaczysz ze clWhite to jest liczba.
tak samo z innymi kolorami.

0

To jest jakaś metoda żeby zmienną tekstową tam użyć?

0

Wydaje mi sie że pozostaje tylko if..then..else :/ .

0

Niekoniecznie - jeżeli te zmienne są krótkie (string <= 8 znaków) można rzutować na Int64 (Move)..

var
x:Int64;
s:string[8];
begin
  s:= 'tekst';
  x:=0;
  Move(s[1], x, Length(s));
end;

I teraz case śmiga...

0

Napisałem sobie kiedyś coś takiego, może się przyda:

const
  TSet: array[0..1] of string = (
    'text1',  //0
    'text2'   //1
  );

function IsIn(S: String): ShortInt;
var i: ShortInt;
begin
  Result := -1;
  for i := Low(TSet) to High(TSet) do
  if S = TSet[i] then begin
    Result := i;
    Break;
  end;
end;

procedure CaseOfString(P: String);
begin
  case IsIn(P) of
    0: begin end;
    1: begin end;
    else begin end;
  end;
end;

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