Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно сравнить константу со строкой 
:(
    Опции темы
Leana
Дата 20.7.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, как стравнить const 
Скажем в таком примере
my_const = 'Option is not available'

В процессе программы мне необходимо сравнить содержимое своей константы со стрингом s. Перед сравнением я хочу перевести все в uppercase. Можно ли сделать что-то вроде:

If UpperCase(s) <> Uppercase(my_const)

Компилятор, естественно, жалуется... 

Или необходимо создавать другую переменную типа string и присваивать ей значение константы и работать уже с ней??????? 
PM MAIL   Вверх
Palladin
Дата 20.7.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Цитата(Leana @  20.7.2006,  22:36 Найти цитируемый пост)
Или необходимо создавать другую переменную типа string и присваивать ей значение константы и работать уже с ней???????


Скорее всего так и нужно, заноси константу в строку потом всё во флоат и сравнивай smile 

P.S. Не проверял но думаю что надо так, а чего сразу спрашиваеш проверила бы сама smile 
 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Alexeis
Дата 20.7.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Leana @  20.7.2006,  22:36 Найти цитируемый пост)
Или необходимо создавать другую переменную типа string и присваивать ей значение константы и работать уже с ней??????? 

ничего не нужно все и так работает
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  s : AnsiString;
const
  my_const = 'sometext';
begin
  s := 'anytext';
  If UpperCase(s) <> Uppercase(my_const)
  then;
end;
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
volvo877
Дата 20.7.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(Leana @  20.7.2006,  22:36 Найти цитируемый пост)
Компилятор, естественно, жалуется... 

 smile С чего бы? Как именно жалуется компилятор? Все должно работать... 
PM MAIL   Вверх
Leana
Дата 20.7.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Компилятор говорит, что 
constant object cannot be passed as var parameter

 
PM MAIL   Вверх
Alexeis
Дата 20.7.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Все он врет (компилятор) вот код функции
Код

function UpperCase(const S: string): string;
var
  Ch: Char;
  L: Integer;
  Source, Dest: PChar;
begin
  L := Length(S);
  SetLength(Result, L);
  Source := Pointer(S);
  Dest := Pointer(Result);
  while L <> 0 do
  begin
    Ch := Source^;
    if (Ch >= 'a') and (Ch <= 'z') then Dec(Ch, 32);
    Dest^ := Ch;
    Inc(Source);
    Inc(Dest);
    Dec(L);
  end;
end;

Параметр она принимает как константу, а не как переменную!  

Это сообщение отредактировал(а) alexeis1 - 20.7.2006, 23:25


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Guedda
Дата 21.7.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Хе. А зачем, если не получается, делать этот UpperCase через функцию?
Если Вам необходимо Всегда сравнивать строку с UpperCase-ом, тогда просто константу определите через заглавные буквы....
Т.е. в коде напишите не так:
Код

const
  MyConst = 'Hello! World!';

... а так:
Код

const
  MyConst = 'HELLO! WORLD!';


И потом обращайтесь к переменной через UpperCase и сравнивайте её уже с готовой UpperCase конструкцией ;) 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Leana
Дата 21.7.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо всем, кто отозвался. 
Я нашла другой метод. 
SameText(s1, s2)
Принимает два стринга и сравнивает их. Возвращает True or False. Case-Incensitive... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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