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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 00:03   #1
Karp_13
Всё знать хотяка!
Пользователь
 
Аватар для Karp_13
 
Регистрация: 21.04.2009
Сообщений: 67
Вопрос Найди отличия ... или нужна помощь: C++ -> Delphi

Есть вот такой отрывок из функция на Си:
Код:
...
unsigned long dat;
GetPortVal(0x0378, &dat, 1);           //функция из библиотеки WinIO
d = (unsigned char)dat;
...
И есть вот такой перевод этого отрывка в Delphi:

Код:
...
var d:byte; dat: integer;
...
 GetPortVal($0378,dat,1);
 d:=dat;
...
Вроде привёл все необходимые строчки.
Внимание - вопрос: где ошибка? или как лучше перевести?
Мозг взрывается, спать хочу(поэтому просто лень искать все трактаты по поводу "&" и прочего), а ответ хочется получить к завтрашнему полудню, ибо большой проект ждёт своего оживления и из-за ошибки где-то в двух функциях(из них, я думаю, она именно в этих строках... если ошибаюсь, выложу позже ещё одно потенциальное место ошибки... если скорее сам её не найду)) всё стоит и плачет О-О ...
Буду признателен)))

В "Помощи студентам" найдутся те, кому не лень. Переношу. В моих разделах лентяям делать нечего.

ЗЫ: Ок, можно и сюда -_- ... Ток я не лентяй, я загружен -_-
Я вредный и нервный, но бдобр.

Последний раз редактировалось Karp_13; 10.11.2009 в 00:22.
Karp_13 вне форума Ответить с цитированием
Старый 10.11.2009, 08:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
где ошибка?
Для этого нужно знать описание функции GetPortVal именно в таком виде как Делфи показывает, ибо &dat для Делфи может выглядеть как @dat
и на всякий пожарный: d:=byte(dat); только одного не пойму зачем тее в байт это пхать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2009, 09:04   #3
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

Нашла c2pas32 - утилита командной строки для трансляции *.c и *.h файлов в *.pas модули. Я ей не пользовалась нашла в инете, может разберетесь, пригодиться.
Вложения
Тип файла: zip c2pas32.zip (58.9 Кб, 11 просмотров)
ИринаForeve вне форума Ответить с цитированием
Старый 10.11.2009, 09:25   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Stilet
Цитата:
зачем тее в байт это пхать?
$0378 это порт принтера (LPT), а там обмен идёт байтами
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 10.11.2009, 10:57   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
GetPortVal($378,dat,1);
В дельфи 16-ричные числа имеют формат "$<hex-число>".Регистр "data" имеет адрес в hex - формате (378) или в десятичном - 878.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 10.11.2009, 11:45   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В дельфи 16-ричные числа имеют формат
А у автора как?
Цитата:
а там обмен идёт байтами
Ради бога - лишняя переменная то зачем?
Код:
GetPortVal($0378,d,1);
и делов то...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2009, 12:01   #7
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
А у автора как?
- неверно указан адрес регистра 0378 , а надо 378 - имелось ввиду это.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 10.11.2009, 12:07   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
0378 , а надо 378 - имелось ввиду это.
Насколько я знаю ведущий ноль всего лишь говорит о том что это число а не набор символов, так что я бы его оставил - там все ок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь или совет программиста Demiurg2 Фриланс 8 16.10.2009 12:35
Нужна ваша помощь или дельный совет! alex2008ean Microsoft Office Access 1 09.12.2008 22:12
Нужна помощь с Delphi! Тая Помощь студентам 4 22.11.2008 13:01