Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Прочие Программы    >>    10hadv
   
 
 10h советов программисту на TP   Виктор Вагнер 15.09.1994

16 весьма полезных советов и трюков



5k 
 

From: "Victor B. Wagner" <vitus@agropc.msk.su> Subj: А знаете ли вы что... (ver 2).10H советов программисту на TP Organization: Agroecological problems Center Около месяца назад я уже посылал первую версию этого текста в телеконференцию. Тогда советов было 8. Сейчас их число выросло вдвое. Но поскольку первые советы прошли в сезон летних отпусков, я на всякий случай повторяю и их. Приглашаю всех кто совершает маленькие открытия в процессе работы с Turbo Pascal следовать моему примеру и писать о них не дожидаясь, пока кто-нибудь отчаянно завопит: "HE-E-ELP!!!" Вдруг кому приго- дится. А знаете ли вы? Несколько (10h) советов программисту на Turbo Pascal >$0001 А знаете ли вы , что процедура Rename в Turbo Pascal поз- воляет перемещать файлы из одного каталога в другой (правда в пределах одного диска)? >$0002 А знаете ли вы, что вопреки тому, что утверждается в Help, из программы на TP можно открыть более 16 файлов (в пределе - столько, сколько написано в команде FILES CONFIG.SYS). Вот так: Procedure SetMaxFiles(Count:Word);assembler; asm Mov AH,67H MOV BX,Count Int 21H end; После этого вызываете SetMaxFiles(40) и 40 файлов (включая, правда 5 стандартных) в вашем распоряжении. >$0003 А знаете ли вы, что для того, чтобы вызвать из вашей прог- раммы другую, совершенно не обязательно задавать директиву $M и ограничивать память вашей программы еще в момент компиляции. Имеющаяся в модуле Memory Turbo Vision процедура SetMemTop поз- воляет отдать дочернему процессу всю свободную динамическую па- мять. Вот так SetMemTop(HeapPtr);{Отдаем память} Exec(GetEnv('COMSPEC'),'');{В данном случае вызываем DOSShell} SetMemTop(HeapEnd);{Забираем ее обратно} >$0004 А знаете ли вы (по-моему, этого не знает даже Питер Нор- тон), что запуская из вашей программы DOSShell вы вполне можете оставить в Environment достаточно свободного места для работы сложных BAT-файлов. Решение лежит на поверхности: Пусть пере- менная EnvSize:Integer содержит размер корневого Environment (откуда вы его возьмете - ваше дело. Можно воспользоваться мо- дулем TPEnv из архива BONUS в TurboProfessional, можно просто задать константу побольше. Далее делаем вот так Str(EnvSize,tmpString); Exec(GetEnv('COMSPEC'),'/E:'+tmpString); Почему этого не сделал