Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.05.22;
Скачать: [xml.tar.bz2];

Вниз

Variant 2 String   Найти похожие ветки 

 
Gu   (2011-02-16 18:44) [0]

Есть вот такая процедурка

Procedure Qq(MyVar:Variant);
var s:string;
Begin
s:="";Case VarType(MyVar) of
varEmpty,varNull:s:=DateTimeToStr(Now);
varSmallint,varInteger,varError,varShortInt,varByte,varWord,varLongWord,varInt64 :s:="Целое: "+inttostr(MyVar);
varSingle,varDouble,varCurrency:s:="Дробное: "+floattostr(MyVar);
varDate:s:="Дата\Время: "+DateTimeToStr(MyVar);
varBoolean:if myvar=true then s:="Логическое ДА" else s:="Логическое НЕТ";
varDispatch,varVariant,varUnknown,varStrArg:s:="Неизвестное значение";
varString,varOleStr:s:="Строковое: "+VarToStr(MyVar);
end;
if (s=null)or(s="") then s:="пусто";Showmessage(s);
End;


Если запрашиваю все типы кроме string - работает (например qq(true);qq(123.66);qq(127); и тп), а на стринговые 0 внимания, все время возвращает пустую строку, если например запрашиваю qq("лялятополя");

пробовал так: объявляем st:string;st:="лялятополя";qq(st); все равно пустую строку возвращает, т.е. VarType вообще не отрабатывает никак. Срабатывает только если st как ansistring объявить.

Вопрос: как сделать, чтобы на стринг обычный срабатывала? Может опции компилятора какие нужны?

Rad 2010, Win7


 
И. Павел ©   (2011-02-16 18:49) [1]


> т.е. VarType вообще не отрабатывает никак.

Все равно какое-то значение принимать должен. Просто его среди перечисляемых в case нет. Посмотрите, чему равен VarType(MyVar), когда передаете строку.


 
Gu   (2011-02-16 19:03) [2]

передается правильно, там "лялятополя" лежит при останове.
вроде все типы перечислил (можно еще VarArray:s:="Массив"; добавить), одно хотябы отрабатывать должно. с юникодом беда.


 
И. Павел ©   (2011-02-16 19:45) [3]


> передается правильно, там "лялятополя" лежит при останове.


ShowMessage(IntToStr(VarType(MyVar))) что показывает?


 
Gu   (2011-02-16 19:48) [4]

258 o_O

ок, привяжусь к нему в кейсе


 
Gu   (2011-02-16 19:50) [5]

спасибо


 
sniknik ©   (2011-02-16 19:52) [6]

> с юникодом беда.
ну, так... чуть меняешь код,  

VT: Word;

VT:= VarType(MyVar);
case VT of
...
ставишь точку останова на case VT of и смотришь чему равна переменная в этот момент для "лялятополя", после идешь туда где эти константы описаны (Ctrl+клик мышкой на любой у тебя в коде)  и ищешь у которой найденное значение... если нету, свою опиши. или прямо числом в код вставь.

разве проблема?


 
sniknik ©   (2011-02-16 19:54) [7]

258 - $0102; в седьмой дельфе нет, начиная с 2009й по идее уже должно...


 
Игорь Шевченко ©   (2011-02-16 20:31) [8]

так всяко понятнее:
Procedure Qq(MyVar:Variant); var s:string; Begin s:="";Case VarType(MyVar) of
varEmpty, varNull: s:=  DateTimeToStr(Now ); varSmallint,varInteger,varError,
varShortInt,varByte,varWord,varLongWord,varInt64 :s:="Целое: "+inttostr(MyVar
);varSingle,varDouble,varCurrency:s:="Дробное: "+floattostr(MyVar);varDate: s
:="Дата\Время: "+DateTimeToStr( MyVar); varBoolean: if myvar=  true  then s:=
"Логическое ДА" else s :="Логическое НЕТ"; varDispatch,varVariant,varUnknown,
varStrArg  : s:="Неизвестное значение";varString, varOleStr:s:="Строковое: "+
VarToStr(MyVar);end;if (s=null)or(s="") then s:="пусто";Showmessage(s);End;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.05.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
2-1297715273
Чайник
2011-02-14 23:27
2011.05.22
Настройка Д2010


2-1296660428
vegarulez
2011-02-02 18:27
2011.05.22
фото с вебкамеры.


2-1297343945
cross
2011-02-10 16:19
2011.05.22
очистка IXMLDocument


2-1297232556
SKIPtr
2011-02-09 09:22
2011.05.22
переключение между TEdit


3-1259081869
Anatoly Podgoretsky
2009-11-24 19:57
2011.05.22
Явное против неявного





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский