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