![]() ![]()  | 
	
| pshenan | 
			
			  27.11.2009 15:03
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Андрей Репутация:    0           	 | 
       
			
			 TMT игнорирует settextbuf() 
			
			
					
		TMT 3.9 DOS Подскажите, можно ли решит проблему. В Борланде все работает нормально. Запускаю с дискеты в чистом досе без SmartDrv.exe Работает очень медленно, изменение буфера никаких результатов не дает. tmp.txt - Любой текстовый файл, объемом > несклько килобайт. 
 Сообщение отредактировано: pshenan - 27.11.2009 15:04  | 
	
| andriano | 
			
			  28.11.2009 13:28
			
				 Сообщение
					#2				
			 
		 | 
	
| 
        	
        		 Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация:    28           	 | 
       
			
			 А в чем проблема? В том, что не работает одна из системных функций или в том, что медленно работает программа? 
			
			
					
		Дело в том, что SetTextBuf позволяет несколько улучшить работу неправильно написанной программы, но тем самым и приучает писать неправильно. Буферизация ввода/вывода (если она нужна, а из приведенного примера это не очевидно) делается несколько другим способом.  | 
	
| pshenan | 
			
			  28.11.2009 15:28
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Андрей Репутация:    0           	 | 
       
			
			 А в чем проблема? В том, что не работает одна из системных функций или в том, что медленно работает программа? Проблема в скорости работы. Конфигурационный файл постоянно изменяется и без smartdrv программа подтормаживает. А со smartdrv, в случае сбоя, файл может испортиться, что крайне не желательно. Хотелось бы самостоятельно управлять буферизацией и точно знать, когда файл записан на диск. Вариант с settextbuf() выглядел не самым плохим. Теперь нужно думать о других способах. Не подскажите, как организовать буферизацию в ТМТ?  | 
	
| andriano | 
			
			  28.11.2009 21:04
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация:    28           	 | 
       
			
			 Предварительное замечание: у меня сейчас нет компилятора, поэтому возможны мелкие ошибки. 
			
			
					
		В зависимости от того, что нужно сделать, и от размеров файлов можно идти разными путями. Один из них - считать файл целиком в память и там с ним работать. Если файл может превышать размеры буфера, то читать файл по частям длиной с буфер. Var Если нельзя организовать последовательную обработку файла в одном цикле (например, нужно посимвольно читать из разных мест программы), можно сделать отдельную процедуру добывания очередного символа, которая берет его либо из буфера, либо подчитывет очерадной фрагмент в буфер.  | 
	
| pshenan | 
			
			  28.11.2009 22:57
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Андрей Репутация:    0           	 | 
       
			
			 В зависимости от того, что нужно сделать, и от размеров файлов можно идти разными путями. Один из них - считать файл целиком в память и там с ним работать. Спасибо за совет andriano Я тоже пришел к этому выводу, это наверное даже лучше. Придется переписать модуль для работы с ini файлами через нетипизированный файл. Тогда читать можно один раз при старте программы, а при изменении писать сразу весь файл. Может быть Вы встречали модуль для работы с ini файлами с подобной реализацией? Желательно объектный и без TurboVision, т.к. в TMT это проблемотично. Сообщение отредактировано: pshenan - 28.11.2009 23:07  | 
	
| andriano | 
			
			  29.11.2009 20:51
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация:    28           	 | 
       
			
			 Честно говоря, я ОЧЕНЬ редко ищу какие-либо модули. Обычно написать смому - гораздо быстрее, да и результат получается намного лучше (в первую очередь по скорости работы). 
			
			
					
		Возможно, и сам компилятор ТМТ (для которого очень трудно найти "заточенные" под его модули) способствует именно такому стилю работы. Кстати, читать текстовый файл как бинарный целиком, - наверное, единственный способ разбора многомегабайтных текстовых файлов (например, XML, текстовые форматы представления векторных файлов (*.OBJ, *.MP, *.X)) за вменяемое время.  | 
	
| vladimirgonchar | 
			
			  21.03.2011 15:54
			
				 Сообщение
					#7				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 1 Пол: Мужской Реальное имя: gооgle Репутация:    0           	 | 
       
			
			 Можно как-нибудь настроить TMT Pascal, чтобы он нормально воспринимал русские буквы. А то он работает, как я понимаю, с Win-кодировкой, и при выполнении простейшей программы: 
			
			
					
		programm Probe; begin WriteLnПривет всем; end. на экран выводится что-то типа: "ЁштхЄ тёхь"  | 
	
| pshenan | 
			
			  21.03.2011 16:22
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Андрей Репутация:    0           	 | 
       
			
			 Можно как-нибудь настроить TMT Pascal, чтобы он нормально воспринимал русские буквы. А то он работает, как я понимаю, с Win-кодировкой, и при выполнении простейшей программы: programm Probe; begin WriteLnПривет всем; end. на экран выводится что-то типа: "ЁштхЄ тёхь" Поставь шрифт Terminal и сможешь смотреть досовский текст. А сам текст нужно набирать в досовой кодировке во внешнем редакторе. Я использую ФАР с плагином COLORER. Очень удобно, есть поддержка синтаксиса и много всяких полезностей  | 
	
| andriano | 
			
			  21.03.2011 21:32
			
				 Сообщение
					#9				
			 
		 | 
	
| 
        	
        		 Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация:    28           	 | 
       
			
			 Вообще говоря, кодировка - это проблема Windows, к языку Pascal не имеющая никакого отношения. 
			
			
					
		Что касается настройки среды разработки для изготовления консольных прог, то к предыдущему посту могу добавить еще один совет: Найти в И-нете и установить клавиатурный драйвер кодовой страницы 866. При этом сами раскладки будут переключаться в порядке EN-RU1251-RU866-EN...  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 4:24 |