Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить тип данных в переменной variant / 9 сообщений из 9, страница 1 из 1
23.08.2016, 14:07
    #39296274
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
В Delphi 2007 работает такой код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function GetVal(v: variant): string;
begin
  result := VarToStr(v);
  
  case VarType(v) of
    varEmpty: result := 'null';
    varString: if (v = '') or (v = '0') then result := 'null' else result := QuotedStr(VarToStr(v));
    varInteger, varSmallInt, varSingle, varDouble, varCurrency, varShortInt, varWord: if v = 0 then result := 'null';
  else
    if VarIsNull(v) then result := 'null';

  end;
end;



В Delphi XE3 не работает. Ошибок нет, просто не определяет: строка или нет.
Вообще не определяет.
...
Рейтинг: 0 / 0
23.08.2016, 14:11
    #39296282
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
вот ещё такую проверил:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
// Show the type of a variant
procedure TForm1.ShowBasicVariantType(varVar: Variant);
var
 typeString : string;
 basicType : Integer;
begin
 // Get the Variant basic type :
 // this means excluding array or indirection modifiers
 basicType := VarType(varVar) and VarTypeMask;
 // Set a string to match the type
 case basicType of
 varEmpty : typeString := 'varEmpty';
 varNull : typeString := 'varNull';
 varSmallInt : typeString := 'varSmallInt';
 varInteger : typeString := 'varInteger';
 varSingle : typeString := 'varSingle';
 varDouble : typeString := 'varDouble';
 varCurrency : typeString := 'varCurrency';
 varDate : typeString := 'varDate';
 varOleStr : typeString := 'varOleStr';
 varDispatch : typeString := 'varDispatch';
 varError : typeString := 'varError';
 varBoolean : typeString := 'varBoolean';
 varVariant : typeString := 'varVariant';
 varUnknown : typeString := 'varUnknown';
 varByte : typeString := 'varByte';
 varWord : typeString := 'varWord';
 varLongWord : typeString := 'varLongWord';
 varInt64 : typeString := 'varInt64';
 varStrArg : typeString := 'varStrArg';
 varString : typeString := 'varString';
 varAny : typeString := 'varAny';
 varTypeMask : typeString := 'varTypeMask';
 end;
 // Show the Variant type
 ShowMessage('Variant type is '+typeString);
end;



передаю строку, в ответ "Variant type is"

текст передаю без кавычек, конечно же
как заставить работать?
В D2007 работает же.
...
Рейтинг: 0 / 0
23.08.2016, 14:14
    #39296286
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
Наверное, потому что в варианте не varString? А, например, varUString? А ведь ещё может быть и varOleStr...
...
Рейтинг: 0 / 0
23.08.2016, 14:23
    #39296301
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
GunSmokerНаверное, потому что в варианте не varString? А, например, varUString? А ведь ещё может быть и varOleStr...

Точно!
Спасибо!!!
Variant type is varUString
...
Рейтинг: 0 / 0
23.08.2016, 14:40
    #39296320
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
X11,

вот от тебя не ожидал!!!!

а сделать ShowMessage( IntToStr( VarType(v) ) ); ???

а открыть исходники, найти varString и посмотреть какие там ещё рядом константы ???

кстати, тебе ещё про varLString (AnsiString) не сказали
...
Рейтинг: 0 / 0
23.08.2016, 14:56
    #39296341
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
Да, да протупил.

Каждый имеет право на немного потупить ;)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.08.2018, 14:27
    #39688880
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
Ariochа сделать ShowMessage( IntToStr( VarType(v) ) ); ???

а если VarType возвращает 5, т.е. vtPointer?
хотя на самом деле передаётся целочисленное 750000
...
Рейтинг: 0 / 0
16.08.2018, 14:30
    #39688888
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
X11Ariochа сделать ShowMessage( IntToStr( VarType(v) ) ); ???

а если VarType возвращает 5, т.е. vtPointer?
хотя на самом деле передаётся целочисленное 750000это значит значение передали по ссылке

посмотри исходники уже
...
Рейтинг: 0 / 0
16.08.2018, 14:54
    #39688909
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить тип данных в переменной variant
я бы вообще точку присваивания это значения глядел одновременно в Паскале (с вкл. Use Debug DCUs) и в ассемблере (Debug Views / CPU Window), но я экстремист
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить тип данных в переменной variant / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]