导航

心动吧DELPHI网络书

自发研究:须要多维思想而且要想不可能为可能的人才能做到

[置顶] {下载}本站提供delphi下载

  下载的时候最好不要用迅雷,要不然很容易断线.

  提供多个控件下载:

如何将GB2312和Unicode的汉字编码互相转换

  明生注:有时候需要用到的,但是d7却不支持。先做个备份。方便以后查找

Delphi的unicode与GB2312转转换,汉字unicode转GB2312 {===============================================================}{ 函数 : RESULTSTRING = HexToBin(HEXSTRING){ 目的 : 把十六进制字符串转换为二进制字符串{{===============================================================}{ 函数 : RESULTINTEGER = HexCharToInt(HEXCHAR){ 目的 : 转换一个十六进制字符为整数{===============================================================}{ 函数 : RESULTSTRING = HexCharToBin(HEXCHAR){ 目的 : 转换一个十六进制字符为二进制字符串{===============================================================}{ 函数 : RESULTINTEGER = Pow(BASE,POWER){ 目的 : 指数函数{===============================================================}{ 函数 : RESULTINTEGER = BinStrToInt(BINSTRING){ 目的 : 把二进制字符串转换为整数{===============================================================}{ 函数 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING){ 目的 : 解码一个7-bit SMS (GSM 03.38) 为ASCII码{===============================================================}{ 函数 : RESULTSTRING = ReverseStr (SOURCESTRING){ 目的 : 反转一个字符串{===============================================================}{===============================================================}{ 函数 : RESULTSTRING = UniCode2Gb (SOURCESTRING){ 目的 : 将UniCode字符串转换为GB{===============================================================}{===============================================================}{ 函数 : RESULTSTRING = GB2UniCode (SOURCESTRING){ 目的 : 将GB字符串转换为UniCode{===============================================================}unit BinHexTools;interfacefunction HexToBin(HexNr : String): String;function HexCharToInt(HexToken : char): Integer;function HexCharToBin(HexToken : char): String;function pow(base, power: integer): integer;function BinStrToInt(BinStr : String) : Integer;function DecodeSMS7Bit(PDU : String): String;function ReverseStr(SourceStr : String) : String;function GB2UniCode(GB:string): String;function UniCode2GB(S : String): String;implementationuses sysutils, dialogs;function HexCharToInt(HexToken : char):Integer;begin//if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32);{ 将小写字母转换成大写 }Result:=0;if (HexToken>#47) and (HexToken<#58) then { chars 0....9 }Result:=Ord(HexToken)-48else if (HexToken>#64) and (HexToken<#71) then { chars A....F }Result:=Ord(HexToken)-65 + 10;end;function HexCharToBin(HexToken : char): string;var DivLeft : integer;beginDivLeft:=HexCharToInt(HexToken); { first HexChar->Int }Result:='';{ Use reverse dividing }repeat { Trick; divide by 2 }if Odd(DivLeft) then { result = odd ? then bit = 1 }Result:='1'+Result { result = even ? then bit = 0 }elseResult:='0'+Result;DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 }until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits }end;function HexToBin(HexNr : string): string;{ only stringsize is limit of binnr }var Counter : integer;beginResult:='';for Counter:=1 to length(HexNr) doResult:=Result+HexCharToBin(HexNr[Counter]);end;function pow(base, power: integer): integer; //指数base^powervar counter : integer;beginResult:=1;for counter:=1 to power doResult:=Result*base;end;function BinStrToInt(BinStr : string) : integer;var counter : integer;beginif length(BinStr)>16 thenraise ERangeError.Create(#13+BinStr+#13+'不是一个有效的16Bit二进制单元'+#13);Result:=0;for counter:=1 to length(BinStr) doif BinStr[Counter]='1' thenResult:=Result+pow(2,length(BinStr)-counter);end;function DecodeSMS7Bit(PDU : string):string;var OctetStr : string;OctetBin : string;Charbin : string;PrevOctet: string;Counter : integer;Counter2 : integer;beginPrevOctet:='';Result:='';for Counter:=1 to length(PDU) dobeginif length(PrevOctet)>=7 then { if 7 Bit overflow on previous }beginif BinStrToInt(PrevOctet)<>0 thenResult:=Result+Chr(BinStrToInt(PrevOctet))else Result:=Result+' ';PrevOctet:='';end;if Odd(Counter) then { only take two nibbles at a time }beginOctetStr:=Copy(PDU,Counter,2);OctetBin:=HexToBin(OctetStr);Charbin:='';for Counter2:=1 to length(PrevOctet) doCharbin:=Charbin+PrevOctet[Counter2];for Counter2:=1 to 7-length(PrevOctet) doCharbin:=OctetBin[8-Counter2+1]+Charbin;if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin))else Result:=Result+' ';PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1);end;end;end;function ReverseStr(SourceStr : string) : string;var Counter : integer;beginResult:='';for Counter:=1 to length(SourceStr) doResult:=SourceStr[Counter]+Result;end;function GB2UniCode(GB:string):string;vars: string;i, j, k: integer;a: array [1..160] of char;begins:='';StringToWideChar(GB, @(a[1]), 500);i:=1;while ((a[i]<>#0) or (a[i+1]<>#0)) do beginj:=Integer(a[i]);k:=Integer(a[i+1]);s:=s+Copy(Format('%X ',[k*$100+j+$10000]) ,2,4);//S := S + Char(k)+Char(j);i:=i+2;end;Result:=s;end;function UniCode2GB(S : String):String;Var I: Integer;beginI := Length(S);while I >=4 do begintryResult :=WideChar(StrToInt('$'+S[I-3]+S[I-2]+S[I-1]+S[I]))+ Result;except end;I := I - 4;end;end;end.

 

用 TBytesStream 类实现的读文件为十六进制字符的函数

代码文件:
--------------------------------------------------------------------------------

unit Unit1;

interface
...

如何把图标文件转换为位图文件

如何把图标文件转换为位图文件 重庆市巴南区大江车辆总厂 周剑峰 ---- 图标和位图是WINDOWS 中常见的两种图形资源,在开发应用 程序时,充分地运用这些资源可以极大地改进程序的界面,增强 软件的实现效果。例如在DELPHI 中,我们可以给应用指定一个图 标,给位图命令按钮或加速按钮指定一个位图等。许多开发工具 都提供有大量的图形资源,包括位图、图标、光标、视频文件等, 比如在DELPHI、V

文件和Variant的转换

代码如下:function FileToVariant(FileName: String): OleVariant; var   AStream: TFileStream;   MyBuffer: Pointer; begin   AStream:=TFileStream.create(FileName,fmOpenRead);   try  &n

小写金额转换为大写

财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:function Tform1.SmallTOBig(small:real):string;var SmallMonth,BigMonth:string;wei1,qianwei1:string[2];wei,qi

用Delphi/400转换AS/400的打印文件

代理公司作为IBM的AS/400小型机的老用户,在实际的工作中,需要将AS/400中的数据以E-mail的方式与外界进行数据通讯的需求也越来越多。比如,需要将某一航次的货物舱单(Cargo Manifest)以E-mail的方式传给船公司,此货物舱单就是AS/400的打印文件(Spool File)。如何将AS/400的打印文件以E-mail的方式与外界进行数据通讯,其关键是将此打印文件转化为微机

转换Tcolor到html颜色字符串

代码如下:procedure TForm1.Button1Click(Sender: TObject);var  TheRgbValue : TColorRef;begin  if ColorDialog1.Execute then begin    TheRgbValue := ColorToRGB(ColorDialog1.Color);&nb

转换Word文档为RTF

代码如下:procedure TImport_Form.ToolButton3Click(Sender: TObject);Var  WordApp:Variant;beginif OpenDialog1.Execute thenBegin  Edit1.Text:=ExtractFileName(OpenDialog1.FileName);  StatusBar1.

字符串和枚举类型转换

代码如下:theStringname := GetEnumName(Typeinfo(TAlignment),Ord(label1.Alignment));  label1.Alignment := TAlignment(GetEnumValue(TypeInfo(TAlignment),theStringname));////////////////////////////////ty

分页:[«]1[»]

日历

<< 2013-4 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

站内搜索

Copyright ⊙ 2004-2009 心动吧 UrL:ABCXD.CoM All RiGhts Reserved