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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> Загружен ли Паскаль?, определить загружен ли Паскаль
Shults99
сообщение 27.06.2005 19:30
Сообщение #1


Новичок
*

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

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


Вопрос: Как определить из программы загружен Турбо Паскаль в память или нет? Знаю, что он грузится в младшие адреса памяти и, по-моему сюда DSeg:0000.
Но как вычислить там он или нет - увы?
Thnki


--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2005 19:46
Сообщение #2


Гость






Shults99, другими словами, ты хочешь выяснить, запущена ли твоя программа из IDE Турбо Паскаля или без него?
 К началу страницы 
+ Ответить 
Shults99
сообщение 27.06.2005 19:54
Сообщение #3


Новичок
*

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

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


Да. Програ запущена как exe-шник уже скомпилированный или из среды Turbo Pascal


--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2005 20:00
Сообщение #4


Гость






Тогда ты этого сделать скорее всего не сможешь. Только разве что по объему доступной кучи: MemAvail (IDE забирает часть кучи под свои нужды)...
 К началу страницы 
+ Ответить 
Shults99
сообщение 27.06.2005 20:04
Сообщение #5


Новичок
*

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

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


Цитата
Верхняя граница памяти DOS
              HeapEnd  -->-----------------------------
                          ¦                            ¦
                          ¦  свободная память        ¦
                          ¦                            ¦
              HeapPtr  -->¦............................¦
                          ¦ динамически распределяемая ¦
                          ¦      область памяти        ¦
                          ¦      (растет вверх) ^      ¦
              HeapOrg  -->+----------------------------+<--  OvrHeapEnd
                          ¦      оверлейный буфер      ¦
                          +----------------------------+<--  OvrHeapOrg
                          ¦    стек (растет вниз) v  ¦
              SSeg:SPtr -->¦............................¦
                          ¦      свободный стек      ¦
              SSeg:0000 -->+----------------------------+
                          ¦  глобальные переменные    ¦
                          ¦............................¦<-------
                          ¦  типизированные константы ¦        ¦
              DSeg:0000 -->+----------------------------+        ¦
                          ¦  кодовый сегмент          ¦        ¦
                          ¦    модуля System          ¦        ¦
                          ¦............................¦        ¦
                          ¦  кодовый сегмент          ¦        ¦
                          ¦    первого модуля          ¦        ¦
                          ¦............................¦        ¦
                          L-----------------------------    содержимое
                          .  кодовый сегмент          .      образа
                          .  других  модулей        .    файла .EXE
                          -----------------------------        ¦
                          ¦............................¦        ¦
                          ¦  кодовый сегмент          ¦        ¦
                          ¦ последнего  модуля        ¦        ¦
                          +----------------------------+        ¦
                          ¦  кодовый сегмент          ¦        ¦
                          ¦  главной программы        ¦        ¦
                          +----------------------------+<--------
                          ¦ префикс сегмента программы ¦
                          ¦        (PSP)              ¦
              PrefixSeg -->L-----------------------------


--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shults99
сообщение 27.06.2005 20:08
Сообщение #6


Новичок
*

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

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


на рисунке отсюда (сорри, не копируется нормально )здесь
показан же внизу PrefixSeg...?
"содержимое файла .EXE" - это и есть скомпилированный exe файл? Проверить там что-то есть или нет - и фсё huh.gif


--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2005 20:36
Сообщение #7


Гость






Цитата(Shults99 @ 27.06.05 20:08)
"содержимое файла .EXE" - это и есть скомпилированный exe файл? Проверить там что-то есть или нет - и фсё huh.gif

Но это ТВОЙ EXE-файл, то есть твоя программа !!! Какое отношение она имеет к IDE Турбо Паскаля? Она запускается и ей передается управление...

Все, что касается "сегментов кода" и "сегментов данных" и к чему ты имеешь доступ через CSeg/DSeg имеются в виду именно сегменты твоей программы. О существовании IDE она даже не догадывается...
 К началу страницы 
+ Ответить 
volvo
сообщение 27.06.2005 20:49
Сообщение #8


Гость






Хотя есть одна идея:
begin
writeln(paramstr(0));
readln
end.

Запусти эту программу из IDE и без нее. Чувствуешь разницу? ;)
 К началу страницы 
+ Ответить 
Guest
сообщение 28.06.2005 6:58
Сообщение #9


Гость






Я запускаю с вставкой
Код
begin
 writeln(paramstr(0));
 readln
end.

и без неё и получаю разные ответы.
Такое же я получаю и без этой вставки, когда запускаю из среды ТР и просто exe файлом. Можь я что-то не понимаюю..
smile.gif Вообще-то здесь не надо мудрить и искать сложные ответы. Прога из заданий контрольной работы техникума )))
 К началу страницы 
+ Ответить 
volvo
сообщение 28.06.2005 7:44
Сообщение #10


Гость






Так напиши сюда, что ты получаешь с этой "вставкой" из IDE, и что - при самостоятельном запуске EXE файла... И попробуй догадаться в чем разница...
 К началу страницы 
+ Ответить 
Guest
сообщение 28.06.2005 8:24
Сообщение #11


Гость






ok
 К началу страницы 
+ Ответить 
Shults99
сообщение 29.06.2005 5:11
Сообщение #12


Новичок
*

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

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


:D :D
Кажется, проблема решена... Ну, что же.. препады сами узнают новый подход..

Но всё-таки если говорить о чистоте экперимента, то я не "удовлетворил" препадов.
Вот текст задачи: (сначала предлагается запустить прогу из IDE и экзешником и увидеть различия, а потом - ) "допишите оператор, определяющий наличие Турбо Паскаля в оперативной памяти и выдающий соответствующее выражение на экран: "Турбо Паскаль загружен" или "Турбо Паскаль не загружен""
4 тоже хорошая оценка.
В учебнике дается таблица, где показано заполнение памяти и ссответствующие идентификаторы.
Системные программы======== Указатели
Ещё не распределенная память== HeapEnd
Динамически распределяемая=== HeapPtr
Оверлейный буфер ========= HeapOrg
-/- -/-
Сегмент данных основной===== Sseg:SPtr
программы
-/- -/- ===========сегменты модуля (команд на них не написано)
Турбо Паскаль Системные программы =====младшие адреса памяти

Сообщение отредактировано: Shults99 - 29.06.2005 6:02


--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 18.07.2025 2:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"