Показать сообщение отдельно
  #3  
Старый 08.10.2013, 20:25
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Выбирайте
Код:
function hfs(ds: string): string;
var
 i: integer;
 s: string;
 flg: boolean;
begin
 s:= '';
 flg:= false;
 for i := 1 to Length(ds) do
  begin
   s:= s + ds[i];
   if ds[i] = ' ' then
    begin
     if flg then Result:= Result+ s[1] + '.'  else Result:= s;
     s:= '';
     flg:= true;
    end;
   if (flg) and (i = Length(ds)) then Result:= Result + s[1] + '.';
  end;

end;
Код:
function hfs(ds: string): string;
var
 i: integer;
begin
 i:= Pos(' ', ds);
 if i > 0 then
  begin
   Result:= Copy(ds, 1, i);
   i:= PosEx(' ', ds, i);
   Result:= Result + Copy(ds, i+1, 1) + '.';
   i:= PosEx(' ', ds, i);
   Result:= Result + Copy(ds, i+1, 1) + '.';
  end else
   Result:= ds;
end;
Код:
function hfs(ds: string): string;
var
 sl: TStrings;
begin
 sl:= TStringList.Create;
 sl.Delimiter:= ' ';
 sl.DelimitedText:= ds;
 if sl.Count > 0 then
  Result:= sl.Strings[0] + ' ' + sl.Strings[1][1] + '.' + sl.Strings[2][1] + '.'
 else
  Result:= ds;
sl.Free;
end;
Holy fucking shit...

Добавлено значительно позже

Цитата:
Сообщение от M.A.D.M.A.N.
...В общем нужно бежать по строке (со n-го символа (n>1)) и копировать заглавные буквы...
Реализация
Код:
function hfs(ds: string): string;
var
 i: integer;
 flg: boolean;
begin
 flg:= true;
 for i := 1 to Length(ds) do
  begin
   if ds[i] = ' ' then
    begin
     if flg then
      Result:= Result + ' ';
     flg:= false;
    end;
   if flg then
    Result:= Result + ds[i];
   if (not flg) and (ds[i] in ['А'..'Я']) then
    Result:= Result + ds[i] + '.';
  end;
end;



4250
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием