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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 21:39   #1
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию Нужна функция декодирования PDU

Нужна функция декодирования PDU(_ttp://www.dreamfabric.com/sms/)
Что бы на выходе получать номер и текст смс сообщения
Спасибо.
AquaKlaster вне форума Ответить с цитированием
Старый 02.10.2010, 23:09   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Код:
...

var
simvol,ucs:array[1..500] of string;
...
function ucs2tostr(ucsstr:string):string;
var
t:string;
a,k,n:integer;
begin
a:=1;
for k:=1 to length(ucsstr) div 4 do begin
for n:=1 to 186 do begin
if ucs[n]=(ucsstr[a]+ucsstr[a+1]+ucsstr[a+2]+ucsstr[a+3]) then begin
t:=t+simvol[n];
end;
end;
a:=a+4;
end;
result:=t;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
n:integer;
begin
simvol[1]:='1';
simvol[2]:='2';
... и так далее перечесли все символы
for n:=1 to 186 do begin
ucs[n]:=ucs2(simvol[n]);
end;
end;
P.S. Пока Лучше и работоющее не нашёл
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.10.2010, 10:55   #3
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Ты хоть сам с ею работал? Это бред а не ф-я.
Есть намного лутше, но мне нужна такая что бы кинул "07911326040000F0040B911346610089F6 0000208062917314080CC8F71D14969741F 977FD07", а на выходе получить
Код:
SMSC#+31624000000
Sender:+31641600986
TimeStamp:26/08/02 19:37:41
TP_PID:00
TP_DCS:00
TP_DCS-popis:Uncompressed Text
class:0
Alphabet:Default

How are you?
Length:12
что то вроде такого. То есть ф-я должна сама отдлить текст и номер от все служебной инфы...
AquaKlaster вне форума Ответить с цитированием
Старый 03.10.2010, 13:05   #4
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Ну извини конечно но в теме что написано я тебе кинул декодер PDU а про парсинг не кто и не говорил Да кстати если есть функция лучше покажи её очень интересно потому что не одну я функцию пробовал, это хоть живая и работает исправно
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.10.2010, 15:40   #5
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
Ну извини конечно но в теме что написано я тебе кинул декодер PDU а про парсинг не кто и не говорил Да кстати если есть функция лучше покажи её очень интересно потому что не одну я функцию пробовал, это хоть живая и работает исправно
или я не понял как твою ф-ю использывать или она не то делает=)

если уверен что она работает, пиши полный пример который раскодирует пду код с моего предыдущего сообщения.
AquaKlaster вне форума Ответить с цитированием
Старый 03.10.2010, 15:45   #6
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

зы. данная ф-я реально работает
Код:
const
  Alphabet7Escape: byte = $1B; // 27
  Alphabet7Bit: array[0..127] of word = (
      {0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F}
{0}   64, 163,  36, 165, 232, 233, 249, 236, 242, 199,  10, 216, 248,  13, 197, 229,
{1} $394,  95,$3A6,$393,$39B,$3A9,$3A0,$3A8,$3A3,$398,$39E,  27, 198, 230, 223, 201,
{2}   32,  33,  34,  35, 164,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
{3}   48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
{4}  161,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
{5}   80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 196, 214, 209, 220, 167,
{6}  191,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
{7}  112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 241, 252, 224);


function GSMDecode7Bit(Value: string): WideString;
var
  i,j,k,len: integer;
  w: word;
begin
  Result := '';
  Value := Unpack7Bit(Value);
  len := Length(Value);
  i := 1;
  while i <= len do begin
    j := Byte(Value[i]);
    if j <= 127 then w := Alphabet7Bit[j]
      else w := 0; { should error here? }
    if j = Alphabet7Escape then begin
      inc(i);
      if i > len then break;
      case Byte(Value[i]) of
        10: w := 12; { FORM FEED }
        20: w := 94;
        27: w := 32;
        40: w := 123;
        41: w := 125;
        47: w := 92;
        60: w := 91;
        61: w := 126;
        62: w := 93;
        64: w := 124;
       101: w := 8364; { Euro sign }
       else begin  w := 63;
       end;
      end; {case}
    end
    else begin
        if (j = 0) and (i < len) and (Byte(Value[i+1]) = 0) then begin
        k := i+2;
        while (k <= len) and (Byte(Value[k]) = 0) do inc(k); // 0x00 up to the...
        if (k > len) or // ...end of (fixed byte length) message -or- FORM FEED
          ((k < len) and (Byte(Value[k]) = Alphabet7Escape) and ((Byte(Value[k+1]) = 10))) then begin
          i := k-1;
          w := 0; // NULL unicode char
        end;
      end;
    end;
    Result := Result + WideChar(w);
    inc(i);
  end;
end;
но к сожилению мне этого мало, мне нужно еще что бы функция отделила текст от другой инфы
AquaKlaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
распаковка JPEG на C. Нужна универсальная функция Marcel Общие вопросы C/C++ 14 23.06.2010 10:18
C++: Нужна функция, которая отсылает электронное письмо на почтовый ящик kolchakA Фриланс 5 08.12.2009 00:45
UTF-8 в Windows-1251 - нужна функция motorway PHP 3 04.07.2009 15:28
Нужна функция поиска в строке Kib Общие вопросы Delphi 3 19.04.2009 21:05
Нужна функция для проигрывания MP3 EniSh Общие вопросы Delphi 6 29.06.2008 01:08