?? fmain.pas
字號(hào):
unit FMain;
interface
uses
Windows, Messages, SysUtils,IniFiles, Variants, Classes, Graphics, Controls, Forms,
Dialogs , StdCtrls, ComCtrls, ExtCtrls, Buttons,comport,DeviceChange, DB,
Grids;
const
MaxEnumComNum = 25;
Z_OK = 0;
Z_IO_ERROR = 4;
HexArr: array[0..$0F]of string=
( '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
NUL_CHAR = '.';
CRC16_arr : array[Byte] of Word =
($0000, $1189, $2312, $329b, $4624, $57ad, $6536, $74bf,
$8c48, $9dc1, $af5a, $bed3, $ca6c, $dbe5, $e97e, $f8f7,
$1081, $0108, $3393, $221a, $56a5, $472c, $75b7, $643e,
$9cc9, $8d40, $bfdb, $ae52, $daed, $cb64, $f9ff, $e876,
$2102, $308b, $0210, $1399, $6726, $76af, $4434, $55bd,
$ad4a, $bcc3, $8e58, $9fd1, $eb6e, $fae7, $c87c, $d9f5,
$3183, $200a, $1291, $0318, $77a7, $662e, $54b5, $453c,
$bdcb, $ac42, $9ed9, $8f50, $fbef, $ea66, $d8fd, $c974,
$4204, $538d, $6116, $709f, $0420, $15a9, $2732, $36bb,
$ce4c, $dfc5, $ed5e, $fcd7, $8868, $99e1, $ab7a, $baf3,
$5285, $430c, $7197, $601e, $14a1, $0528, $37b3, $263a,
$decd, $cf44, $fddf, $ec56, $98e9, $8960, $bbfb, $aa72,
$6306, $728f, $4014, $519d, $2522, $34ab, $0630, $17b9,
$ef4e, $fec7, $cc5c, $ddd5, $a96a, $b8e3, $8a78, $9bf1,
$7387, $620e, $5095, $411c, $35a3, $242a, $16b1, $0738,
$ffcf, $ee46, $dcdd, $cd54, $b9eb, $a862, $9af9, $8b70,
$8408, $9581, $a71a, $b693, $c22c, $d3a5, $e13e, $f0b7,
$0840, $19c9, $2b52, $3adb, $4e64, $5fed, $6d76, $7cff,
$9489, $8500, $b79b, $a612, $d2ad, $c324, $f1bf, $e036,
$18c1, $0948, $3bd3, $2a5a, $5ee5, $4f6c, $7df7, $6c7e,
$a50a, $b483, $8618, $9791, $e32e, $f2a7, $c03c, $d1b5,
$2942, $38cb, $0a50, $1bd9, $6f66, $7eef, $4c74, $5dfd,
$b58b, $a402, $9699, $8710, $f3af, $e226, $d0bd, $c134,
$39c3, $284a, $1ad1, $0b58, $7fe7, $6e6e, $5cf5, $4d7c,
$c60c, $d785, $e51e, $f497, $8028, $91a1, $a33a, $b2b3,
$4a44, $5bcd, $6956, $78df, $0c60, $1de9, $2f72, $3efb,
$d68d, $c704, $f59f, $e416, $90a9, $8120, $b3bb, $a232,
$5ac5, $4b4c, $79d7, $685e, $1ce1, $0d68, $3ff3, $2e7a,
$e70e, $f687, $c41c, $d595, $a12a, $b0a3, $8238, $93b1,
$6b46, $7acf, $4854, $59dd, $2d62, $3ceb, $0e70, $1ff9,
$f78f, $e606, $d49d, $c514, $b1ab, $a022, $92b9, $8330,
$7bc7, $6a4e, $58d5, $495c, $3de3, $2c6a, $1ef1, $0f78);
Q0_OK_inc_CRC:
ARRAY[1..5] OF BYTE= ($7E,$02,$6A, $D3, $7E);
Q0_Refresh:
ARRAY[1..3] OF BYTE= ($7E,$7E,$7E);
Q0_GET_SW_INFO:
ARRAY[1..1] OF BYTE=($00);
Q0_GET_HW_INFO:
ARRAY[1..5] OF BYTE=($C0, $03, $06, $00, $10);
Q0_MODE_OFFLINE_A:
ARRAY[1..3] OF BYTE= ($29,$00,$00);
Q0_MODE_OFFLINE_D:
ARRAY[1..3] OF BYTE= ($29,$01,$00);
Q0_RESET:
ARRAY[1..3] OF BYTE= ($29,$02,$00);
Q0_DOWNLOAD:
ARRAY[1..1] OF BYTE= ($3A);
Q0_boot_1:
ARRAY[1..1] OF BYTE= ($0c);
Q0_boot_2:
ARRAY[1..20] OF BYTE= ($29, $00, $00, $00, $F9, $D1, $D2, $0B, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00);
Q0_boot_3:
ARRAY[1..3] OF BYTE= ($C1, $00, $00);
Q0_boot_4:
ARRAY[1..9] OF BYTE= ($25, $A2, $3E, $FF, $0F, $58, $72, $7D, $5D);
Q0_EXIT_DM:
ARRAY[1..8] OF BYTE= ($D0, $D1, $D2, $0B, $00, $00, $00, $00);
Q0_WD:
ARRAY[1..10] OF BYTE= ($7E, $99, $E6, $F9, $CD, $2A, $C7, $3F, $BA, $B5);
unlock_1:
$B0 ,$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD ,$B0 ,$B5 ,$14,
$1C ,$1D ,$1C ,$AB ,$F1 ,$78 ,$FF ,$00 ,$28 ,$05 ,$D1 ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21,
$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0,
$BD ,$10 ,$B5 ,$04 ,$1C ,$00 ,$7C ,$61 ,$69 ,$01 ,$28 ,$0B ,$D0 ,$05 ,$28 ,$C6 ,$FF,
$21 ,$6A ,$00 ,$29 ,$04 ,$D0 ,$62 ,$6A ,$A3 ,$6A ,$01 ,$20 ,$AB ,$F1 ,$BE ,$FF ,$20,
$7C ,$05 ,$28 ,$05 ,$D0 ,$07 ,$28 ,$03 ,$D0 ,$0A ,$28 ,$01 ,$D0 ,$0B ,$28 ,$01 ,$D1,
$0F ,$20 ,$08 ,$E0 ,$06 ,$28 ,$01 ,$D1 ,$10 ,$20 ,$04 ,$E0 ,$02 ,$28 ,$01 ,$D1 ,$11,
$20 ,$00 ,$E0 ,$12 ,$20 ,$AB ,$F1 ,$A4 ,$FF ,$10 ,$BD ,$00 ,$29 ,$04 ,$D0 ,$A2 ,$69,
$E3 ,$69 ,$02 ,$20 ,$AB ,$F1 ,$A0 ,$FF ,$21 ,$6A ,$00 ,$29 ,$04 ,$D0 ,$62 ,$6A ,$A3,
$6A ,$00 ,$20 ,$AB ,$F1 ,$98 ,$FF ,$20 ,$7C ,$00 ,$23 ,$0C ,$28 ,$03 ,$D1 ,$00 ,$22,
$00 ,$21 ,$06 ,$20 ,$34 ,$E0 ,$0E ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$07 ,$20 ,$2E,
$E0 ,$0D ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$05 ,$20 ,$28 ,$E0 ,$10 ,$28 ,$03 ,$D1,
$00 ,$22 ,$00 ,$21 ,$08 ,$20 ,$22 ,$E0 ,$11 ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$09,
$20 ,$1C ,$E0 ,$12 ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$0A ,$20 ,$16 ,$E0 ,$13 ,$28,
$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$0B ,$20 ,$10 ,$E0 ,$03 ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00,
$21 ,$0D ,$20 ,$0A ,$E0 ,$04 ,$28 ,$03 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$0E ,$20 ,$04 ,$E0,
$08 ,$28 ,$B5 ,$D1 ,$00 ,$22 ,$00 ,$21 ,$04 ,$20 ,$AB ,$F1 ,$59 ,$FF ,$10 ,$BD ,$20,
$74 ,$01 ,$30 ,$F8 ,$72 ,$01 ,$30 ,$B0 ,$B5 ,$04 ,$1C ,$00 ,$7A ,$00 ,$25 ,$01 ,$28,
$0B ,$D0 ,$05 ,$28 ,$09 ,$D0 ,$02 ,$28 ,$07 ,$D0 ,$06 ,$28 ,$05 ,$D0 ,$07 ,$28 ,$03,
$D0 ,$0A ,$28 ,$01 ,$D0 ,$0B ,$28 ,$01 ,$D1 ,$E3 ,$48 ,$45 ,$70 ,$FE ,$F7 ,$26 ,$F8,
$00 ,$28 ,$23 ,$D0 ,$32 ,$21 ,$01 ,$71 ,$21 ,$7A ,$01 ,$74 ,$61 ,$68 ,$00 ,$29 ,$08,
$D0 ,$09 ,$68 ,$41 ,$61 ,$61 ,$68 ,$49 ,$89 ,$81 ,$61 ,$61 ,$68 ,$09 ,$89 ,$C1 ,$61,
$02 ,$E0 ,$45 ,$61 ,$85 ,$61 ,$C5 ,$61 ,$21 ,$68 ,$00 ,$29 ,$08 ,$D0 ,$09 ,$68 ,$01,
$62 ,$21 ,$68 ,$49 ,$89 ,$41 ,$62 ,$21 ,$68 ,$09 ,$89 ,$81 ,$62 ,$02 ,$E0 ,$05 ,$62,
$45 ,$62 ,$85 ,$62 ,$FE ,$F7 ,$13 ,$F8 ,$B0 ,$BD ,$CE ,$4A ,$80 ,$B5 ,$52 ,$78 ,$01,
$2A ,$01 ,$D1 ,$D6 ,$F0 ,$1D ,$FB ,$80 ,$BD ,$02 ,$1C ,$08 ,$1C ,$11 ,$1C ,$06 ,$2A,
$10 ,$B5 ,$16 ,$D2 ,$02 ,$A3 ,$9B ,$5C ,$5B ,$00 ,$9F ,$44 ,$00 ,$00 ,$03 ,$06 ,$09,
$0C ,$0F ,$12 ,$AB ,$F1 ,$99 ,$FE ,$10 ,$BD ,$AB ,$F1 ,$9D ,$FE ,$10 ,$BD ,$AB ,$F1,
$A1 ,$FE ,$10 ,$BD ,$AB ,$F1 ,$B7 ,$FE ,$10 ,$BD ,$AB ,$F1 ,$C9 ,$FE ,$10 ,$BD ,$00,
$28 ,$FC ,$D0 ,$44 ,$68 ,$00 ,$2C ,$F9 ,$D0 ,$00 ,$23 ,$00 ,$22 ,$01 ,$68 ,$26 ,$20,
$A0 ,$47 ,$10 ,$BD ,$F8 ,$B5 ,$06 ,$1C ,$08 ,$1C ,$15 ,$1C ,$19 ,$1C ,$02 ,$2E ,$07,
$9A ,$06 ,$9C ,$0A ,$D0 ,$03 ,$2E ,$0F ,$D0 ,$04 ,$2E ,$14 ,$D1 ,$00 ,$92 ,$0A ,$1C,
$23 ,$1C ,$29 ,$1C ,$AB ,$F1 ,$B1 ,$FE ,$F8 ,$BD ,$13 ,$1C ,$22 ,$1C ,$28 ,$04 ,$00,
$0C ,$AB ,$F1 ,$7C ,$FE ,$F7 ,$E7 ,$00 ,$92 ,$0A ,$1C ,$23 ,$1C ,$29 ,$1C ,$AB ,$F1,
$8E ,$FE ,$F0 ,$E7 ,$00 ,$2C ,$EE ,$D0 ,$00 ,$21 ,$26 ,$20 ,$A0 ,$47 ,$EA ,$E7 ,$0F,
$B4 ,$F8 ,$B5 ,$06 ,$1C ,$10 ,$38 ,$0F ,$1C ,$07 ,$28 ,$0C ,$9C ,$0D ,$9D ,$1B ,$D8,
$0B ,$98 ,$00 ,$28 ,$18 ,$D0 ,$0B ,$98 ,$14 ,$28 ,$08 ,$D3 ,$14 ,$20 ,$0B ,$99 ,$56,
$F1 ,$56 ,$ED ,$14 ,$23 ,$58 ,$43 ,$0B ,$99 ,$88 ,$42 ,$0C ,$D0 ,$00 ,$2C ,$06 ,$D0,
$95 ,$49 ,$00 ,$20 ,$48 ,$70 ,$00 ,$21 ,$2A ,$1C ,$25 ,$20 ,$A0 ,$47 ,$F8 ,$BC ,$08,
$BC ,$04 ,$B0 ,$18 ,$47 ,$8F ,$49 ,$01 ,$20 ,$48 ,$70 ,$39 ,$1C ,$2B ,$1C ,$22 ,$1C,
$30 ,$1C ,$AB ,$F1 ,$7C ,$FE ,$00 ,$28 ,$06 ,$D1 ,$39 ,$1C ,$30 ,$1C ,$8A ,$4B ,$08,
$AA ,$D3 ,$F0 ,$89 ,$FD ,$E9 ,$E7 ,$00 ,$2C ,$E7 ,$D0 ,$85 ,$49 ,$00 ,$20 ,$48 ,$70,
$00 ,$21 ,$2A ,$1C ,$25 ,$20 ,$A0 ,$47 ,$DF ,$E7 ,$B0 ,$B5 ,$04 ,$1C ,$80 ,$48 ,$0D,
$1C ,$40 ,$78 ,$00 ,$28 ,$07 ,$D0 ,$D3 ,$F0 ,$F3 ,$FD ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21,
$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0,
$BD ,$B0 ,$B5 ,$04 ,$1C ,$76 ,$48 ,$0D ,$1C ,$40 ,$78 ,$00 ,$28 ,$07 ,$D0 ,$D3 ,$F0,
$E2 ,$FD ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD ,$00 ,$2C ,$FC,
$D0 ,$0C ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD ,$B0 ,$B5 ,$04 ,$1C ,$6B ,$48 ,$0D ,$1C,
$40 ,$78 ,$00 ,$28 ,$07 ,$D0 ,$D3 ,$F0 ,$D2 ,$FD ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21 ,$28,
$1C ,$A0 ,$47 ,$B0 ,$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$28 ,$1C ,$A0 ,$47 ,$B0 ,$BD,
$FE ,$B5 ,$08 ,$AD ,$06 ,$1C ,$31 ,$CD ,$0F ,$1C ,$39 ,$1C ,$00 ,$90 ,$30 ,$1C ,$01,
$94 ,$02 ,$95 ,$AB ,$F1 ,$58 ,$FE ,$00 ,$28 ,$04 ,$D0 ,$01 ,$1C ,$30 ,$1C ,$D4 ,$F0,
$55 ,$F8 ,$FE ,$BD ,$00 ,$2C ,$FC ,$D0 ,$2A ,$1C ,$00 ,$21 ,$1B ,$20 ,$A0 ,$47 ,$F7,
$E7 ,$70 ,$B5 ,$05 ,$1C ,$0C ,$1C ,$16 ,$1C ,$AB ,$F1 ,$53 ,$FE ,$00 ,$28 ,$08 ,$D1,
$28 ,$1C ,$D4 ,$F0 ,$59 ,$F8 ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21 ,$30 ,$1C ,$A0 ,$47 ,$70,
$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$30 ,$1C ,$A0 ,$47 ,$70 ,$BD ,$B0 ,$B5 ,$14 ,$1C,
$1D ,$1C ,$AB ,$F1 ,$41 ,$FE ,$00 ,$28 ,$05 ,$D1 ,$00 ,$2C ,$02 ,$D0 ,$00 ,$21 ,$28,
$1C ,$A0 ,$47 ,$B0 ,$BD ,$00 ,$2C ,$FC ,$D0 ,$0C ,$21 ,$81 ,$3E ,$7E);
EOQ = $7E; STX = $02; SEPQ = $00; EOT = $04;
type
T_IntVect = Array of byte;
T_Handset_INFO = object
Model : String;
CPU: String;
SW_Ver : String;
HW_boot : String;
Boot_Ver : String;
end;
T_MODELz = object
name : String;
FLASH_ADDR : dword;
FLASH_LEN : dword;
BUFFER : dword;
FLASH_SUPPORTED : boolean;
ULNOCK_SUPPORTED : boolean;
USR_CODE_EDIT : boolean;
end;
T_QTAC = ARRAY of T_MODELz;
TMain = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
cmb_com: TComboBox;
Label1: TLabel;
grp_services: TGroupBox;
ProgressBar: TProgressBar;
StatusBar: TStatusBar;
btn_info: TButton;
btn_DM: TButton;
btn_offline_d: TButton;
btn_restart: TButton;
btn_wd: TButton;
Timer: TTimer;
OpenDialog: TOpenDialog;
Lock: TGroupBox;
User_code: TEdit;
btn_lock: TButton;
btn_wr_lock: TButton;
GroupBox7: TGroupBox;
btn_rd_spc: TButton;
btn_wr_spc: TButton;
SPC: TEdit;
Tab_Info: TPageControl;
TabSheet1: TTabSheet;
Memo: TMemo;
btn_magic: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Terminate;
procedure stop;
procedure AddLinesLog(s: string);
procedure error;
Function Info_dm: boolean;
Function dm:boolean;
Function EXIT_DM:boolean;
procedure btn_infoClick(Sender: TObject);
procedure btn_rd_spcClick(Sender: TObject);
procedure btn_restartClick(Sender: TObject);
procedure btn_lockClick(Sender: TObject);
procedure btn_offline_aClick(Sender: TObject);
procedure btn_DMClick(Sender: TObject);
procedure btn_exit_dmClick(Sender: TObject);
procedure btn_offline_dClick(Sender: TObject);
Function InitializeINTERFACE: boolean;
procedure ComBo_INTERFACESelect(Sender: TObject);
procedure REFR_INTERFACE_LIST;
procedure FormShow(Sender: TObject);
procedure COM_Change(Sender: TObject);
Procedure StatusBar_UPDATE( phone: T_Handset_INFO);
procedure Get_INFO(echo:boolean);
procedure btn_wdClick(Sender: TObject);
procedure btn_wr_lockClick(Sender: TObject);
procedure idletime(Sender: TObject; var Done: Boolean);
procedure FormDestroy(Sender: TObject);
procedure DevChangeArrival(Sender: TObject; ADeviceType: TDeviceType; APtr: Pointer);
procedure DevChangeRemoveComplete(Sender: TObject; ADeviceType: TDeviceType; APtr: Pointer);
procedure btn_wr_spcClick(Sender: TObject);
procedure btn_magicClick(Sender: TObject);
private
{ Private declarations }
DeviceChange1 : TDeviceChange;
public
{ Public declarations }
end;
var
Main: TMain;
iniFile : TIniFile = nil;
iniFileX : TIniFile = nil;
// iniFileName : string = '.\huawei_tools.ini';
REFRESH_REQUESTED : Boolean;
PortNum : integer;
QTAC : T_QTAC;
OK_ALLOWED : Boolean;
implementation
{$R *.dfm}
function RightStr
(Const Str: String; Size: Word): String;
begin
if Size > Length(Str) then Size := Length(Str) ;
RightStr := Copy(Str, Length(Str)-Size+1, Size)
end;
function MidStr
(Const Str: String; From, Size: Word): String;
begin
MidStr := Copy(Str, From, Size)
end;
function LeftStr
(Const Str: String; Size: Word): String;
begin
LeftStr := Copy(Str, 1, Size)
end;
function CRC16_Calc0(DataPtr: Pointer; DataLen: Integer): Word;
var
i: Integer;
begin
Result := $ffff;
while ((PByte(DataPtr)^)=$7e)
do
begin
Inc(PByte(DataPtr));
Dec(DataLen);
end;
for i := 0 to DataLen - 1 do
begin
Result := CRC16_arr[Byte(Result xor PByte(DataPtr)^)] xor
((Result shr 8) and $0ff);
Inc(PByte(DataPtr));
end;
Result := Result Xor $ffff;
end;
Procedure QAPPEND_CRC(var CMD: T_IntVect; CHKsum: word);
var
crc1,crc2: byte;
len, num : integer;
begin
num:= 0;
crc1 := (CHKsum ) ;
crc2 := (CHKsum Shr 8) and $00FF ;
len := Length(CMD);
num := num+1;
len := Len+1;
SetLength(CMD,Len);
CMD[Len-1] := crc1;
num := num+1;
len := Len+1;
SetLength(CMD,Len);
CMD[Len-1] := crc2;
end;
Function QSerialize(DataPtr:T_IntVect): T_IntVect;
var buf1: T_IntVect;
i, offset, DataLEn : integer;
begin
offset := 0;
DataLEn := Length(DataPtr);
SetLength(buf1,DataLEn);
for i:=0 to DataLEn-1 do
begin
case (DataPTR[i]) of
$7e : if i=0 then buf1[i+offset] := DataPtr[i]
else
begin
setlength (buf1,length(buf1)+1);
buf1[i+offset] := $7d;
Inc(offset);
buf1[i+offset] := $5e;
end;
$7d : begin
setlength (buf1,length (buf1)+1);
buf1[i+offset] := $7d;
Inc(offset);
buf1[i+offset] := $5d;
end;
else buf1[i+offset] := DataPtr[i];
end;
end;
result := buf1;
end;
function StrToHexSTR(txt: string): string;
var i: integer;
ret: string;
begin
i:=1;
ret := '';
while i<length(txt)
do
begin
if copy(txt,i,length(NUL_CHAR)) = NUL_CHAR
then
begin
ret := ret + ' $00';
i := i+5;
end
else
if copy(txt,i,5) = '<STX>'
then
begin
ret := ret + ' $02';
i := i+5;
end
else
if copy(txt,i,5) = '<EOq>'
then
begin
ret := ret + ' $7E';
i := i+5;
end
else
if copy(txt,i,5) = '<EOT>'
then
begin
ret := ret + ' $04';
i := i+5;
end
else
begin
ret := ret + ' $'+IntToHex(Integer(txt[i]),2);
Inc(i);
end;
end;
StrToHexSTR := ret;
end;
Procedure auto_crc;
var
len : integer;
CHKsum : word;
CMD : T_IntVect;
begin
CHKsum := CRC16_Calc0(CMD, len);
len := Len+2;
SetLength(CMD,len);
CMD[len-2] := (CHKsum ) ;
CMD[len-1] := (CHKsum Shr 8) and $00FF ;
end;
procedure Chk_ADD_EOq;
var
len : integer;
CMD : T_IntVect;
begin
if (CMD[len-1] <> EOq)
then
begin
len := Len+1;
SetLength(CMD,len);
CMD[len-1] := EOq;
end;
end;
function Hex2_Int(Value: char;pos:shortint): integer;
var val,i: integer;
begin
val := 1;
for i := 1 to pos do
val := val * 16;
case Value of
'A', 'a' : result := 10 * val;
'B', 'b': result := 11 * val;
'C', 'c': result := 12 * val;
'D', 'd': result := 13 * val;
'E', 'e': result := 14 * val;
'F', 'f': result := 15 * val;
'1'..'9': result := StrToInt(Value) * val;
'0' : result := 0;
end;
end;
function Hex2Int(Value: String): dword;
var
len,val,i : integer;
begin
len := Length(Value);
val := 0;
for i:=len downto 1 do
val := val+Hex2_Int(Value[i],len-i);
Hex2Int := val;
end;
function IntArray2HexSTR(Arr: Array of byte): String;
var len,i: integer;
txt: string;
begin
len := length(Arr);
txt := '';
txt := IntToHex(Arr[0],2);
for i:=1 to len-1 do
txt := txt + ' '+IntToHex(Arr[i],2);
txt := txt;
IntArray2HexSTR := txt;
end;
Procedure Del_CHAR(var src: string;pos:word);
begin
src := copy(src,1,pos-1)+ copy(src,pos+1,length(src));
end;
Procedure Add_CHAR(var src: string;pos:word;chr:char);
begin
src := copy(src,1,pos-1)+chr+copy(src,pos,length(src));
end;
function HexSTR2IntArray(src: String): T_IntVect;
var lungth, i, j : byte;
output: T_IntVect;
deb : string;
deb1 : integer;
begin
while (length(src)>1) and (src[1]=' ')
do Del_CHAR(src,1);
while (length(src)>0) and (src[length(src)]=' ') do Del_CHAR(src,length(src));
for i := 1 to length(src) do
if src[i] = ' ' then
begin
while (i<length(src)) and (src[i+1]=' ')
do Del_CHAR(src,i);
if src[i+2] = ' ' then Add_CHAR(src,i+1,'0');
Del_CHAR(src,i);
end;
lungth := Length(src);
SetLength(output,lungth Div 2);
if Length(output)=0 then SetLength(output,1);
i := 1;
j := 0;
while i<=lungth do
begin
deb:= copy(src,i,2);
deb1 := Hex2Int(deb);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -