OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 10:44 

Зарегистрирован: Среда, 22 Февраль, 2006 10:35
Сообщения: 144
Откуда: Новочеркасск
Цитата:
Что нам по этому поводу говорит пошаговый отладчик?

Да при чем тут пошаговый отладчик... Не работает и все! Тут уже нужен не пошаговый отладчик, а дизассемблер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 13:10 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
А причем здесь дизассемблер? И что именно не работает в приведенном варианте. Я вроде запустил и все спокойно. Никто не ругался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 14:10 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
А может такой вариант
Код:
BlackBox:
PROCEDURE ArrayIncrement*(VAR x: ARRAY OF INTEGER);
Delphi:
procedure ArrayIncrement(x: array [0..0] of integer; len: integer); stdcall; external 'MyDll.dll';


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 14:51 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Вероятно можно и так. Только передача максимального индекса, а не размера сокращает вычисления границ цикла. Не намного, правда. Существеннее, что не требуется изменять имеющийся Delphi-код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 15:01 

Зарегистрирован: Среда, 22 Февраль, 2006 10:35
Сообщения: 144
Откуда: Новочеркасск
Цитата:
А причем здесь дизассемблер? И что именно не работает в приведенном варианте. Я вроде запустил и все спокойно. Никто не ругался.

Чтобы не гадать, а посмотреть, как именно вызывается процедура. Не работает в примере то, что последний элемент передаваемого массива не обрабатывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 18:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Андрей!

Я бы советовал остановиться в Дельфе на Pointer либо, что тоже самое, но нагляднее, pIntArray = ^ array [0..High(integer) div 4] of Integer.
Именно так обычно делается в заголовках к внешним DLL.
Остальное все - шаманство с бубном, имхо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 24 Февраль, 2006 22:04 

Зарегистрирован: Среда, 22 Февраль, 2006 10:35
Сообщения: 144
Откуда: Новочеркасск
Спасибо за совет :D Так и сделаю - остановлюсь на pointer, просто мне так больше нравится)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 25 Февраль, 2006 08:16 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
По-моему здесь нет никакой мистики. Если последний элемент не обрабатывается значит это кому-нибудь нужно. Вариант с открытыми массивами не употребляется в заголовках к внешним DLL. Поэтому не описан. Или не описан - поэтому не употребляется?
P.S. А неплохо было бы согласовать поведение открытых массивов в двух языках. Удивительно всё-таки что по таким пустякам не могут договориться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: О синтаксисе Delphi.
СообщениеДобавлено: Суббота, 25 Февраль, 2006 10:37 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Илья, array [0..High(Integer) div 4] of Integer вызывает ошибку E2100 Data type too large: exceeds 2Gb.
Игорь, в спецификации array [0..0] of Integer не проходит. Нужен идентификатор типа. Хотя сам вариант вполне работоспособен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 25 Февраль, 2006 14:11 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да, больше 2Гб. Обсчитался - [0..High(integer) div 4 -1] - это уже пройдет. А вообще - да любого размера можно, это просто формальность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 25 Февраль, 2006 18:21 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Илья Ермаков писал(а):
Ну да, больше 2Гб...формальность.
Скорее неадекватное использование выразительных средств. Если обращаться к такому объему нет необходимости, зачем его задавать. В конце концов и у самых благосклонных терпение кончается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 25 Февраль, 2006 21:04 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
Если обращаться к такому объему нет необходимости, зачем его задавать.

В лучших традициях Delphi - System.IntegerArray тоже имеет громадный размер... Зачем? Спросим у Borland :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 26 Февраль, 2006 05:31 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Как раз в данном случае речь идет не о традиции. Кто-то хорошо посмеялся и изменил семантику ОМ. А программистам расхлебывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Об ответственности.
СообщениеДобавлено: Воскресенье, 26 Февраль, 2006 05:51 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Цитата:
Зачем? Спросим у Borland :)
Думаю Borland нас не услышит. Но даже если услышит - она отвечает за отсутствие ошибок только в своем коде. И это правильно. Не хотите - не пользуйтесь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 26 Февраль, 2006 13:18 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
Кто-то хорошо посмеялся и изменил семантику ОМ. А программистам расхлебывать.


Я вот эту ветку читаю-читаю и не пойму: что расхлебывать-то?
По-моему, очевидно, что такие вещи, как открытые массивы, в разных языках различны. DLL, собранные разными компиляторами, - это же не модули КП, здесь можно быть уверенным только в том, что 32-бит POINTER один и тот же, все остальное - "вилами на воде писано"...

Хочется межъязыкового единообразия - эту проблему более-менее успешно решили в .NET, с помощью Common Language Runtime, Commom Type System и Common Language Specification. Других решений пока нет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 09 Март, 2006 19:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
ОТ МОДЕРАТОРА

Обсуждение .NET перенесено в раздел Разное, в новую тему ".NET как мультиязыковая платформа"

http://blackbox.metasystems.ru/forum/vi ... .php?t=129


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 10 Март, 2006 08:09 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Не дотянула до "Общих вопросов" наверное. :cry: А здесь какой общий вопрос обсуждают?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 10 Март, 2006 10:05 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну, все-таки Общие вопросы находится в блоке BlackBox Component Builder. Посмотрите на список вопросов - в основном конкретные просьбы помочь с ББ. А Разное - оно на то и Разное, чтобы обсуждать любые интересные темы, будь то .NET или что еще...


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

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


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

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


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

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