- 1
- 2
- 3
- 4
- . . .
- последняя (21) »
Прием советов
Бесплатно
N Сервер Описание 1 http://sunsite.icm.edu.pl/delphi Delphi Super Page Самая большая в мире коллекция компонентов для всех продуктов фирмы Borland.
interface uses String16, SysUtils;
Type PByte = ^BYTE;
procedure BytesToHexstr(var hHexStr: String; pbyteArray: PByte; InputLength: WORD); procedure HexStrToBytes(hHexStr: String; pbyteArray: Pointer); procedure HexBytesToChar(var Response: String; hexbytes: PChar; InputLength: WORD);
implementation procedure BytesToHexStr(var hHexStr: String; pbyteArray: PByte; InputLength: WORD); Const HexChars : Array[0..15] of char = '0123456789ABCDEF'; var i, j: WORD; begin SetLength(hHexStr, (InputLength * 2)); FillChar(hHexStr, sizeof(hHexStr), #0); j:= 1; for i := 1 to InputLength do begin hHexStr[j]:= Char(HexChars[pbyteArray^ shr 4]); inc(j); hHexStr[j]:= Char(HexChars[pbyteArray^ and 15]); inc(j); inc(pbyteArray); end; end;
procedure HexBytesToChar(var Response: String; hexbytes: PChar; InputLength: WORD); var i: WORD; c: byte; begin SetLength(Response, InputLength); FillChar(Response, SizeOf(Response), #0); for i:= 0 to (InputLength – 1) do begin c:= BYTE(HexBytes[i]) And BYTE($f); if c > 9 then Inc(c, $37) else Inc(c, $30); Response[i + 1]:= char(c); end;{for} end;
procedure HexStrToBytes(hHexStr: String; pbyteArray: Pointer); {pbyteArray указывает на область памяти, хранящей результаты} var i, j: WORD; tempPtr: PChar; twoDigits: String[2]; begin tempPtr:= pbyteArray; j:= 1; for i:= 1 to (Length(hHexStr) DIV 2) do begin twoDigits:= Copy(hHexStr, j, 2); Inc(j, 2); PByte(tempPtr)^:= StrToInt('$' + twoDigits); Inc(tempPtr); end;{for} end; end.
UNIT string16.
interface {$IFNDEF Win32} procedure SetLength(var S: string; Len: Integer); procedure SetString(var Dst: string; Src: PChar; Len: Integer); {$ENDIF}
implementation {$IFNDEF Win32} procedure SetLength(var S: string; Len: Integer); begin if len > 255 then S[0]:= Chr(255) else S[0]:= Chr(Len) end;
procedure SetString(var Dst: string; Src: PChar; Len: Integer); begin if Len > 255 then Move(Src^, Dst[1], 255) else Move(Src^, Dst[1], Len); SetLength(Dst, Len); end; {$ENDIF} end.
Function BinToInt(Value: String): Longint; var i,Size: Integer; begin Result:= 0; Size:= Length(Value); for i:=Size downto 0 do begin if copy(value,i,1) = '1' then begin Result:= Result + (1 shl i); end; end; end;
Ссылки
Разработчик Delphi
Русскоязычные
N Сервер Описание 1 http://www.inprise.ru Российское представительство Inprise Фирма – разработчик DelphiАнглоязычные
N Сервер Описание 1 http://www.inprise.com Inprise Фирма – разработчик DelphiСайты, посвященные Delphi
Англоязычные
N Сервер Описание 1 http://sunsite.icm.edu.pl/delphi Delphi Super Page Самая большая в мире коллекция компонентов для всех продуктов фирмы Borland.
Пиратские сайты
Русскоязычные
N Сервер Описание 1 http://delphi4.da.ru KiraSoft Warez Page Delphi distr, DB Aware, Communication, General, Reports, Experts, Misc, Tools, Links 2 www.audit.kharkov.com/barry/Delphi Barry's Delphi Page VCL's, VCL packs, Help Design, FAQ's, IB DataBase, Utilities, ForumДругие
N Сервер Описание 1 http://www.netease.com/~dce Delphi Components Crack (with Dr.Dai) Как там написано, "Following components ONLY for Delphi 3.0", остальное понять трудно, как и идентифицировать родной язык автора сайта, хотя по скриншотам разобраться что и где лежит вполне можноДомашние страницы
Русскоязычные
N Сервер Описание 1 http://www.ph.usmga.ru/lexa Delphi Russian Suite Сайт, посвященный программированию на Дельфи. Автор страницы Алексей Спицын. Можно скачать документацию по Дельфи (в том числе и на русском языке). Есть список ссылок на страницы в интернете, посвященные Дельфи, а также на адреса электронных версий компьютерных журналов.Алгоритмы
Преобразования
HEX→Integer
Решение 1
var i: integer; s: string; begin s:= '$' + ThatHexString; i:= StrToInt(a); end;Решение 2
CONST HEX: ARRAY['A'..'F'] OF INTEGER = (10,11,12,13,14,15); VAR str : String; Int, i: integer; BEGIN READLN(str); Int:= 0; FOR i:= 1 TO length(str) DO IF str[i] < 'a' THEN Int:= Int * 16 + ord(str[i]) – 48 ELSE Int:= Int * 16 + hex[str[i]]; WRITELN(Int); READLN; END.Преобразование десятичного числа в шестнадцатиричное
Самое простое преобразование – через строку. HexString:= Format('%0x', DecValue);Преобразование ASCII в шестнадцатиричное представление
Строка представляет собой массив байтов в виде ASCII-символов. Необходимо организовать преобразование типов по аналогии с Delphi-функциями Ord и Chr. Функция BytesToHexStr преобразует, к примеру, набор байтов [0,1,1,0] в строку '30313130', HexStrToBytes выполнит обратное преобразование. unit Hexstr;interface uses String16, SysUtils;
Type PByte = ^BYTE;
procedure BytesToHexstr(var hHexStr: String; pbyteArray: PByte; InputLength: WORD); procedure HexStrToBytes(hHexStr: String; pbyteArray: Pointer); procedure HexBytesToChar(var Response: String; hexbytes: PChar; InputLength: WORD);
implementation procedure BytesToHexStr(var hHexStr: String; pbyteArray: PByte; InputLength: WORD); Const HexChars : Array[0..15] of char = '0123456789ABCDEF'; var i, j: WORD; begin SetLength(hHexStr, (InputLength * 2)); FillChar(hHexStr, sizeof(hHexStr), #0); j:= 1; for i := 1 to InputLength do begin hHexStr[j]:= Char(HexChars[pbyteArray^ shr 4]); inc(j); hHexStr[j]:= Char(HexChars[pbyteArray^ and 15]); inc(j); inc(pbyteArray); end; end;
procedure HexBytesToChar(var Response: String; hexbytes: PChar; InputLength: WORD); var i: WORD; c: byte; begin SetLength(Response, InputLength); FillChar(Response, SizeOf(Response), #0); for i:= 0 to (InputLength – 1) do begin c:= BYTE(HexBytes[i]) And BYTE($f); if c > 9 then Inc(c, $37) else Inc(c, $30); Response[i + 1]:= char(c); end;{for} end;
procedure HexStrToBytes(hHexStr: String; pbyteArray: Pointer); {pbyteArray указывает на область памяти, хранящей результаты} var i, j: WORD; tempPtr: PChar; twoDigits: String[2]; begin tempPtr:= pbyteArray; j:= 1; for i:= 1 to (Length(hHexStr) DIV 2) do begin twoDigits:= Copy(hHexStr, j, 2); Inc(j, 2); PByte(tempPtr)^:= StrToInt('$' + twoDigits); Inc(tempPtr); end;{for} end; end.
UNIT string16.
interface {$IFNDEF Win32} procedure SetLength(var S: string; Len: Integer); procedure SetString(var Dst: string; Src: PChar; Len: Integer); {$ENDIF}
implementation {$IFNDEF Win32} procedure SetLength(var S: string; Len: Integer); begin if len > 255 then S[0]:= Chr(255) else S[0]:= Chr(Len) end;
procedure SetString(var Dst: string; Src: PChar; Len: Integer); begin if Len > 255 then Move(Src^, Dst[1], 255) else Move(Src^, Dst[1], Len); SetLength(Dst, Len); end; {$ENDIF} end.
Преобразование двоичного числа в десятичное
Может ли кто-нибудь дать мне идею простого преобразования двоичного кода (base2) в десятичный (base10)?Решение 1
///////////////////////////////////////////////////////////////////////// // преобразование 32-битного base2 в 32-битный base10 // // максимальное число = 99 999 999, возвращает –1 при большем значении // ///////////////////////////////////////////////////////////////////////// function base10(base2:integer) : integer; assembler; asm cmp eax,100000000 // проверка максимального значения jb @1 // значение в пределах допустимого mov eax,-1 // флаг ошибки jmp @exit // выход если –1 @1: push ebx // сохранение регистров push esi xor esi,esi // результат = 0 mov ebx,10 // вычисление десятичного логарифма mov ecx,8 // преобразование по формуле 10^8-1 @2: mov edx,0 // удаление разницы div ebx // eax – целочисленное деление на 10, edx – остаток от деления на 10 add esi,edx // результат = результат + разность[I] ror esi,4 // перемещение разряда loop @2 // цикл для всех 8 разрядов mov eax,esi // результат функции pop esi // восстанавление регистров pop ebx @exit: end;Решение 2
function IntToBin(Value: Longint; Size: Integer): String; var i: Integer; begin Result :=''; for i:= Size downto 0 do begin if value and (1 shl i)<>0 then begin Result:= Result+'1'; end else begin Result:= Result+'0'; end; end; end;Function BinToInt(Value: String): Longint; var i,Size: Integer; begin Result:= 0; Size:= Length(Value); for i:=Size downto 0 do begin if copy(value,i,1) = '1' then begin Result:= Result + (1 shl i); end; end; end;
Решение 3
Следующая функция получает в качестве параметра Base (1..16) любую десятичную величину и возвращает результат в виде строки, содержащей точное значение BaseX. Вы можете использовать данный алгоритм для преобразования арабских чисел в- 1
- 2
- 3
- 4
- . . .
- последняя (21) »