IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Удаление всех пробелов
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Помогите написать программу которая в текстовом файле удаляет все пробелы. Сам вроде написал. Знаю как их отследить и удалить, но не могу понять как проделаное программой записать в этот же файл...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Непонятно, как делить тему. Ладно, пусть остается, как есть..

Вот удаление пробелов из файла без переписывания его в новый файл и без особых затрат памяти.
var
f: file of char;
c: char;
r,w: LongInt;

begin
Assign(f,'test.txt');
r:= 0;
w:= 0;
Reset(f);
while not EoF(f) do begin
Read(f,c);
Inc®;
if c<>' ' then begin
Seek(f,w);
Write(f,c);
Inc(w);
Seek(f,r)
end
end;
Seek(f,w);
Truncate(f);
Close(f)
end.


Твой способ удаления пробелов из строки неверен по сути. Он будет удалять только одиночные (или каждый второй в группе) пробелы, а также будет выходить за пределы строки. Если ты заменишь прямой цикл (to) на обратный (downto), то ты исправишь эти ошибки, но останется проблема с его низкой производительностью. Рекомендую почитать вот это: Многократное удаление символов из строки . Там используется фактически тот же способ, что я применил выше к файлу. Если ты хочешь (или должен) обязательно использовать именно текстовые файлы (типа text), то можешь продолжать делать, как делал - читать построчно, удалять пробелы из строки, писать строку в другой файл, потом удалить исходный файл и переименовать результат. При этом ты можешь исправить свою прогу, как я сказал выше, или использовать метод TarasBer'а из FAQ. Но если задача поставлена без ограничений на средства выполнения, то лучше все же работать напрямую с файлом типа file of char.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 1:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name