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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2012, 04:35   #1
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию Coder/Decoder ASCII

Здраствуйте, при написании возникла проблема.
Кодировку в ASCII символы программа выполняет а вот кодировку из них я так и непонял как сделать.
Прошу помои заранее благодарен.

Вот пример кодировки.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
str : string;
begin
for i:=1 to length(memo1.text) do
str := str + inttostr(Ord(memo1.Text[i]))+',';
memo2.text:=str;
end;
DKENT вне форума Ответить с цитированием
Старый 08.02.2012, 08:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Кодировку в ASCII символы программа выполняет а вот кодировку из них я так и непонял как сделать.
что означает "кодировку из них" ?
Вернуть из кодов ASCII обратно в символы?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.02.2012, 16:12   #3
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
что означает "кодировку из них" ?
Вернуть из кодов ASCII обратно в символы?
Да да имено так!
DKENT вне форума Ответить с цитированием
Старый 08.02.2012, 20:05   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Функция Chr
phomm вне форума Ответить с цитированием
Старый 08.02.2012, 22:00   #5
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию

То что функция Chr я знаю, мне необходимо зделать расшифровку в цикле!
Тоесть есть у меня значения ASCII 122,53,67,85 и так далее..
Через запятую перечисляется 1 символ!
Вот мне нужно в компонент memo1 вставить строку типа 122,53,67,85 а в компоненте memo2 получить строковые символы типа abcd.
DKENT вне форума Ответить с цитированием
Старый 09.02.2012, 00:30   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Если у Вас через запятую записаны цифры (символами) то в цикле функцией Pos ищите запятую и вырезайте функциями Copy+Delete всё что до запятой, преобразуйте функцией strtoint в число и скармливайте уже функции Chr
phomm вне форума Ответить с цитированием
Старый 09.02.2012, 00:47   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
вырезайте функциями Copy+Delete всё что до запятой
вместо Delete PosEx.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.02.2012, 09:04   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Я хотел предложить, но PosEx сложнее малость в обращении, а надо бы "новичковское" решение. Ну и тогда ещё добавлю то для PosEx надо подключать модуль StrUtils.
phomm вне форума Ответить с цитированием
Старый 09.02.2012, 10:41   #9
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

phomm: чем же оно сложнее? Есть третий параметр, который обозначает место старта?
Код:
CharPos := 0;
for 0 to 0 do
begin
  CharPos := PosEx('needle', Str, CharPos);
  SomeChar := Copy(Str, CharPos, 2); // например
end;
помоему все очень понятно и легко.

P.S. Код разумеется чисто для примера и врядли будет работать
psycho-coder вне форума Ответить с цитированием
Старый 09.02.2012, 11:19   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кнопочка "Декодировать" :
Код:
implementation
uses StrUtils;

....

procedure TForm1.Button2Click(Sender: TObject);
var
  CommaPos, OldCommaPos : integer;
  str1, str2, sOne : string;
begin
  str2 := '';
  str1 := StringReplace( Memo2.Text, #13#10, '', [rfReplaceAll]);
  OldCommaPos := 1;
  CommaPos := PosEx(',',str1,OldCommaPos);
  while CommaPos>1 do begin
    sOne := copy(str1, OldCommaPos, CommaPos-OldCommaPos);
    str2 := str2 + chr(StrToInt(sOne));
    OldCommaPos := CommaPos+1;
    CommaPos := PosEx(',',str1,OldCommaPos);
  end;
  memo1.text:=str2;
end;
p.s. кстати, в кнопке Button1 (кодировка) весьма рекомендую перед циклом обнулить переменную str - это 100% не помешает!
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
str : string;
begin
  str := '';
  for i:=1 to length(memo1.text) do
     str := str + inttostr(Ord(memo1.Text[i]))+',';
  memo2.text:=str;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jpeg decoder на С# olza Помощь студентам 0 13.05.2011 13:11
msoffice-product-key-decoder Asgardian Microsoft Office Word 1 25.04.2011 11:33
ascii в си++ Bonne Помощь студентам 0 09.04.2010 19:22
ASCII Dimarik Общие вопросы C/C++ 27 28.08.2009 14:50