Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с AnsiString 
:(
    Опции темы
Sergio
Дата 5.1.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: 0
Всего: 1



Здраствуйте у меня проьлема в коде:
Код

AnsiString n;

switch (n)
 {
   case "serg": Form1->Close(); break;
 };


Ошибка в неосотношении типа переменной с switch. Как мне обойти проблему?
Зарание спасибо.
PM MAIL ICQ   Вверх
Daevaorn
Дата 5.1.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Sergio @  5.1.2007,  20:52 Найти цитируемый пост)
Как мне обойти проблему?

Код

if( AnsiString  == "serg" )
   Form1->Close(); 

только так
PM MAIL WWW   Вверх
apook
Дата 5.1.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Код

#include "stdio.h"
#include "conio.h"
#include "string.h"


void main()
{
int i=0;
char *ch="serg";

switch( i=(stricmp( ch, "serg" )) )
{
    case 0:
        printf( "Ok!" );
        //Form1->Close();
    break;
    default: break; 
    }
getch();
}


Там-же AnsiString тогда приводть надо а вообще-то больше мороки if используй да и все

Это сообщение отредактировал(а) apook - 5.1.2007, 20:44


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Sergio
Дата 6.1.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: 0
Всего: 1



А можна как нибуть тип AnsiString переконвертировать в другой??(чтобы со свитчем роботала)
PM MAIL ICQ   Вверх
maxim1000
Дата 6.1.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



ну если сильно хочется switch и несколько строк, то можно так:
заводим массив строк
перед switch ищем в нём заданную строку, и в switch подставляем номер найденной строки


--------------------
qqq
PM WWW   Вверх
dumb
Дата 6.1.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



можно так:
Код

  char *str = "petya";
 // разделителем значений должен быть символ, никогда не встречающийся в str
  //                  12345678901234567890...  это просто "линейка" для удобства ;)
  switch (AnsiString("vasya petya kolya").Pos(str))
  {
    case 1: //vasya
      break;
    case 7: //petya
      break;
    case 13: //kolya
      break;
    default: ; //not found
  }

PM MAIL   Вверх
Romikgy
Дата 6.1.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(Sergio @  5.1.2007,  18:52 Найти цитируемый пост)
AnsiString n;
switch (n)
 {
   case "serg": Form1->Close(); break;
 };

имхо так корректнее 
Код

TStringList* sl= new TStringList();
// набиваем список переборов
  sl->Add("serg");
  sl->Add("dumb");
  sl->Add("maxim1000");
  sl->Add("Sergio");
  sl->Add("apook");

//делаем выбор
  switch (sl->IndexOf("serg"))
 {
   case 0: Form1->Close(); break;
 };
delete sl;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sergio
Дата 7.1.2007, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: 0
Всего: 1



Romikgy, спасибо за решение.  smile Только я немного исправил:
Код
TStringList* sl= new TStringList();
    
// набиваем список переборов
    
  sl->Add("serg");
    
  sl->Add("dumb");
    
  sl->Add("maxim1000");
    
  sl->Add("Sergio");
    
  sl->Add("apook");
    
AnsiString n;
//делаем выбор
    
  switch (sl->IndexOf(n))
    
 {
    
   case 0: Form1->Close(); break;
    
 };
    
delete sl;


PM MAIL ICQ   Вверх
Romikgy
Дата 7.1.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Sergio, главное ты понял что я хотел те сказать  smile 

Цитата(Sergio @  7.1.2007,  00:05 Найти цитируемый пост)
спасибо за решение

пазям  smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.