Показать сообщение отдельно
  #6  
Старый 12.11.2014, 15:14
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от NoSilence
А я предполагал, что есть какой-то профит в быстродействии.
Выигрыш в быстродействии теоретический, за счет отказа от индексной адресации и (в теории) уменьшения надобности в регистрах для хранения отдельно начала строки и отдельно индекса.
Код:
function Rewind(Source: string): string;
var
  Src, Dst: PChar;
  L: Integer;
begin
  if Source <> '' then
  begin
    L := Length(Source);
    SetLength(Result, L); // выделение памяти
    Src := Pointer(Source);
    Dst := @Result[L];
    while Src^ <> #0 do
    begin
      Dst^ := Src^;
      Inc(Src);
      Dec(Dst);
    end;
  end
  else
    Result := ''; // nil в nil
end;
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием