Все есть в комментариях. Вкратце: проверяем пробел есть или нет (если нет то одно слово). Если нет пробела то смотрим ставили ли точку с запятой или нет (ставим если ее нет) и заодно проверяет на пустую строку - ничего с ней не делает и переходит к следующей.
Код:
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;
Код:
Обрабатывал такой пример:
Иван Петров
Вася Гулькин
Иван Денисов
петя;
Саша Пупкин
коля
Получил во втором файле:
Иван;
Вася;
Иван;
петя;
Саша;
коля;