delphi4arab منتديات دلفي للعرب

نسخة كاملة : Fast PDU Encode/Decode
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
Protocol Description Unit -PDU
PDU Encode/Decode ترميز سريع وفك الترميز الصيغ PDU
كود :
procedure Bin2Hex(Buffer, Text: PChar; BufSize: Integer); assembler; const Convert: array[0..15] of Char = '0123456789ABCDEF'; p: array[1..7] of Byte = ($1, $3, $7, $F, $1F, $3F, $7F); var i, Count: Integer; c, Tmp, r: Byte; begin r:= Byte(Buffer[0]); Count:= 1; for i := 0 to BufSize - 1 do if Count < 8 then begin c:= r; if i < (BufSize - 1) then begin Tmp:= Byte(Buffer[I + 1]); r:= Tmp shr Count; c:= c or ((Tmp and p[Count]) shl (8 - Count)); Inc(Count); end; Text[0] := Convert[c shr 4]; Text[1] := Convert[c and $F]; Inc(Text, 2); end else begin Count:= 1; if i < BufSize then r:= Byte(Buffer[i + 1]); end; end; function Hex2Bin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler; const Convert: array['0'..'f'] of SmallInt = ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,10,11,12,13,14,15); p: array[1..7] of Byte = ($7F, $3F, $1F, $F, $7, $3, $1); var i, Count: Integer; Tmp, c, r: Byte; begin I := BufSize; Count:= 1; while i > 0 do begin if not (Text[0] in ['0'..'f']) or not (Text[1] in ['0'..'f']) then Break; c:= (Convert[Text[0]] shl 4) + Convert[Text[1]]; tmp:= c shr (8 - Count); c:= c and p[Count]; if Count > 1 then c:= (c shl (Count - 1)) or r; r:= Tmp; Buffer[0] := Char(c); if Count = 7 then begin Inc(Buffer); Buffer[0] := Char(r); Count:= 1; end else Inc(Count); Inc(Buffer); Inc(Text, 2); Dec(i); end; Result := BufSize - i; end; function EncodePDU7bits(const Source: String): String; var Leng: Integer; begin Leng:= Length(Source); Leng:= (Leng * 2)- ((Leng div 8) * 2); SetLength(Result, Leng); Bin2Hex(PChar(Source), PChar(Result), Length(Source)); end; function DecodePDU7bits(const CodedStr: String): String; var Leng: Integer; begin Leng:= Length(CodedStr) div 2; SetLength(Result, Leng+ (Leng div 7)); Hex2Bin(PChar(CodedStr), PChar(Result), Leng); end;
الاستخدام:
كود :
procedure TForm1.Button1Click(Sender: TObject); begin Memo3.Text:= EncodePDU7bits(Memo1.Text); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo2.Text:= DecodePDU7bits(Memo3.Text); end;
بالتوفيق.
مشكور جدا أخي الكريم بس لوكان تعطينا فكرة شوهو ال pdu
أنا بحثت شو ويبدو أن له علاقة برسائل ال sms في انظمة gsm بس الفكرة مو هون الفكرة كيفية الاسفادة منه؟؟؟
السلام عليكم
تحدث بالعربية حتى يفهمك الجميع Smile
إقتباس :شوهو ال pdu
يستخدم لترميز:
إقتباس :رسائل ال sms في انظمة gsm
إقتباس :كيفية الاسفادة منه؟؟؟
تخزين حجم أقل (حيث رسال SMS لا تتعدى 160 محرف)، واستخدام الأحرف اللاتينية فقط (دون الرموز).
إضافة إلى معلومات حول المرسل والرسالة.
للمزيد:
كود :
http://www.twit88.com/home/utility/sms-pdu-encode-decode
أيضا :google: و :thanks: على المشاركة Smile
ملحوظة: لا يدعم Unicode.
بالتوفيق.
ألف شكر لك اخي الكريم

أنا اتحدث العربي بس أخطاء مطبعية و أسف جدا

سلامي
جزاك الله خيرا على الافادة