Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > case of можно ли сравнить string'и


Автор: hedge_hog 12.6.2007, 20:08
Здравствуйте. Подскажите, пожалуйста,  

case переменная of
  значение1: выражение1;
  значение2: выражение2;
end;


может работать только с переменными типа integer.

А то пытаюсь выполнить сравнение переменной string'ового типа со значением string'ового типа пишет, что несовподают типы.


Надо выполнить следующее, и именно без  if then else if then ... .

Код

procedure TForm1.Button1Click(Sender: TObject);
 var
 Click_ImageBlockLeft: string;
begin

 Click_ImageBlockLeft:=Edit1.Text;
 case Click_ImageBlockLeft of
  'yes' :  Label1.Caption:='Block';
  'no':    Label1.Caption:='Showing';
 end;

end;


Помогите направте неграмотного человека на путь истинный. Заранее БлагоДарю.

Автор: Snowy 12.6.2007, 20:14
Можно сравнивать ordinal types.
Стринги к ним не относятся.

Автор: TXC 12.6.2007, 20:48
hedge_hog, тут только через конструкции IF - тебе как раз подойдет по случаю двух вариантов.
А также можно заменить переменную для сравнения на числовое или char, и сравнивать с соответствующими типами.

Автор: sw04 12.6.2007, 20:48
можно сделать массив стрингов и проверять значение сравнения с i-ым элементом.

Автор: MetalFan 12.6.2007, 20:51
было что-то уже по этому поводу...
1) можно для этого использовать TStringList
2) можно использовать IndexStr, IndexText с массивом
примеры надо?

Автор: Alex 12.6.2007, 23:59
Код

case AnsiIndexText(Click_ImageBlockLeft, ['yes', 'no']) of
  0: Label1.Caption:='Block';
  1: Label1.Caption:='Showing';
end;

Автор: hedge_hog 13.6.2007, 00:19
Alex, Спасибо. Классно придумано.

Добавлено через 3 минуты и 32 секунды
Всем Большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)