OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 02 Май, 2024 15:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 20 Август, 2009 08:58 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Дык его специально отделяют от остальных, чтоб подчеркнуть его особенность.
Это просто синтаксис такой. ИМХО, так лучше, чем просто первым ставить. Тогда возникает вопрос: а почему не последним? А так - его хорошо видно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:07 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Валерий Лаптев писал(а):
Дык его специально отделяют от остальных, чтоб подчеркнуть его особенность.
Это просто синтаксис такой. ИМХО, так лучше, чем просто первым ставить. Тогда возникает вопрос: а почему не последним? А так - его хорошо видно.


т.е. это равнозначные выражения ? Просто думал, что в них разный смысл, когда впереди понятно (это описано в доке), а когда среди формальных параметров получается то же самое ?

И это никак не влияет на соглашение вызова ccall ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:11 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
В каком смысле равнозначные?
Это параметр именно показывает, в записи какого типа ты приписываешь данную процедуру. Если параметра этого не писать, то у тебя получится просто независимая процедура.
Например, в независимой процедуре можно первым параметром передать запись твоего типа. Но это будет все равно процедура, независимая от твоего типа.
А если ты указал параметр this, то получил не просто процедуру, а метод класса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:29 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Тогда еще раз уточню, методы получается можно записать двумя способами?

1) Как описание процедуры, когда принимающий параметр указывает на какой либо тип. Например:
Код:
 PROCEDURE (p: T) Work()

В этом случае "this" не указываем

2) Как описание процедуры первым (или любым? ) из формальных параметров которого является параметр "this"
Код:
 PROCEDURE Work(this: T)
, где T нужный нам тип записи.
В этом случае кстати описание процедуры должно идти в TYPE , и/или распологаться как независимая процедура ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:32 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Просто в самом описании языка использование "this" не встретил, а только в примерах "платформенных особенностей". Вот и не понял что к чему

И про ccall (c декларация) если можно тоже отпишите применительно к обоим вариантам, а то может использование/ не использование "this" влияет на вызов параметров как-нибудь


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:36 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
1. this - это просто имя параметра. Можно писать любое.
2. Метод задается именно первым способом. Вторым - независимая процедура.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 09:48 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Валерий Лаптев писал(а):
2. Метод задается именно первым способом. Вторым - независимая процедура.

Тогда получается, что для портирования методов структур из dll windows/C всегда надо указывать ПЕРВЫМ!!! параметром, объект типа запись, к которому относится этот метод (причем называть не обязательно "this", главное порядок следования)?

Наверное уже замучил :), но надо же разобраться в конце концов. А то я в С полный ноль.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 10:16 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
1. Про DLL и связанные с ними вещи тут более квалифицированный народ есть.
2. Не путай С и С++ - это разные языки. В С вообще методов нет, только независимые функции.
О заталкивании класса и его методов на С++ в DLL лучше спросить на RSDN.RU - там по э
тому вопросу неоднократно было обсуждение. Вроде даже есть конкретный FAQ по этой теме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Соответствие типов Windows API
СообщениеДобавлено: Четверг, 20 Август, 2009 13:19 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Евгений Темиргалеев писал(а):
Касательно DWORD надо смотреть WinAPI-заголовки - синонимом какого типа он является.

Спасибо, в особенностях платформы это встречал

А можно расшифровать:
1) что такое "WinAPI-заголовки"
2) "синоним"
3) и где это "смотреть"?
Вопросы конечно наивные, часть из них я вроде понял, но вдруг не правильно (как уже говорил, в С не разбираюсь)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 13:33 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
посмотрите еще в университетской версии с Информатики-21 есть какие-то инструкции по работе с dll.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 13:38 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Info21 писал(а):
посмотрите еще в университетской версии с Информатики-21 есть какие-то инструкции по работе с dll.

если честно, то не знаю о какой версии идет речь, т.к. на http://www.inr.ac.ru/~info21/software.htm представлены только две версии школьная и базовая. А про университетсткую сказано что она будет добавлена позднее


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Соответствие типов Windows API
СообщениеДобавлено: Четверг, 20 Август, 2009 16:14 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
adva писал(а):
1) что такое "WinAPI-заголовки"
2) "синоним"
3) и где это "смотреть"?
1) Заголовочные файлы Си для работы с WinAPI. Типа интерфейса модулей.
2) синоним типа - другое имя для того же типа
3) В какой-то сишной среде разработки для винды. В WinGW нашёл в файле windef.h:
Код:
typedef unsigned long DWORD;
DWORD - синоним типа unsigned long (беззнаковое длинное целое, длинна которого зависит от платформы/компилятора :) )
Для Win32 должно быть 32 бита - КП-й INTEGER или SET.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Соответствие типов Windows API
СообщениеДобавлено: Четверг, 20 Август, 2009 17:31 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Евгений Темиргалеев писал(а):
Код:
typedef unsigned long DWORD;
DWORD - синоним типа unsigned long (беззнаковое длинное целое, длинна которого зависит от платформы/компилятора :) )


DWORD (double word) как раз и введен для того, чтобы не зависеть от платформы/компилятора и всегда обозначать 32-разрядное беззнаковое целое и ничто другое. Так что ориентироваться надо именно на название, а не на typedef (который как раз и будет зависеть от платформы/компилятора). В частности, на Win64 DWORD по-прежнему имеет размерность 32 бита.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 18:27 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Вообще-то WORD есть "машинное слово", которое в принципе является платформо-зависимым.

http://ru.wikipedia.org/wiki/Машинное_слово


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 20:39 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Вообще-то WORD есть "машинное слово", которое в принципе является платформо-зависимым.


Да. Так же как и байт не обязан быть 8 бит. Но применительно к винде WORD всегда было 16 битным. Не знаю откуда я это знаю :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Август, 2009 23:13 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Вообще-то WORD есть "машинное слово", которое в принципе является платформо-зависимым.

http://ru.wikipedia.org/wiki/Машинное_слово


Кстати, в этой же статье сказано, что хотя размер слова для x386 реально 32 бита, но по "историческим причинам" оно считается 16 битным. С виндой тоже самое - WORD/DWORD можно считать 16/32 битными независимо от версии винды (Win16/Win32/Win64).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Август, 2009 08:12 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Ага, ага, вот так вот почитаешь истоки и поневоле задумаешься - откуда есть пошла ИТ-шизофрения :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Август, 2009 08:39 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Так это всё из-за денег. Ломать совместимость с унаследованным кодом слишком дорого, вот и оставили эти рудименты...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Август, 2009 09:05 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Я правильно понял, что тип Pointer из делфи (обжект паскаль) это SYSTEM.PTR ?

Хотя я не понял, почему тип size_t из С перевели в Pointer в делфи. Это равнозначные типы?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Август, 2009 09:13 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Geniepro писал(а):
Так это всё из-за денег. Ломать совместимость с унаследованным кодом слишком дорого, вот и оставили эти рудименты...


Я думаю, что никто не мешал обозначить 16-разрядное слово как WORD16, а 32-разрядное как WORD32. Нет, скорее всего произошла намеренная привязка смысла слова WORD к платформе x86.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB