Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 23.08.2018 в Сообщения

  1. Есть такая процедура, function DelAmp(const Text: string): string; в FMX.Types. Которая 2 раза выделяет память для всей строки, и сканирует все символы в строке, в поисках &. TLabel.Text := 'Text'; - эта процедура выполнится 2 раза, на любой платформе. Чтобы она выполнилась 1 раз, нужно сделать TLabel.PrefixStyle := TPrefixStyle.NoPrefix; TText TText.Text := 'Text'; Процедура DelAmp выполниться в любом случае на любой платформе procedure TText.SetText(const Value: string); [..] begin if Text <> Value then begin NewText := ConvertText(DelAmp(Value)); [..] Стили состоят из множества TText элементов. Теперь представьте сколько ресурсов тратиться впустую. function DelAmp(const Text: string): string; var I, J: Integer; Sb: TCharArray; begin Result := ''; if Text <> '' then begin SetLength(Sb, Text.Length); I := Low(Text); J := 0; while I <= High(Text) do begin if (Text[I] <> '&') then begin Sb[J] := Text[I]; Inc(J); end else begin if ((I < High(Text)) and (Text[I + 1] = '&')) then begin Sb[J] := Text[I]; Inc(J); Inc(I); end; end; Inc(I); end; Result := string.Create(Sb, 0, J); end; end; Решение - скопировать FMX.Types в папку с проектом, и переделать функцию на: function DelAmp(const Text: string): string; begin Result := Text; end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...