Доброго времени суток всем! Я снова насчёт подключения компилятора из паскаля: прошу прощения, что неправильно сформулировал вопрос, пробема не в тоом чтобы вызывать из паскаля tasm (вызвать через exec мне труда не составит), мне необходимо сделать так чтобы можно было наблюдать результаты компиляции. Когда я вызываю просто tasm он мелькает на экране и ничего заметить нельзя :(. Можно ли сделать паузу после выполнения программы чтобы просмотреть результаты? Или любой другой способ с помощью которого можно это релизовать...
Здравствуйте, Jens! Если запускаешь tasm.exe и не можешь наблюдать процес компиляции делай следуещее: В свойствах tasm.exe на владке Программа убери галочку около надписи Закрывать окно по завершении работы!
Ответ отправлен: 08.05.2003, 20:21 Отправитель: DoS@ Отвечает Bill
Доброе время суток, Jens! Самое простое решение - это создать .bat файл, и его вызывать. В нем написать в строке после tasm %1 > tasmres.txt if errorlevel 1 goto Error ... :Error echo Ошибка трансляции pause goto Exit ... :Exit Результаты трансляции будут записаны в файл "tasmres.txt", который можно прочитать даже из Паскаля Если возникут проблемы, пиши bsurin@mail.ru - вышлю пример
Ответ отправлен: 08.05.2003, 10:00 Отправитель: Bill Отвечает Sensey
Здравствуйте, Jens! Можно использовать вариант Billa, но если тебе нужно именно из Паскаля, то так: ... SwapVectors; exec(...); SwapVectors; readkey;{пауза до нажатия} case DosError of{анализ возвращенного результата выполнения} ... end;
Ответ отправлен: 08.05.2003, 11:01 Отправитель: Sensey Отвечает Lynx
Здравствуйте, Jens! Помоему через bat файл можно, или перенаправь вывод в файл. Скажем так: tasm.exe prog.asm >translat.log и читай log на здоровье.
Ответ отправлен: 08.05.2003, 12:36 Отправитель: Lynx Отвечает Byter
Доброе время суток, Jens! Exec(...);{ компилятор ассемблера } Readln;{ Задержка экрана } Ответ отправлен: 08.05.2003, 13:26 Отправитель: Byter Отвечает Tigran K. Kalaidjian
Доброе время суток, Jens! Пауза реализуется на Паскале в виде одного или нескольких READLN; На ассемблере: mov ah, 00h int 16h В результате выполнения каждой из этих конструкции программа будет ожидать нажатия какой-либо клавиши. Ответ отправлен: 08.05.2003, 15:04 Отправитель: Tigran K. Kalaidjian Отвечает Tancho
Здравствуйте, Jens! Если я тебе правильно понял, то тебе нужно нещо в роде: 1) ... if Not KeyPressed then ReadKey; ... и прогу ждеть ввода символа из клаву(можна любой) и он НЕ выходить надисплей, или : 2)... ReadLn; - ждеть ввода символ( Не воспринимаеть служебные символы такие как Alt, Shift, NumLock и т.д.), символ выходить на дисплей!; .... или 3) ... asm xor ax,ax int 16h end; ...
Ответ отправлен: 08.05.2003, 18:07 Отправитель: Tancho Отвечает Zloy
Добрый день, Jens! например вызови readln. Ответ отправлен: 09.05.2003, 09:29 Отправитель: Zloy
Вопрос № 219
привет Значит написал я прогу - работа с файлом - потом пишет мне файл не найден, ладно создаю в досе файл - потом пишет - нет доступа к файлу(но ведь RESET у меня естть )
Здравствуйте, _hf! Перепроверьте все пути и доступ к файлу - он также выставляется
Ответ отправлен: 11.05.2003, 20:01 Отправитель: Shurik Отвечает Bill
Добрый день, _hf! Созданный файл закрыл? Из редактора вышел? Файл используется редактором и и никто больше не имеет права его открывать - доступ запрещен. Простая ситуация: одна программа пишет в файл, а другая удаляет. Что должна делать система? Если закрыт, а ошибка есть, то надо смотреть код. Ответ отправлен: 08.05.2003, 10:28 Отправитель: Bill Отвечает Ayl
Добрый день, _hf! Блин, ну что за привычка описать проблему и не привести пример кода. Гаданием на кофейной гуще заниматься очень трудно. Ответ отправлен: 08.05.2003, 10:36 Отправитель: Ayl Отвечает Sensey
Приветствую Вас, _hf! А прога где? >:-( Нету... Тогда производим гадание на кофейной гуще :) Assign, потом Reset? Ничем файл не занят? Другой прогой, например редактором, в котором ты его создавал... Прогу в студию!
Ответ отправлен: 08.05.2003, 11:04 Отправитель: Sensey Отвечает Byter
Доброе время суток, _hf! Может каке-нибудь приложение занимает файл.
Ответ отправлен: 08.05.2003, 13:29 Отправитель: Byter Отвечает Pin
Добрый день, _hf! 1) Файл может быть уже открыт. 2) Стоят атрибуты типа Hidden, System. 3) Вы ошиблись в пути.
Ответ отправлен: 08.05.2003, 13:58 Отправитель: Pin Отвечает Tancho
Здравствуйте, _hf! Ну если ты хочешь кто то тебе наистину помог давай код прогу о коя идеть реч, а иначе все пустое дело! Можеть тыишчешь файл не там где он находиться если во истине создал, а может и неправилно написал в прогу путь или имя файла? Ответ отправлен: 08.05.2003, 15:36 Отправитель: Tancho Отвечает Tigran K. Kalaidjian
Здравствуйте, _hf! reset у меня тоже есть (кнопочка такая на корпусе) =). Пришли программу, а то ничего не понятно. И что имеется ввиду под "создал в ДОСе файл"? работа с файлами производится по следующему алгоритму var f: text;{пример для текстовых файлов} ... assign(f, 'name.txt'); reset(f); {здесь работаем с файлом} Close(f);
Ответ отправлен: 08.05.2003, 18:39 Отправитель: Tigran K. Kalaidjian Отвечает Lynx
Добрый день, _hf! Ну ты хотя бы этот кусок кода прилепил бы... А то "пальцем в небо" получается. :)
Ответ отправлен: 09.05.2003, 11:35 Отправитель: Lynx
Вопрос № 220
hELLO как в Досе создать Файл католог - это md имя_каталога
Приветствую Вас, _hf! Именно этой командой и создать.
Ответ отправлен: 11.05.2003, 20:02 Отправитель: Shurik Отвечает Ayl
Добрый день, _hf! Код в приложении создает файл нулевой длины с заданным именем в текущей директории. Это если в Паскале. Если просто в DOS'е, то можно так: type con >file.tmp После этого можешь вводить строки до нажатия комбинации Ctrl+Z Еще можно вот так: echo '' >file.tmp Можно также скопировать какой-нибудь файл: copy oldfile.ext newfile.tmp
Приложение: Ответ отправлен: 08.05.2003, 10:52 Отправитель: Ayl Отвечает Bill
Доброе время суток, _hf! Не ясно, файл или каталог... . Создать каталог: Из командной строки DOS: > md RRR, Из Norton Commander - F7. Создать файл: Из командной строки DOS: > COPY какой-то текст > fff.txt Из Norton Commander: Shift + F4 и в окне вводищь имя файла Или нужно программно?
Ответ отправлен: 08.05.2003, 11:53 Отправитель: Bill Отвечает Lynx
Доброе время суток, _hf! Команда copy con <имя файла>, затем вводишь текст файла, после ввода жмёшь Ctrl+Z. И всё. ;)
Ответ отправлен: 08.05.2003, 12:39 Отправитель: Lynx Отвечает _vt
Доброе время суток, _hf! 1 способ: copy con имя_файла , далее можно вводить его содержание с клавиатуры, для того чтобы закончить, нужно ввести символ конца файла (нажать F6 или Ctrl+Z)и Enter. Например, создать пустой файл с именем text.txt - copy con text.txt[enter][F6][enter] 2 способ: создать его в любой файловой оболочке (Shift+F4) и т. д. Способов море...
Ответ отправлен: 08.05.2003, 12:40 Отправитель: _vt Отвечает Pin
Здравствуйте, _hf! Можно copy con <имя файла> Ввод с клавы. Чтобы его закончить используйте CTRL+Z, ENTER. Ответ отправлен: 08.05.2003, 13:56 Отправитель: Pin Отвечает Tancho
Приветствую Вас, _hf! В MS DOS - 1)создаешь каталог , за знак промпта, C:>md kat('kat' имя католога ) и надо появиться снова знак промпрта(c:>); 2)c:>cd kat - надо входить в созданый каталог; 2)За знак промпта (C:kat>) вводишь COPY con>'primer.dan'(здесь 'primer' - имя файла, 'dan' -его рассширении, а '.'-разделитель, потом вводиш из клавиатуру что тебе угодно, в конце CTRL+Z, а потом и все будеть в файле; 3) У твою прогу на pascal'е надо открыть файл - Open(f,'c:katprimer.dan'), а потом установить указатель reset(f), f - описатель типа файла(файловый указатель). P.S. Я полагаю, что в начале ты находишься на диск 'C' и в основном каталоге, поетому пишу C:> ... и так дале!
Ответ отправлен: 08.05.2003, 16:00 Отправитель: Tancho Отвечает DoS@
Здравствуйте, _hf! Смотри приложение!
Приложение: Ответ отправлен: 08.05.2003, 20:12 Отправитель: DoS@
Вопрос № 221
привет хАкЕрАм(шутка ) вопрос: при начальном этапе резработки программы на Паскале у меня "присутствует" динамическая память после компиляции statik memory - поясните как происходит переход от одной памяти к другой(по подробнее ) или я вообще несу полную чущь Заранее благодерен Ваш слуга Hi-Fi........
Добрый день, _hf! Память резервируется в зависимости от того, как вы это напишете. Ничего больше.
Ответ отправлен: 11.05.2003, 20:03 Отправитель: Shurik Отвечает Andy
Приветствую Вас, _hf! > вопрос: при начальном этапе резработки программы на > Паскале у меня "присутствует" динамическая память после > компиляции statik memory - поясните как происходит > переход от одной памяти к другой 1. что вы понимаете под "присутствует динамическая память"? 2. что значит как происходит переход? все что вы описываете как переменные (массивы стринги интегеры и пр.) является статикой и под это просто выделяется память. Динамической памятью называется то что выделяется под себя программой уже после запуска (например динамические списки или деревья) и ни в какую static memory оно не переходит. Andy
Ответ отправлен: 08.05.2003, 21:39 Отправитель: Andy Отвечает Bill
Добрый день, _hf! Конечно, вопрос интересный ..., но: статическая память - это то, что занято "обычными" переменными Паскаля, то есть объявлены в разделе VAR A:Integer; B:Array[1..50] of real. Обращение к нем происходит по имени: B[5]:=1.02E-4; или с помощью указателей (pointer). Но программе выделяется еще память динамическая или "куча" (heap). Обращение к ней возможно только с помощью указателей (или с помощью операторов-массивов MEM). В принципе, динамическая память вся Ваша, но лучше предупреждать операционную систему о том, что Вы разместили в этой памяти что-то (GetMem или New (см. стандартный пример по GetMem)). Это важно в DOS, где другая программа (резидентная, в частности) также может разместить в этой же области памяти свои данные, и "затереть" Ваши! Закончив работу, нужно сказать ОС, что память Вам больше не
нужна (FreeMem или Dispose). Если пишите на Паскале для DOS, а запускаете в Windows, то последнее не обязательно делать. А вот в "чистой" DOS ...
Ответ отправлен: 11.05.2003, 12:35 Отправитель: Bill Отвечает _vt
Здравствуйте, _hf! Даа-аа-а... Никакого перехода никуда не происходит. Переменные, объявленные в программе располагаются в памяти статически -они являются частью кода, а в свободной памяти,оставшейся после запуска твоей программы можно динамически размещать данные, переменные и т.д. с помощью указателей и специальных процедур для работы с ними.
Ответ отправлен: 09.05.2003, 01:44 Отправитель: _vt
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.