Как определить, все ли символы в строке равны

Мне нужно знать, все ли символы в строке равны (образованы одним и тем же символом). функция должна возвращать true или false в зависимости от того, все ли элементы строки равны определенному символу.

Я написал эту функцию, которая хорошо работает, но я ищу более оптимальное (самое быстрое) решение, строки могут иметь тысячи символов.

function AllElementsAreEqual(Element:Char;Str:String):Boolean;
var
  i : Integer;
begin
Result:=True;
 if Str<>'' then
  for i:=1 to Length(Str) do
   if  Str[i]<>Element then
   begin
      Result:= False;
      exit;
   end;
end;

ОБНОВИТЬ наконец, используя предложение Барри Келли и добавивinline Директива, производительность была значительно улучшена.

function AllElementsAreEqual(Const Element:Char;Str:String):Boolean;inline;
type
ArrayInt = Array of Integer;
var
  i    : Integer;
  Delta: Integer;
  List : ArrayInt;
  Test : Integer;
begin
  Result:=True;
  Delta:=(Length(Str) mod  4);
  if Delta<>0 then
  Str:=Str+StringOfChar(Element,4-Delta);
  Test:=Ord(Element) + Ord(Element) shl 8 + Ord(Element) shl 16 + Ord(Element) shl 24;
  List:=ArrayInt(@(Str[1]));

  for i:=0 to ((Length(Str) div 4)-1) do
   if List[i]<>Test  then
    begin
     Result:=False;
     exit;
    end;
end;

ОБНОВЛЕНИЕ 2

извините, но я опубликовал старую реализацию решения (с ошибкой), теперь исправлена. БлагодаряЛиса для создания лучшей реализации предложения Барри.

Ответы на вопрос(1)

Ваш ответ на вопрос