1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 
4. НЕ используйте форум для личного общения! 
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел! 
| FYzeST | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация:    0           	 | 
       
			
			 Помогите написать программу которая в текстовом файле удаляет все пробелы.  Сам вроде написал.  Знаю как их отследить и удалить, но не могу понять как проделаное программой записать в этот же файл... 
			
			
					
		 | 
	
![]() ![]()  | 
	
| Lapp | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 Помогите написать программу которая в текстовом файле удаляет все пробелы.  Сам вроде написал.  Знаю как их отследить и удалить, но не могу понять как проделаное программой записать в этот же файл... Поскольку тема в теор.разделе, я не буду писать код, а постараюсь сказать словами.. Заводишь два числа типа LongInt - это будут указатели на место чтения и место записи. Например, rRec и wRec. Инициализируй их нулями. Файл объяви как file of char и открой через Reset. Дальше читаешь по одному символу и каждый раз увеличиваешь счетчик чтения. Если прочитанный символ НЕ является пробелом - делаешь Seek(f,wRec), записываешь этот символ туда, увеличиваешь wRec на 1 и возвращаешься к месту чтения, Seek(f,rRec). Если он является пробелом - не делаешь ничего, а просто читаешь дальше. По окончании файла снова идешь к месту wRec и обрезаешь файл (Truncate(f)). Потом закрываешь файл. Все. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
| FYzeST | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация:    0           	 | 
       
			
			 Спасибо!   Но я не очень понял твой способ, поому что не знаю тех функций. 
			
			
					
		Глянь код, и скажи если не сложно как дополнить что бы результат функции Delete записался в файл.... Или я тут вобще неправильно все сделал? program counter;  | 
	
| FYzeST | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация:    0           	 | 
       
			
			 Кстате по поводу файлов еще вопрос. У меня текстовый файл с десятью строками. Как я могу получить доступ к одной определенной строке, например к третей ?? 
			
			
					
		 | 
	
| Lapp | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 Твое "удаление пробелов" будет работать неправильно.  Не хочу в теоретическом разделе разбирать конкретную задачу с кодом.  Попозже перенесу и разделю тему - тогда отвечу..  А вообще, думай, в каком разделе создавать.   
			
			И еще.. Не знаешь функции? Ну, посмотри в книге или а Инете.. Или спроси тут. Кстате по поводу файлов еще вопрос. У меня текстовый файл с десятью строками. Как я могу получить доступ к одной определенной строке, например к третей ?? Прямо - никак. Ресетни файл, пропусти нужное кол-во строк, n-1 - и читай. Вот так: Reset(f); -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
| FYzeST | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация:    0           	 | 
       
			
			 Спасибо большое. 
			
			
					
		 | 
	
| Lapp | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 Непонятно, как делить тему.  Ладно, пусть остается, как есть.. 
			
			Вот удаление пробелов из файла без переписывания его в новый файл и без особых затрат памяти. var Твой способ удаления пробелов из строки неверен по сути. Он будет удалять только одиночные (или каждый второй в группе) пробелы, а также будет выходить за пределы строки. Если ты заменишь прямой цикл (to) на обратный (downto), то ты исправишь эти ошибки, но останется проблема с его низкой производительностью. Рекомендую почитать вот это: Многократное удаление символов из строки . Там используется фактически тот же способ, что я применил выше к файлу. Если ты хочешь (или должен) обязательно использовать именно текстовые файлы (типа text), то можешь продолжать делать, как делал - читать построчно, удалять пробелы из строки, писать строку в другой файл, потом удалить исходный файл и переименовать результат. При этом ты можешь исправить свою прогу, как я сказал выше, или использовать метод TarasBer'а из FAQ. Но если задача поставлена без ограничений на средства выполнения, то лучше все же работать напрямую с файлом типа file of char. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 14:19 |