IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Использование XMS памяти.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


При работе в досе, в ТР с использованием модуля поддержки XMS, размер памяти равен нулю, а при выходе из TP и запуске скомпилированной программы память отображается верно. Как сделать, чтобы при работе в среде она была верной?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Какой модуль поддержки XMS используется?

Сообщение отредактировано: IUnknown -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


Отсюда взял

http://tpdn.ru/files/11/9226/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Хорошо. А теперь - еще несколько вопросов. Насколько я вижу из первого сообщения, ты работаешь под чистым DOS-ом? Используешь Турбо-Паскаль, скорее всего "семерку", да? Какой именно файл запускаешь, TURBO.EXE или TPX.EXE?

И еще:
Цитата
By default, the IDE uses all the extended memory reserved by the DPMI kernel.
и
Цитата
By default, the Turbo Pascal DPMI interface allocates all available extended and expanded memory for its own use. If you don't want all of the available memory to be taken by the DPMI kernel, you can set an environment variable to specify the maximum amount of memory to use. This variable can be entered directly at the DOS prompt or inserted as a line in your AUTOEXEC.BAT file, using this syntax:
SET DPMIMEM=MAXMEM nnnn
where nnnn is the amount of memory in kilobytes.

For example, if you have a system with 4MB and want the DPMI kernel to use 2MB of it, leaving the other 2MB alone, the DPMIMEM variable would be set as follows:
SET DPMIMEM=MAXMEM 2000
Обе цитаты - из "Turbo Pascal 7.0 User's Guide" от Борланда.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


да, да, TPX.

Цитата
By default, the IDE uses all the extended memory reserved by the DPMI kernel.

Вот в чем дело...

Решение:
Цитата
SET DPMIMEM=MAXMEM nnnn


Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


А как можно поместить переменную сразу в XMS без использования основной памяти?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Поместить переменную
или выделить место под данные? Ибо поместить переменную ты никуда не можешь, это может только компилятор.

А вообще, зачем тебе это извращение, расскажешь? Это потому, что реально не хватает памяти для работы программы, или просто так, поиграться? Если не хватает памяти - то есть другие пути решения проблемы, вообще-то, кроме использования XMS...

Если "поиграться" - то где-то на pascal.sources.ru валялся модуль, позволяющий организовать кучу в XMS; по-моему, там память выделялась сразу в XMS-блоке. Посмотри, как сделал автор, может это натолкнет на идею, или вообще модуль подойдет...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


Цитата
или выделить место под данные?

Именно так ).

нет, на самом деле не хватает! )
Но я уже разобрался, просто туда-сюда перекидывать показалось странным.

Цитата
есть другие пути решения проблемы, вообще-то, кроме использования XMS...

А я же не знал... А какие?

Цитата
там память выделялась сразу в XMS-блоке

о, класс, надо поискать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
А я же не знал... А какие?
Это индивидуально. Проверяются все типы данных, действительно ли нужны именно эти типы, возможно, они могут быт заменены на другие (скажем, Real совершенно безболезненно заменяется на Single, в результате размер массива из 100 вещественных чисел уменьшается на 200 байт). Со строками очень внимательным надо быть: забыл установить длину - получил по максимуму, 256 символов, хотя тебе, скажем, достаточно 80, или 127.

Если нужна помощь - присылай программу (volvo71@yandex.ru), попробую посмотреть, что можно еще сделать, чтобы сократить использование памяти...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Или, например, у тебя есть целое число, которе не может принимать значение больше 10000, и два булевых флага. Вместо того, чтобы отводить под них integer, boolean, boolean, тратя 4 байта, можно отвести только integer, и помнить, что его старшие два бита - это флаги, а в расчётах использовать только младшие 14 битов.
Так как Турбопас не поддерживает выделение определённого числа бит под поле в записи, то операции над такой структурой выглядят очень весело.
И это не шутка, я потом после перехода на винду долго отучивался подобным образом говнокодить.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


Цитата
Это индивидуально. Проверяются все типы данных, действительно ли нужны именно эти типы, возможно, они могут быт заменены на другие (скажем, Real совершенно безболезненно заменяется на Single, в результате размер массива из 100 вещественных чисел уменьшается на 200 байт). Со строками очень внимательным надо быть: забыл установить длину - получил по максимуму, 256 символов, хотя тебе, скажем, достаточно 80, или 127.

С этим у меня проблем пока не возникало, но если что, жди мои "супер-программы" ).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 16:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name