Показать сообщение отдельно
  #24  
Старый 28.07.2008, 17:04
JIexa21 JIexa21 вне форума
Прохожий
 
Регистрация: 23.07.2008
Адрес: Россия, Новочебоксарск
Сообщения: 15
Репутация: 10
По умолчанию

Все есть в комментариях. Вкратце: проверяем пробел есть или нет (если нет то одно слово). Если нет пробела то смотрим ставили ли точку с запятой или нет (ставим если ее нет) и заодно проверяет на пустую строку - ничего с ней не делает и переходит к следующей.
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
txtFile : TStrings;
i : integer;
str : string;
begin
  txtFile := TStringList.create; // создаем объект
  txtFile.LoadFromFile(ExtractFilePath(Application.ExeName)+'1.txt'); // читаем файл из папки с прогой
    for i := 0 to txtFile.Count - 1 do begin
      str := TrimLeft(txtFile.Strings [i]); // сразу убераем пробелы в начале
      if Length(str)>0 then begin // проверка на пустую строку
        if pos(' ',str) > 0 then begin // ищем пробел
          str := copy(str,0,pos(' ',(str))-1)+ ';'; // копируем с начала до первого пробела и прибавляем в конце ';'
        end else begin // пробела нет
          if pos(';',str) = 0 then begin // обрабатывали или нет
            str := str + ';';
          end;
        end;
      end;
    txtFile.Strings[i] := str; // заменяем эту строку созданной
    end;
  txtFile.SaveToFile(ExtractFilePath(Application.ExeName)+'2.txt'); // сохраняем в файл
  txtFile.Free; // освобождаем память

end;

Код:
Обрабатывал такой пример:

  Иван Петров

 Вася Гулькин
      Иван Денисов

петя;
Саша Пупкин

коля

Получил во втором файле:
Иван;

Вася;
Иван;

петя;
Саша;

коля;
Ответить с цитированием