Распознание типов в Run time

softmaker
Дата: 18.05.2011 11:10:13
2Michael Longneck
Осталось решить поставленный вопрос:
procedure Append(const value : __listType);
var
  a : TCustomVariant;
begin
  case __listType of // <- КАК это реализовать?
    ? :
    begin a.varType := varObject; a.varObject := TObject(__listType) end;
  end;
end;
Кроик Семён
Дата: 18.05.2011 11:10:58
softmaker,

там еще внизу статьи ссылка на download, в котором CHM-файл на русском с примерами
softmaker
Дата: 18.05.2011 11:11:09
2FlyD
Возможно.
Maxim Rusov
Дата: 18.05.2011 11:12:59
softmaker
__listType задаётся в Design time, а затем то, что ниже подключается {I unitname.inc})


Ну задавай в Design Time еще Define: {$Define __ItemIsObject}
softmaker
Дата: 18.05.2011 11:16:00
2Кроик Семён
TObject и standard types - разные списки, но объединили типа в один... После этого присобачили итераторы... Слишком громоздко. Не то.
softmaker
Дата: 18.05.2011 11:17:12
2Maxim Rusov
Эта мысль на запасном пути - не универсально. Придётся 2 строки для определения типа писать.
softmaker
Дата: 18.05.2011 11:18:25
Хотя можно, но в куске реализации это будет выглядеть как:
type
{$IFDEF typeInteger}
__listType = integer
{$ELSEIF}
... и т.д. много строчек.
Кроик Семён
Дата: 18.05.2011 11:18:57
softmaker,

procedure Append(const value : string); overload;
procedure Append(value : integer); overload;
procedure Append(value : pointer); overload;
procedure Append(value : TObject); overload;
FlyD
Дата: 18.05.2011 11:20:41
softmaker
Придётся 2 строки для определения типа писать.
у нас это зовется ловлей блох
Maxim Rusov
Дата: 18.05.2011 11:22:20
Ты говорил, что тебе только объекты надо отличать
Я имел ввиду, что будет как-то так:

__listType = integer;
{$undef __ItemIsObject}
{I unitname.inc}

или

__listType = TMyObject;
{$define__ItemIsObject}
{I unitname.inc}