Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка сервером формы пришедшей от клиента [D6, WinXP]


Интересующийся ©   (2006-02-11 09:41:00) 

Сервер получает от клиента инфо с формы в кодированном виде.

Подскажите плиз!

Как привести эту инфу в нормальный текст.


Интересующийся   (2006-02-14 12:56:00) [1]

Digitman ©   (14.02.06 12:55) [15]

>А зачем ?

Интересующийся   (14.02.06 12:55) [14]


Интересующийся   (2006-02-14 12:55:00) [2]

Сам вижу, нет.


Digitman   (2006-02-14 12:55:00) [3]


> А можно из первого убоать?


А зачем ?
Он там как раз к месту ..


Интересующийся   (2006-02-14 12:36:00) [4]

>То-то я смотрю - ты слишком фривольно распорядился в [9] типами переменных. У меня-то как раз WideString использован!

В первом варианте заменил конст на стринг (работало нормально), а во второй перенес непосмотрев рещив, а зря. :((

>Ну и еще непонятно, зачем тебе TStringList в [11] понадобился, если он нигде там не используется/

Вы праввы.
Мусор чистить навдо.

P.S.
А можно из первого убоать?


procedure TForm1.Button1Click(Sender: TObject);
const
Src = '%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C';
var
SL: TStrings;
Dst: String;
i: Integer;
begin
SL := TStringList.Create;
try
  SL.Text := StringReplace(Src, '%u', #13'$', [rfReplaceAll]);
  for i:=1 to SL.Count - 1 do
    Dst := Dst + WideChar(StrToInt(SL[i]));
  ShowMessage(Dst);
finally
  SL.Free;
end;
end;


Digitman   (2006-02-14 11:45:00) [5]


> String и WideString как видно - это большая разница.


Неужели ?)

То-то я смотрю - ты слишком фривольно распорядился в [9] типами переменных. У меня-то как раз WideString использован !

Ну и еще непонятно, зачем тебе TStringList в [11] понадобился, если он нигде там не используется


Интересующийся   (2006-02-14 11:29:00) [6]

Если так


var
SL:TStrings;
Dst:String;
Src,DstW:WideString;
i:Integer;


все работает

Конечный результут


procedure TForm1.Button2Click(Sender: TObject);
var
SL:TStrings;
Dst:String;
Src,DstW:WideString;
i:Integer;
begin

SL:=TStringList.Create;

try
Src:=Edit1.Text;
Dst:='';

for i:=1 to Length(Src) do Dst:=Dst+'%u'+IntToHex(Integer(Src[i]),4);

Memo1.Lines.Add(Dst);
finally
SL.Free;
end;

end;


P.S.
String и WideString как видно - это большая разница.


Digitman   (2006-02-14 11:18:00) [7]


> Интересующийся   (14.02.06 11:01) [9]


С LOCALE разберись.
У меня все в порядке.


Интересующийся   (2006-02-14 11:01:00) [8]

Код текстовой программы

1. Из текста в "Пользователя" (Работает)


procedure TForm1.Button1Click(Sender: TObject);
var
Src:String;
SL:TStrings;
Dst: String;
i: Integer;
begin
SL:=TStringList.Create;

try
Src:=Edit1.Text;
SL.Text:=StringReplace(Src,'%u',#13'$',[rfReplaceAll]);

  for i:=1 to SL.Count-1 do Dst:=Dst+WideChar(StrToInt(SL[i]));

finally
SL.Free;
end;

Memo1.Lines.Add(Dst);
end;


2. Из пользователя в текст (Вопрос)

procedure TForm1.Button2Click(Sender: TObject);
var
Src:String;
SL:TStrings;
Dst:String;
DstW:WideString;
i:Integer;
begin

SL:=TStringList.Create;

try
Src:=Edit1.Text;
Dst:='';

for i:=1 to Length(Src) do Dst:=Dst+'%u'+IntToHex(Integer(Src[i]),4);

Memo1.Lines.Add(Dst);
finally
SL.Free;
end;

end;


Интересующийся   (2006-02-14 10:58:00) [9]

Кодируемый текст

Пользователь

Основная строка
%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C

Результат
%u00CF%u00EE%u00EB%u00FC%u00E7%u00EE%u00E2%u00E0%u00E0%u00F2%u00E5%u00EB%u00FC

Вопрос а гдже соответствие?


Digitman   (2006-02-14 10:31:00) [10]

procedure TForm1.Button1Click(Sender: TObject);
const
 Src = '%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C';
var
 SL: TStrings;
 Dst: String;
 DstW: WideString;
 i: Integer;
begin
 SL := TStringList.Create;
 try
   SL.Text := StringReplace(Src, '%u', #13'$', [rfReplaceAll]);
   for i:=1 to SL.Count - 1 do
     Dst := Dst + WideChar(StrToInt(SL[i]));
   ShowMessage(Dst);
 finally
   SL.Free;
 end;
 DstW := Dst;
 Dst := '';
 for i:=1 to Length(DstW) do
     Dst := Dst + '%u'+ IntToHex(Integer(DstW[i]), 4);
 ShowMessage(Dst);
end;


Интересующийся   (2006-02-14 09:52:00) [11]

Проверил врерно "Пользователь".

Хотя странно, ведь в поле на на инглиге User ставит.

Хотя тесть предпололожение, что я рускую строку из лога не к тому нику указал.

Но дело не в этом, код работает.

А обратная часть есть?
В виде функция я их сам организую :)

P.S.
Digitman вам спасибо за код.


Digitman   (2006-02-14 08:58:00) [12]


> "%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C"
>
>
> Это так выглядит "Интересующийся"


Ой врешь)

Так выглядит слово "Пользователь".

Убедись сам:

procedure TForm1.Button1Click(Sender: TObject);
const
 Src = '%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C';
var
 SL: TStrings;
 Dst: String;
 i: Integer;
begin
 SL := TStringList.Create;
 try
   SL.Text := StringReplace(Src, '%u', #13'$', [rfReplaceAll]);
   for i:=1 to SL.Count - 1 do
     Dst := Dst + WideChar(StrToInt(SL[i]));
   ShowMessage(Dst);
 finally
   SL.Free;
 end;
end;


Интересующийся   (2006-02-14 06:55:00) [13]

Так вот мне нужно получит из


"%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u 044C"


Первоначальное


"Интересующийся"


P.S.
Желательно без доп. компонент, а просто в виде вункции с текстовым пареметром и результом.


Интересующийся   (2006-02-14 06:52:00) [14]

Web-сервер (HTTP) получает от клиента (IE, Opera) результут заполнения формы в виде текста.

Если текст на Eng и без " " то все нормально, в противном случае получаем вот такую вещь


"%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C"


Это так выглядит "Интересующийся"

P.S.
Взято из куков сайта, да простят меня мастера.)

1. Руский "Интересующийся""
Cookie: hotlog=1; delphi_name=%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u 044C; delphi_email=User@Mail.ru

2. Англ "User"
Cookie: delphi_name=User; delphi_email=User@Mail.ri


evvcom   (2006-02-13 10:11:00) [15]

Какой сервер? От какого клиента? Какая форма? Что за инфо? Ты вообще о чем? И где?

> Slym ©   (13.02.06 09:45) [1]

Телепат? Encode - кодировать, раскодировать - decode.


Slym   (2006-02-13 09:45:00) [16]

Раскодировать (URLEncode)


Наверх

Титульная страница Поиск, карта сайта Написать письмо