Как развернуть строку?

Есть строка "4169BB8C", как развернуть её в обратном порядке по 2 символа что бы получилось "8CBB6941"?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
@DevDemi
procedure TForm1.Button1Click(Sender: TObject);
var
 st,st1:string;
 i,l:integer;
begin
 st:='4169BB8C';   // => 8CBB6941
 l:=length(st);
 st1:='';
 i:=1;
 repeat
  st1:=st1+st[l-i]+st[l-i+1];
  i:=i+2;
 until i>=l;
 Form1.Caption:=st+'=>'+st1;
end;
Ответ написан
@krka92
function RevertString(Value: String): String;
var
  PValue, PResult, PStartValue: PChar;
  LenValue: Integer;
begin
  LenValue := Length(Value);
  if LenValue mod 2 > 0 then raise Exception.Create('По 2 символа не получтися');

  PValue := PChar(Value);
  PStartValue := PValue;
  SetLength(Result, LenValue);
  PResult := PChar(Result);
  Inc(PValue, LenValue - 2);

  while PValue >= PStartValue do
  begin
    Move(PValue^, PResult^, 4);
    Inc(PResult, 2);
    Dec(PValue, 2);
  end;
end;


Так как конкатенация - зло)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы