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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2009, 22:24   #1
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Плохо Узнать тип переменной

не могу узнать как сделать сравнение типа:
Код:
var
A: ^MyStruct;
begin
   if a  = MyStruct then
    write('a структура MyStruct');
end;
В делфях есть команда AS.
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 11.06.2009, 22:30   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Вроде бы никак нельзя, а зачем?
Somebody вне форума Ответить с цитированием
Старый 11.06.2009, 22:34   #3
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Делаю список, в котором нужно хранить любую структуру.
Сохраняю структуру в пересенную типа Pointer. Вот и нужно знать что это переменная содержит
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 11.06.2009, 22:46   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Можно ввести своё поле для типа или использовать object'ы, для них есть typeof, возвращающий указатель на VMT.
Somebody вне форума Ответить с цитированием
Старый 11.06.2009, 23:32   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от MAcK Посмотреть сообщение
не могу узнать как сделать сравнение типа:
Код:
var
A: ^MyStruct;
begin
   if a  = MyStruct then
    write('a структура MyStruct');
end;
В делфях есть команда AS.
Ну можно конечно сравнить по размеру хотя это полной гарантии не даёт!!! Но всё таки!!!
помоему есть функция sizeof естественно сравнивать надо обьекты!!!
Увас конечно работать не будет, потому А - это указатель всегда 4 байта и содержит адрес!!! А MyStruct - структура или запись!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 18.12.2012, 22:39   #6
Salih
Новичок
Джуниор
 
Регистрация: 18.12.2012
Сообщений: 2
По умолчанию

Вопрос хоть и был поднят давно, но у меня также возникла подобная проблемка. Вобщем по совету Somebody получилось сделать. Код выглядит примерно так:
Код:
procedure IsMyType(B:pointer);
var
  //A: ^MyStruct;
  P: ^TObject;
  obj: TObject;
begin
  P:=B;
  Obj:=p^;
  if Obj.ClassNameIs('MyStruct') then 
    write('B структура MyStruct');
end;
В моем случае MyStruct был классом.
Salih вне форума Ответить с цитированием
Старый 19.12.2012, 09:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Salih, Вы точно уверены, что Ваш код будет работать в обычном Паскале? (подчёркиваю, не FreePascal, не Delphi, а в обычном "классическом" Паскале (TurboPascal, например). Потому как автор темы напрямую упомянул, что в Delphi есть AS ( я бы сказал, точнее нужен IS )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2012, 13:17   #8
Salih
Новичок
Джуниор
 
Регистрация: 18.12.2012
Сообщений: 2
По умолчанию

Действительно, я не обратил на это внимание. Просто удивился причем тут As, и продолжил свои поиски. Делал я в дельфи. А для паскаля я не в курсе есть ли готовые методы для объекта (зависит от среды программирования).
В данном случае, наверно, будет проще добавить дополнительное поле в структуру.

Последний раз редактировалось Salih; 19.12.2012 в 13:24.
Salih вне форума Ответить с цитированием
Старый 19.12.2012, 13:25   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В данном случае, наверно, будет проще добавить дополнительное поле в структуру
ну, да, согласен.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить тип переменной satana Общие вопросы Delphi 10 20.11.2010 21:43
Какой тип переменной FILE *f......(в Си) alexxlavr Помощь студентам 4 09.01.2009 18:12
Указать нужный тип переменной KiDoki Общие вопросы Delphi 3 06.10.2008 17:11
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47
можно тип переменной word преобразовать в integer мандарин Общие вопросы Delphi 7 01.06.2007 20:04