Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2009, 02:45   #1
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию как поменять местами данные в строке

не пойму почему мои темы сносят. может называю не верно.
допустим есть данные вида 01234500. как их получить в таком виде 00452301
зараннее спасибо и надеюсь что эта тема доживет до истины
fize вне форума Ответить с цитированием
Старый 26.11.2009, 05:34   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Логики замены не понял. для примера приведу код меняющий местами 2 символа.

Код:
x:=str[2];
str[2]:=str[3];
str[3]:=x;
Alar вне форума Ответить с цитированием
Старый 26.11.2009, 05:34   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var c:char;
     s:string;
begin
 s:='0123456789';
 c:=s[1];
 s[1]:=s[5];
 s[5]:=c;
end;
меняет местами 5 и 1 символ.
а вообще не понятно по какому принципу менять вам их.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.11.2009, 06:22   #4
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

может так понятнее будет-
имеем -
1A2B3C4D
надо -
4D3C2B1A
fize вне форума Ответить с цитированием
Старый 26.11.2009, 06:48   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
     s,ns:string;
begin
 s:='1A2B3C4D';
 if Length(s) mod 2<>0 then exit;//если в строке нечетное кол-во символов то выход
 ns:='';
 for i:=Length(s)div 2 downto 1 do ns:=ns+Copy(s,i*2-1,2);
 Button1.Caption:=ns;
end;
ну типа такого чтото.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Stilet; 26.11.2009 в 07:59.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.11.2009, 08:00   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

...Интересно а зачем такие муки автору?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.11.2009, 14:12   #7
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
     s,ns:string;
begin
 s:='1A2B3C4D';
 if Length(s) mod 2<>0 then exit;//если в строке нечетное кол-во символов то выход
 ns:='';
 for i:=Length(s)div 2 downto 1 do ns:=ns+Copy(s,i*2-1,2);
 Button1.Caption:=ns;
end;
ну типа такого чтото.
спасибо работает. теперь нужно что бы полученный код (4D3C2B1A) из hex переводился в dex. если использовать виндовс калькулятор то получим -
1295788826
fize вне форума Ответить с цитированием
Старый 26.11.2009, 14:26   #8
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
s:='4D3C2B1A';
s:='$'+s;
i:=strtoint(s);
edit1.Text:=inttostr(i);
end;
если долго не извращаться, то так)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 26.11.2009, 14:49   #9
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
Сообщение от MadReason Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
s:='4D3C2B1A';
s:='$'+s;
i:=strtoint(s);
edit1.Text:=inttostr(i);
end;
если долго не извращаться, то так)
спасибо. вроде работает. только в едит выводит а надо в листбокс пишу так-
Listbox1.Items:=inttostr(i);
но ошибку выдает-
[Error] Unit1.pas(59): Incompatible types: 'TStrings' and 'String'
с этим потом разберусь. теперь нужно что бы полученное число (439041101) делилось на 60 два раза (получится 121955,86~) а результат выводился в едит1 и едит2 так-
edit1:121955 edit2:86
fize вне форума Ответить с цитированием
Старый 26.11.2009, 14:58   #10
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

для начала:

ListBox1.Items.Add(inttostr(i));

edit1:inttostr(число div 120)

edit2:inttostr(число mod 120)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###

Последний раз редактировалось MadReason; 26.11.2009 в 15:05.
MadReason вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как поменять местами концевые и обычные сноски caute Microsoft Office Word 2 25.11.2009 18:29
как поменять местами слова в файле? r-tem Общие вопросы C/C++ 6 01.12.2008 22:17
Как поменять строки местами? ar. Microsoft Office Word 1 05.09.2008 11:36
Как поменять строки в текстовом файле местами _ares_ Помощь студентам 8 13.11.2007 02:14