Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2022, 10:36   #1
solver_l
Новичок
Джуниор
 
Регистрация: 09.07.2022
Сообщений: 3
Печаль Пакетный файл (batch file), pascal, assembler - метка ДАТЫ/ВРЕМЕНИ

Задача: В чистом DOS'е 7.10 (НЕ под Windows cmd.exe!), в пакетном файле
переменной присвоить значение "метки времени"
вида MMDD_HHMN (0709_0857) с "ведущим" нулем.

Учитывая: В чистом DOS'е - НЕ работают конструкции(команды, переменные) вида -
%DATE% , %TIME% , set /a TMP=... , set /p TMP=... , for...token.... и т.д.

1. Был применен "костылик" на pascal'е типа -
Код:
begin
   GetDate(YY, MM, DD, Dow);
   GetTime(HH, MN, SS, Hund);
   ...
end.
(DTstamp.exe) и значение "MMDD_HHMN" я могу вывести на экран, "вернуть на выходе" и т.д.
а в переменную вызывающего batch файла впихнуть не могу... или кто умеет?
(pascal, как собака, все читает, а писать нее... функция Exec() - не помогла..)

2. я готов "глобальной" переменной TMP (обьявленной еще в AUTOEXEC.BAT) присвоить -
set TMP=1234_6789 (9 байт, чтоб длина совпала!)
вызвать свой DTstamp.exe (в котором получаю метку MMDD_HHMN)

и вот тут: нужен кусок кода на assembler'е,
который "впердолит" эти 9 байт в область PSP никого не спрашивая....
(я видел, он умеет спросить адрес - где лежит TMP?)
и этот "кусок кода" - в той же программе pascal'я, TASM умеет, я проверял..

после выхода из DTstamp.exe, я попользуюсь TMP... и...
или верну "как было", или при выходе из batch-файла "само вернется".. проверить надо...

Помогите с "куском кода"... Заранее благодарю!
solver_l вне форума Ответить с цитированием
Старый 09.07.2022, 13:38   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Просто запишите значение в C:\temp.bat файл в виде
Код:
set=0000_0000
del C:\temp.bat
и выполните последовательно программу на pascal и этот файл. Это будет максимально просто. Чем искать корневое окружение DOS
macomics вне форума Ответить с цитированием
Старый 09.07.2022, 17:31   #3
solver_l
Новичок
Джуниор
 
Регистрация: 09.07.2022
Сообщений: 3
По умолчанию

Что-то не понял мысль... (старею.. тупею...)
solver_l вне форума Ответить с цитированием
Старый 09.07.2022, 19:13   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Насколько можно понять условие задачи, то решаться она должна именно на ДОС, а не сторонней утилитой. Можно поиграться с командами date и time, но как оно будет работать в DOS 7.10, если честно, мне неизвестно, так как с таким старьем не работаю.

Последний раз редактировалось Arigato; 09.07.2022 в 19:17.
Arigato вне форума Ответить с цитированием
Старый 09.07.2022, 20:37   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от solver_l Посмотреть сообщение
Что-то не понял мысль... (старею.. тупею...)
Цитата:
Сообщение от solver_l Посмотреть сообщение
В чистом DOS'е 7.10 (НЕ под Windows cmd.exe!), в пакетном файле
Записываете последовательность команд
Код:
my_pascal.exe > set_time.bat
set_time.bat
, а сам my_pascal.exe в консоль выдает 2 строчки.
Код:
SET MYDATE=MMDD_hhmd
del set_time.bat
или сам записывает их в set_time.bat

Этот вариант гораздо проще чем поиск в памяти корневого окружения. DOS 7.10 для каждой запущенной программы создает собственный блок переменных окружения, на которые ссылается слово PSP[44] = сегментный адрес начала локального окружения. После завершения программы это окружение более не будет иметь значения и будет восстановлено на состояние до запуска.
Это означает, что вам необходимо найти в памяти положение корневого блока переменных окружения и менять значения там. Можете сами это попробовать реализовать и поймете, что это геморрой!
macomics вне форума Ответить с цитированием
Старый 09.07.2022, 21:37   #6
solver_l
Новичок
Джуниор
 
Регистрация: 09.07.2022
Сообщений: 3
По умолчанию

macomics
О! теперь понял... Вы правы, так проще.. Спасибо! То-же самое посоветовали -
https://www.cyberforum.ru/cmd-bat/thread3006587.html
проверил, работает! "облагораживать" буду...
solver_l вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метка времени в электронном документе Nikonico Общие вопросы по программированию, компьютерный форум 11 24.12.2018 16:00
Разработать пакетный файл для установки даты и времени virus77724 Помощь студентам 3 06.04.2014 17:38
Batch file в Delphi kotaina Общие вопросы Delphi 3 22.08.2011 13:48
Запись текущей даты времени в текстовый файл kanich Помощь студентам 3 07.09.2010 13:05
Вывод даты и времени (assembler) olen` Помощь студентам 0 05.06.2009 22:45