Здравствуйте, уважаемые эксперты! Хотел создать форму проекта (ВСВ) по картинке, загружаемой в компонент Image. Но не получилось. Выводится только прямоугольная форма без картинки. Как сделать, чтобы форма выводилась по картинке? Найдите, пожалуйста, ошибку. В приложении приведен код.
Здравствуйте, Эдуард! Ваш код правильный. Я с копировал точ в точ ваш код в свою форму и он нарисовал мне этот битмап. может проблема версий или вииндусса не знаю. у меня 6 версия билдера. а виндусс 2к с СП2 Ответ отправлен: 07.10.2003, 09:35 Отправитель: Cybernetic Creature
Вопрос № 994
Всем привет. Вот такая штука: у меня 2 процедуры(pr), обе полностью assembler, в обе приходят по 2 значения(x,y), но в первую(pr1) VARом, чтобы измениться и вернуться, а во вторую(pr2) простыми значениями. Т.к. я вызываю первую из второй при помощи CALL, надо в стек загонять поинтеры, а у меня чего то мозг сломался - не знаю как добыть в АСМ-вставке поитер от значения. См. Приложение.
Здравствуйте, KODer! ВОТ как нужнол делать, с учетом содержимого стека. Ессно, здесь учтено, что вызов NEAR Убедись, что к x1 прибавлется содержимое y1. Смотри приложение:
Приложение: Ответ отправлен: 08.10.2003, 12:50 Отправитель: Boriss Отвечает THE_PRO
Добрый день, KODer! PISHI NA PASCALE!!! Ответ отправлен: 06.10.2003, 10:52 Отправитель: THE_PRO Отвечает Marouder
Добрый день, KODer! Привет. Просто надо изучать асм хоть немножко. В процедуру pr2 у тебя параметры через регистры передаются. Так что никаких поинтеров на них не получишь. Надо stdcall использовать, тогда уж можно: lea edi, [x2] lea esi, [y2] или mov edi,esp+offset x2 mov esi,esp+offset y2 И еще - адресация 32-битная, а ты используешь 16-битные регистры. Когда адреса передаются в функцию с помощью того же "var", передается только смещение относительно начала сегмента. Так что весь код - один большой глюк и работать не будет, хотя я его не проверял. Или будет - но с исключениями.
Ответ отправлен: 06.10.2003, 14:01 Отправитель: Marouder Отвечает _vt
Добрый день, KODer! mov di, offset x2 mov si, offset y2 А так? Вроде должно работать... Указывать сегментные регистры в данном случае не обязательно... Кстати, причем здесь Delphi? Ты ведь с 16-разрядными регистрами работаешь...
*** E-Man - we are waiting for you ***
Ответ отправлен: 06.10.2003, 00:30 Отправитель: _vt Отвечает Bob Johnson
Здравствуйте, KODer! lea ax, [x2] lea cx, [y2] push ss push cx push ss push ax ... Очередность параметров, возможно, иная, т.к. не помню как в паскале они передаются. Но думаю, что в начале следует писать push сегментного регистра (который в данном случае ss, т.к. локальные перменные процедуры и параметры хранятся в стеке), а уже потом push адреса, т.к. в памяти это должно быть смещение:сегмент.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 07.10.2003, 23:16 Отправитель: Bob Johnson
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.