Загружен ли Паскаль?, определить загружен ли Паскаль |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Загружен ли Паскаль?, определить загружен ли Паскаль |
Shults99 |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: 0 |
Вопрос: Как определить из программы загружен Турбо Паскаль в память или нет? Знаю, что он грузится в младшие адреса памяти и, по-моему сюда DSeg:0000.
Но как вычислить там он или нет - увы? Thnki -------------------- |
volvo |
Сообщение
#2
|
Гость |
Shults99, другими словами, ты хочешь выяснить, запущена ли твоя программа из IDE Турбо Паскаля или без него?
|
Shults99 |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: 0 |
Да. Програ запущена как exe-шник уже скомпилированный или из среды Turbo Pascal
-------------------- |
volvo |
Сообщение
#4
|
Гость |
Тогда ты этого сделать скорее всего не сможешь. Только разве что по объему доступной кучи: MemAvail (IDE забирает часть кучи под свои нужды)...
|
Shults99 |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: 0 |
Цитата Верхняя граница памяти DOS HeapEnd -->----------------------------- ¦ ¦ ¦ свободная память ¦ ¦ ¦ HeapPtr -->¦............................¦ ¦ динамически распределяемая ¦ ¦ область памяти ¦ ¦ (растет вверх) ^ ¦ HeapOrg -->+----------------------------+<-- OvrHeapEnd ¦ оверлейный буфер ¦ +----------------------------+<-- OvrHeapOrg ¦ стек (растет вниз) v ¦ SSeg:SPtr -->¦............................¦ ¦ свободный стек ¦ SSeg:0000 -->+----------------------------+ ¦ глобальные переменные ¦ ¦............................¦<------- ¦ типизированные константы ¦ ¦ DSeg:0000 -->+----------------------------+ ¦ ¦ кодовый сегмент ¦ ¦ ¦ модуля System ¦ ¦ ¦............................¦ ¦ ¦ кодовый сегмент ¦ ¦ ¦ первого модуля ¦ ¦ ¦............................¦ ¦ L----------------------------- содержимое . кодовый сегмент . образа . других модулей . файла .EXE ----------------------------- ¦ ¦............................¦ ¦ ¦ кодовый сегмент ¦ ¦ ¦ последнего модуля ¦ ¦ +----------------------------+ ¦ ¦ кодовый сегмент ¦ ¦ ¦ главной программы ¦ ¦ +----------------------------+<-------- ¦ префикс сегмента программы ¦ ¦ (PSP) ¦ PrefixSeg -->L----------------------------- -------------------- |
Shults99 |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: 0 |
на рисунке отсюда (сорри, не копируется нормально )здесь
показан же внизу PrefixSeg...? "содержимое файла .EXE" - это и есть скомпилированный exe файл? Проверить там что-то есть или нет - и фсё -------------------- |
volvo |
Сообщение
#7
|
Гость |
Цитата(Shults99 @ 27.06.05 20:08) "содержимое файла .EXE" - это и есть скомпилированный exe файл? Проверить там что-то есть или нет - и фсё Но это ТВОЙ EXE-файл, то есть твоя программа !!! Какое отношение она имеет к IDE Турбо Паскаля? Она запускается и ей передается управление... Все, что касается "сегментов кода" и "сегментов данных" и к чему ты имеешь доступ через CSeg/DSeg имеются в виду именно сегменты твоей программы. О существовании IDE она даже не догадывается... |
volvo |
Сообщение
#8
|
Гость |
Хотя есть одна идея:
begin Запусти эту программу из IDE и без нее. Чувствуешь разницу? ;) |
Guest |
Сообщение
#9
|
Гость |
Я запускаю с вставкой
Код begin writeln(paramstr(0)); readln end. и без неё и получаю разные ответы. Такое же я получаю и без этой вставки, когда запускаю из среды ТР и просто exe файлом. Можь я что-то не понимаюю.. Вообще-то здесь не надо мудрить и искать сложные ответы. Прога из заданий контрольной работы техникума ))) |
volvo |
Сообщение
#10
|
Гость |
Так напиши сюда, что ты получаешь с этой "вставкой" из IDE, и что - при самостоятельном запуске EXE файла... И попробуй догадаться в чем разница...
|
Guest |
Сообщение
#11
|
Гость |
ok
|
Shults99 |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: 0 |
:D :D
Кажется, проблема решена... Ну, что же.. препады сами узнают новый подход.. Но всё-таки если говорить о чистоте экперимента, то я не "удовлетворил" препадов. Вот текст задачи: (сначала предлагается запустить прогу из IDE и экзешником и увидеть различия, а потом - ) "допишите оператор, определяющий наличие Турбо Паскаля в оперативной памяти и выдающий соответствующее выражение на экран: "Турбо Паскаль загружен" или "Турбо Паскаль не загружен"" 4 тоже хорошая оценка. В учебнике дается таблица, где показано заполнение памяти и ссответствующие идентификаторы. Системные программы======== Указатели Ещё не распределенная память== HeapEnd Динамически распределяемая=== HeapPtr Оверлейный буфер ========= HeapOrg -/- -/- Сегмент данных основной===== Sseg:SPtr программы -/- -/- ===========сегменты модуля (команд на них не написано) Турбо Паскаль Системные программы =====младшие адреса памяти Сообщение отредактировано: Shults99 - -------------------- |
Текстовая версия | 11.01.2025 11:03 |