Скачать DPMI in BP 7.0

24.12.1996
Скачать файл (2,13 Кб)





Используйте TDX. Вообще, зачастую и REAL программы имеет смысл отлаживиать не в среде, а в TD286 (TD386 я не использовал, поскольку у меня стоял QEMM в Stealth режиме), поскольку для серьезной отладки такие feature как просмотр регистров сопроцессора и вызов процедур из окошка Evaluate, равно как и просмотр ассемблерного кода, в который скомпилилась программа, весьма полезны.

TDX заодно и DLL позволяет отлаживать, если они в программе используются.

> 2)Как использовать динамическую память >64k,т.е.
>GlobalAllocate я сделал а вот как к ней обpащаться по индексу!? :((((

Видимо так:

Function HugeIndex(Base:Pointer;Index:longint):Pointer;
{Получает: указатель на блок >64K и смещение в байтах.
 Возвращает: указатель на нужный байт в блоке}
Type TT:record
         Offset:Word
         High:Word;
        end;
var L:Longint;
    PT:TT absolute Base;
    IT:TT absolute L; 
begin
 L:=Index+PT.Offset;
 HugeIndex:=Ptr(PT.High+IT.High*SelectorInc,L.Offset);
end;

Примечания:

  1. Переменную L я завел для перестраховки. Указатель, полученный с помощью GlobalAllocPtr всегда имеет Offset=0.
  2. На слове SelectorInc рекомендую нажать CtrlF1.
  3. Никогда не путайте Handle возвращаемый GlobalAlloc с указателем, и, тем более со значением, допустимым для загрузки в сегмегтные регистры.
  4. >Ответь мне о всезнающий All!Очень пpошу!
    >PS Мож кто что почитать посоветует
    

    Что же касается литературы, то, поскольку уже полгода я серьезно на Pascal не пишу, то она вся куда-то разбежалась и корректных ссылок привести не могу. А выходила очень хорошая книжка, посвящаенная как раз работе в DPMI.

    Хотя, впрочем родная документация содержит вполне достаточно информации. Очень рекомендую внимательно проработать Language Guide.

    Для серьезной работы в Protected очень полезен пакет Borland Open Access Pack, или, хотя бы модуль DPMI оттуда.
    Кстати, его исходные тексты весьма поучительны.

    Пример работы с большими кусками памяти есть в модуле Huge Collection, который валяется много по каким ftp и mail серверам. На garbo.uwasa.fi он есть точно.

    Еще полезно почитать собственно RTL - исходные тексты модулей DOS и System, а также Turbo Professional 5.20 и выше, которая поддерживает DPMI.

    Впрочем Professional годится не только для чтения, но и для использования.