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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 00:45   #1
Byblick32
Пользователь
 
Аватар для Byblick32
 
Регистрация: 29.07.2010
Сообщений: 10
По умолчанию Unicode символ в строку

Доброй ночи.
Необходимо переписать JavaScript функцию в Delphi.

Код:
<script type="text/javascript">var _y8M=''; function _dS(s){ var i;var r=""; var l=s.length-1; var k=s.substr(l,1); for (i=0;i<l;i++){ c=s.charCodeAt(i)-k;  if(c<32){ c=127-(32-c);} r+=String.fromCharCode(c); } return r;} _y8M=_dS('>kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcnwg?$4447;:7689$"1@2');</script>
Кратко расскажу что она делает:
Кодированием/раскодированием символов из строки >kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcn wg?$4447;:7689$"1@2 преобразует ее в нечто человекопонятное, типа <input type="hidden" name="sos" value="2225985467" />

Преобразовывая функцию на язык делфи пришол в некий тупик=)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s:String;
    i,l,k:integer;
    w:word;

begin
s:='>kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcnwg?$4447;:7689$"1@2';
l:=Length(S);
k:=StrToInt(Copy(s, l, 1));

for i:=0 to l-1 do
begin
w:= short(wideChar(s[i+1]))-k; //Получаем код символа в Unicode; в JS это c=s.charCodeAt(i)-k;
if w<32 then w:=127-(32-w); //из JS  if(c<32){ c=127-(32-c) 

Теперь мне надо число из переменной w, оно же символ Unicode, перевести в строку.
Может быть есть какая-то процедура/функция? Пока ничего не нагуглил, только перевод WideChar в String, но ведь у меня не WideChar =(
Byblick32 вне форума Ответить с цитированием
Старый 17.08.2010, 02:56   #2
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

IntToStr ?
r9m вне форума Ответить с цитированием
Старый 17.08.2010, 02:56   #3
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Byblick32 Посмотреть сообщение
Доброй ночи.
Необходимо переписать JavaScript функцию в Delphi.

Код:
<script type="text/javascript">var _y8M=''; function _dS(s){ var i;var r=""; var l=s.length-1; var k=s.substr(l,1); for (i=0;i<l;i++){ c=s.charCodeAt(i)-k;  if(c<32){ c=127-(32-c);} r+=String.fromCharCode(c); } return r;} _y8M=_dS('>kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcnwg?$4447;:7689$"1@2');</script>
Кратко расскажу что она делает:
Кодированием/раскодированием символов из строки >kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcn wg?$4447;:7689$"1@2 преобразует ее в нечто человекопонятное, типа <input type="hidden" name="sos" value="2225985467" />

Преобразовывая функцию на язык делфи пришол в некий тупик=)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s:String;
    i,l,k:integer;
    w:word;

begin
s:='>kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcnwg?$4447;:7689$"1@2';
l:=Length(S);
k:=StrToInt(Copy(s, l, 1));

for i:=0 to l-1 do
begin
w:= short(wideChar(s[i+1]))-k; //Получаем код символа в Unicode; в JS это c=s.charCodeAt(i)-k;
if w<32 then w:=127-(32-w); //из JS  if(c<32){ c=127-(32-c) 

Теперь мне надо число из переменной w, оно же символ Unicode, перевести в строку.
Может быть есть какая-то процедура/функция? Пока ничего не нагуглил, только перевод WideChar в String, но ведь у меня не WideChar =(
Сначала переводи в wideCHAR:
Код:
wch :=WideChar(w);
a потом в String.
Код:
Str := String(wch);
Цитата:
Сообщение от r9m Посмотреть сообщение
IntToStr ?
IntToStr засунет в строку число а не символ по коду.

Последний раз редактировалось Stilet; 18.08.2010 в 09:17.
GBAXA вне форума Ответить с цитированием
Старый 17.08.2010, 03:05   #4
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
a потом в String.
Код:

Str := String(wch);
Типы и так совместимы вроде

Цитата:
IntToStr засунет в строку число а не символ по коду.
Ох, ну спасибо :D Вот я деревня, да? Как он написал, так я и понял. Цитирую:

Цитата:
Теперь мне надо число из переменной w, оно же символ Unicode, перевести в строку.
Я бы понял, если б нормално написал, типа : нужно перевести число в ASCII-символ.

Последний раз редактировалось r9m; 17.08.2010 в 03:09.
r9m вне форума Ответить с цитированием
Старый 17.08.2010, 03:10   #5
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от r9m Посмотреть сообщение
Типы и так совместимы вроде
точно чтото я затупил
GBAXA вне форума Ответить с цитированием
Старый 17.08.2010, 13:23   #6
Byblick32
Пользователь
 
Аватар для Byblick32
 
Регистрация: 29.07.2010
Сообщений: 10
По умолчанию

Спасибо, щас попробую.
Цитата:
Я бы понял, если б нормално написал, типа : нужно перевести число в ASCII-символ.
Ну прост хз как сформулировать), GBAXA вроде понял)

Код:
procedure TForm1.Button1Click(Sender: TObject);
var s,m:String;
    i,l,k:integer;
    w:word;
     wch:WideChar;
begin
s:='>kprwv"v{rg?$jkffgp$"pcog?$uqu$"xcnwg?$4447;:7689$"1@2';
l:=Length(S);
k:=StrToInt(Copy(s, l, 1));

for i:=0 to l-1 do
begin
w:= short(wideChar(s[i+1]))-k;
if w<32 then w:=127-(32-w);
wch :=WideChar(w);
m:=string(wch);
Edit1.Text:=Edit1.Text+m

end;

end;
Всё ок, всем спасибо. С меня + в реп

Последний раз редактировалось Stilet; 18.08.2010 в 09:17.
Byblick32 вне форума Ответить с цитированием
Старый 17.08.2010, 21:33   #7
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Чем Utf8ToAnsi не устроила?
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертировать строку из ANSI в UNICODE Миша Общие вопросы Delphi 8 28.12.2009 18:23
Как игнорироть последний символ переход на новую строку Rustik2 Общие вопросы C/C++ 11 08.11.2009 23:09
Удвоить каждый символ строки, потом перевернуть строку Didi Помощь студентам 6 20.05.2008 15:33
Перевод кодов символов формата Unicode в строку sshaitan Общие вопросы Delphi 0 12.09.2007 19:09