Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 18:09   #1
sp@ker
 
Регистрация: 15.04.2011
Сообщений: 9
По умолчанию типы данных

Привет всем помогите пожалуйста!!! Есть такой маленький вопросик. Мне нужно через условный оператор if сравнить 2 переменные: одна типа variant, а вторая типа string. Выдает ошибку несоответствие типов. Как я понял нужно Variant преобразовать в String, не знаю как это сделать.
sp@ker вне форума Ответить с цитированием
Старый 26.04.2011, 18:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуй if String(p1)=p2 где p1 типа Variant
upd
перед этим проверить чтобы VarIsNull(p1) был False
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.04.2011 в 18:38.
Аватар вне форума Ответить с цитированием
Старый 26.04.2011, 18:53   #3
sp@ker
 
Регистрация: 15.04.2011
Сообщений: 9
По умолчанию

что то так не получается это единственный вариант
sp@ker вне форума Ответить с цитированием
Старый 26.04.2011, 20:07   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Сообщение от sp@ker Посмотреть сообщение
не получается это единственный вариант
Казнить нельзя помиловать.
Знаки препинания за тебя Пушкин должен расставлять ?

Цитата:
одна типа variant, а вторая типа string
Variant ни то и Variant что может хранить данные РАЗНЫХ типов. Не только строковых.
А может и вооще не хранить никаких, имея значение Unassigned.

Ты как собрался сравнивать НИЧТО со 'строкой' ?
mss вне форума Ответить с цитированием
Старый 26.04.2011, 20:27   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от sp@ker Посмотреть сообщение
Выдает ошибку несоответствие типов.
Это кто ж такое рассказал. Наверняка Гарри Потер.
Переменные типа Variant прекрасно сравниваются со строкой и с другими типами переменных.
Попробуйте компильнуть такой текст:
Код:
var
  V : Variant;
  S : string;
begin
  S := 'string';
  if V <> S then
    V := S;
end;
Скомпилируется за милую душу. Проверьте этот код при работе программы - сработает как надо.
Так что, автор темы явно чего-то не договаривает, если у него "несоответствие типов". Variant не может не соответствовать. И сравнивает он, скорее всего не variant со строкой, а что-то другое.
Прик вне форума Ответить с цитированием
Старый 26.04.2011, 20:32   #6
sp@ker
 
Регистрация: 15.04.2011
Сообщений: 9
По умолчанию

Извиняюсь за свой русский))))) В переменной типа вариант у меня служит значение ячейки экселя, а стрингом является эдит вот их мне надо сравнить. Самое смешное он их сравнивает как надо, но выдает ошибку: несоответствие типов.
sp@ker вне форума Ответить с цитированием
Старый 26.04.2011, 20:42   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

И как же у вас выглядит "ячейка экселя" в Дельфи?
А нельзя присвоить это значение переменной строкового типа и затем сравнивать?
К тому же, variant, указывающий на "ячейку екселя" может содержать не только значение, но и другие данные.

Последний раз редактировалось Прик; 26.04.2011 в 20:44.
Прик вне форума Ответить с цитированием
Старый 26.04.2011, 20:46   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так стрингом является Edit, или все таки Edit.Text? И выдает ошибку или предупреждение?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.04.2011, 20:48   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от Delphi HELP
Converts a variant's value to a string.

Unit

Variants

Category

Variant support routines

Delphi syntax:

function VarToStr(const V: Variant): string;

C++ syntax:

extern PACKAGE AnsiString __fastcall VarToStr(const Variant V);

Description

VarToStr converts the data in the variant V to a string and returns the result. If the variant has a null value, VarToStr returns an empty string.
справку никто не оменял...
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
типы данных. svoi92 Помощь студентам 2 10.02.2011 13:45
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03