Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.07.2011, 23:47
EverGreen EverGreen вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 4
Репутация: 10
Радость Удаление пустых строк в конце файлов

Уважаемые форумчане и гуру Дельфи!
Прошу вашей помощи, т.к. я только начинаю программировать на дельфи.

Вопрос такой: нужен скрипт на дельфи для удаления пустых строк в конце файлов.
Есть ListBox1, список файлов (10-15 шт), есть Button1.
Надо, что бы после нажатия на Button1 из всех (или выбранных) файлов из ListBox1 в конце были удалены пустые строки или символы (HEX - #32, BIN-#20) строго после окончания текста, а также были сохранены произведенные изменения с файлами.
Конец текста соостветственно обозначен точкой "."
Как это сделать?
Спасибо огромное всем за помощь!
Ответить с цитированием
  #2  
Старый 22.07.2011, 23:53
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Первое, что приходит в голову, загружать файлы поочерёдно в StringList, сканировать строки на требуемое условие и ненужные удалять, по завершении - сохранить.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 22.07.2011, 23:59
EverGreen EverGreen вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 4
Репутация: 10
По умолчанию

А как все это сделать? Плиз....
Ответить с цитированием
  #4  
Старый 23.07.2011, 00:09
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Эээ.
Код:
var
  sl : TStringList;
  I  : Integer;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('MyFile.txt');
    for I := 0 to sl.Count - 1 do
    begin
       // проверяем, что в строке
    end;
    sl.SaveToFile(MyFile_1.txt);
  finally
    sl.Free;
  end;
end;
Набрано здесь же, за достоверность не ручаюсь.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 23.07.2011, 00:15
EverGreen EverGreen вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 4
Репутация: 10
По умолчанию

//проверяем, что в строке
Это вот как-то так:
Trim( sl.Strings[i] ) = ''пустышка"

А для символов в бинарном виде : #20, #32 как это делается и как построить цикл для всех файлов из ListBox1?
Гранд мэрси!

Последний раз редактировалось EverGreen, 23.07.2011 в 00:18.
Ответить с цитированием
  #6  
Старый 23.07.2011, 00:17
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну автору виднее, но лучше изменить цикл на while, если предполагается удаление.

Код:
for J := 0 to ListBox1.Count - 1 do
begin
  предыдущий код
end;

Используй функцию Pos
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.07.2011 в 00:20.
Ответить с цитированием
  #7  
Старый 23.07.2011, 00:30
EverGreen EverGreen вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 4
Репутация: 10
По умолчанию

ууух, что то не соображается. Видно уже поздно. Направления действий получил, буду пробовать! Если не получиться, буду опять задавать тупые вопросы 8-)
Спасибо Вам за советы! Всего наилучшего!!!
Ответить с цитированием
  #8  
Старый 23.07.2011, 00:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

пимерно так:
Код:
var
  sl : TStringList;
  I, J  : Integer;
begin
  for J := 0 to ListBox.Count - 1 do
  begin
    if ListBox1.Selected[i] then // выбираем только отмеченные
    begin
      sl := TStringList.Create;
      try
        sl.LoadFromFile('MyFile.txt');
        while True
        begin
         // проверяем, что в строке
         if начинается нужный текст then
           Break;
        end;
        sl.SaveToFile(MyFile_1.txt);
      finally
        sl.Free;
      end;
    end;
  end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 23.07.2011, 00:42
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

а как же replaceString? ( Копипастим конец файла и заменяем

Последний раз редактировалось ART, 23.07.2011 в 00:45.
Ответить с цитированием
  #10  
Старый 23.07.2011, 00:50
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

С какой версии Дельфи включено?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter