Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru - www.lycos.ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 002
от 30.04.2002, 19:00

Администратор:
Имя: Калашников Олег
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 8
Отправлено ответов: 15
Активность: 187.5 %
[Задать вопрос >>][Регистрация эксперта >>]


 Список экспертов, ответы которых опубликованы в данном выпуске

Топор
Статус: Опытный
Общий рейтинг: 161.9
URL: Хорошая Русская Металлическая команда
Телефон: (8462)160302, 162918
[Подробней >>]
Артём Шегеда
Статус: Опытный
Общий рейтинг: 164.03
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Dark_Lord
Статус: Начальный
Общий рейтинг: 144.44
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3. Здраствуйте Эксперты. Вопрос тем, кто разбирается в Паскале и ассемблере! В паскалевской программе, ... (ответов: 1)
Вопрос № 4. Как в паскале используется pointer!? Например что он делает в getimage/putimage!... (ответов: 3)

Вопросов: 2, ответов: 4


 Вопрос № 3

Здраствуйте Эксперты.
Вопрос тем, кто разбирается в Паскале и ассемблере!
В паскалевской программе, имеющей переменную s делаю вставку ассемблера:
asm
mov ax,seg а
mov es,ax
mov ax,offset а
inc ax
mov bp,ax
xor dx,dx
xor bh,bh
mov bl,00000111b
mov cx,20
mov ax,1301h
int 10h
end;
Всё работает замечательно, но стоит поставить всё это в процедуру,
procedure out(text:string);
begin
asm
mov ax,seg text
mov es,ax
mov ax,offset text
inc ax
mov bp,ax
xor dx,dx
xor bh,bh
mov bl,00000111b
mov cx,20
mov ax,1301h
int 10h
end;
end;
Как выдаёт какую-то фигню и ещё пищит, а строку не выводит! С чем енто может быть связано!?



Вопрос отправлен: 27.04.2002, 17:23
Отправитель: Dark_Lord (Dark_Lord@land.ru)

[Следующий вопрос >>]

Отвечает Топор

Добрый день, Dark_Lord!
Для всякого случаю сохрани все регистры, т.е. pusha в начале и popa в конце.
Удачи!


Ответ отправлен: 28.04.2002, 07:53
Отправитель: Топор


 Вопрос № 4

Как в паскале используется pointer!?
Например что он делает в getimage/putimage!



Вопрос отправлен: 27.04.2002, 18:56
Отправитель: megalama

[Следующий вопрос >>]

Отвечает Топор

Добрый день, megalama!
Как 4-байтная переменная с полным адресои - смещение в младшем слове и сегмент в старшем.


Ответ отправлен: 28.04.2002, 07:43
Отправитель: Топор


Отвечает Артём Шегеда

Добрый день, megalama!
Pointer - базовый тип, который представляет не значение, а адрес, по которому расположено некоторое значение. "Базовый" - потому, что к типу pointer можно привести указатель на любую переменную. Например, имеем переменную i типа integer. Если использовать операцию "@", то можно получить адрес переменной i, то есть указатель на неё. И этот указатель будет иметь тип ^integer, т.е. указатель на integer. Допустим, pi объявлен как pointer. Ты можешь смело выполнить следующую операцию:
pi:=@i;
после выполнения которой у тебя в переменной pi будет храниться адрес переменной i. И если с помощью операции ^ можно сослаться на данные, адрес которых хранится в указателе, то сослаться на данные по указателю pointer не удастся, потому что неизвестен тип данных, на которые ссылается этот указатель.
Если у нас есть функция, принимающая в качестве параметра указатель на переменную любого типа, то этот указатель должен быть объявлен как pointer - иначе вызов функции приведёт к тому, что компилятор выдаст ошибку несоответствия указателей. Кроме того, функции выделения памяти не знают о том, какая информация будет располагаться в выделенном блоке, а потому возвращают тип pointer.
В общем, pointer используется тогда, когда необходимо адресоваться к переменным разных типов или тип данных не определён.

Ответ отправлен: 29.04.2002, 15:00
Отправитель: Артём Шегеда


Отвечает Dark_Lord

Здравствуйте, megalama!
Pointer - переменная, которая указывает на определённый адрес в памяти. В Паскале размер памяти выданый на данный адрес нужно определить процедурой getmem(p:pointer;Size:word);, где p переменныя pointer, указывающая на адрес в памяти, а Size место которое мы просим выделить. В ситуации с картинками, Size лучше всего задавать функцией imageSize(x,y,x1,y1);. Модуль graph высчитает нужный нам размер памяти и мы сможем записать туда нашу картинку, getimage(x,y,x1,y1,p^) а потом восстановить её, putimage(x,y,p^,normalPut)! Удачи!


Ответ отправлен: 27.04.2002, 19:12
Отправитель: Dark_Lord



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (82)
C / C++ (26)
Perl (11)
Delphi (20)
Pascal (28)
Basic / VBA (12)
Java / JavaScript (13)
PHP (11)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (71)
Windows NT/2000/XP (62)
"Железо" (63)
Поиск информации (19)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (7)
Юристу
Гражданское право (25)
Уголовное право (3)
Семейное право (5)
Трудовое право (5)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




be number one SUPERTOP Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное