![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте! В "Edit1" находится следующие крякозябры "7156664E" как можо перевернуть последовательность символов наоборот, тобиш что-бы получилось вот так "4E665671" ?
|
|
#2
|
||||
|
||||
|
Как-то так
Код:
L := Length(Edit1.Text);
SetLength(S, L);
for I := 1 to L do
S[L-I+1] := Edit1.Text[i];
Edit1.Text := S; |
|
#3
|
||||
|
||||
|
Админ! Забавный баг. Я пишу Text[i], где I с большой буквы, а в результате вижу с маленькой. Это нормально или злобные вирусы запускают LowerCase? Тэг чтоль какой?
|
|
#4
|
||||
|
||||
|
Прочитай внимательнее порядок символов в результате в посте ТС.
![]() |
|
#5
|
||||
|
||||
|
Намёк на курсив? Так что, у итальянцев нет заглавных букв?
|
|
#6
|
||||
|
||||
|
Я вообще-то про алгоритм. ТС требуется:
Цитата:
Цитата:
|
|
#7
|
||||
|
||||
|
Тормоз! Щаз!
|
|
#8
|
|||
|
|||
|
Ну что мешает сделать по доному из вариантов:
1. Разбить строку на массив по 2 символа в эдементе и переворачивать этот массив. 2. Сделать цикл с шагом 2 и обрабатывать сразу 2 символа. Второй вариант как-то так: Код:
var
S, R : String;
I : Integer;
begin
S := '7156664E';
If Length(S) mod 2 <> 0 Then Raise Exception.Create('Длинна не кратна 2');
R := '';
I := 1;
While I < Length(S) Do
Begin
R := S[i] + S[I+1] + R;
Inc(I,2);
End;
ShowMessage(R);
end; |
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
||||
|
||||
|
Да, нечётные всё портят. Строго с чётными:
Код:
L := Length(Edit1.Text);
SetLength(S, L);
for I := 1 to L do
begin
if I mod 2 = 0 then Continue;
S[L-I] := Edit1.Text[i];
S[L-I+1] := Edit1.Text[I+1];
end; // for I := 1 to L shr 1 do
Edit1.Text := S;Код:
L := Length(Edit1.Text);
if L mod 2 <> 0 then
begin
Edit1.Text := Edit1.Text + #1;
Inc(L);
end; // if L mod 2 <> 0 then
SetLength(S, L);
for I := 1 to L do
begin
if I mod 2 = 0 then Continue;
S[L-I] := Edit1.Text[i];
S[L-I+1] := Edit1.Text[I+1];
end; // for I := 1 to L shr 1 do
if S[2] = #1 then
Delete(S, 2, 1);
Edit1.Text := S;Последний раз редактировалось BBBCat, 18.03.2013 в 19:55. |
|
#11
|
||||
|
||||
|
Цитата:
![]() ![]() ЗЫЖ для непонятливых: не использовать. Последний раз редактировалось Bargest, 18.03.2013 в 20:09. |
|
#12
|
||||
|
||||
|
А ещё есть такая функция Move...
![]() |
|
#13
|
||||
|
||||
|
На производную от bcd формата сильно похоже.
|