powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить тип данных в переменной variant
9 сообщений из 9, страница 1 из 1
Получить тип данных в переменной variant
    #39296274
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 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
Получить тип данных в переменной variant
    #39296282
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ещё такую проверил:

Код: 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
Получить тип данных в переменной variant
    #39296286
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, потому что в варианте не varString? А, например, varUString? А ведь ещё может быть и varOleStr...
...
Рейтинг: 0 / 0
Получить тип данных в переменной variant
    #39296301
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmokerНаверное, потому что в варианте не varString? А, например, varUString? А ведь ещё может быть и varOleStr...

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

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

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

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

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

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

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

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

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


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