ЛитВек: бестселлеры недели
Бестселлер - Кристин Хармел - Жизнь, которая не стала моей - читать в ЛитвекБестселлер - Роберт Сапольски - Психология стресса - читать в ЛитвекБестселлер - Алина Углицкая (Самая Счастливая) - Похищенная - читать в ЛитвекБестселлер - Айн Рэнд - Атлант расправил плечи - читать в ЛитвекБестселлер - Станислав Владимирович Дробышевский - Байки из грота. 50 историй из жизни древних людей - читать в ЛитвекБестселлер - Кристин Ханна - С жизнью наедине - читать в ЛитвекБестселлер - Юваль Ной Харари - Homo Deus. Краткая история будущего - читать в ЛитвекБестселлер - Роберт Сесил Мартин - Чистый код. Создание, анализ и рефакторинг - читать в Литвек
Литвек - электронная библиотека >> Валентин Озеров >> Программирование: прочее и др. >> Советы по Delphi. Версия 1.0.6 >> страница 2
Прием советов Бесплатно

Ссылки

Разработчик 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. Вы можете использовать данный алгоритм для преобразования арабских чисел в
ЛитВек: бестселлеры месяца
Бестселлер - Бодо Шефер - Пёс по имени Мани - читать в ЛитвекБестселлер - Марти Кляйн - Сексуальный интеллект - читать в ЛитвекБестселлер - Николай Кукушкин - Хлопок одной ладонью - читать в ЛитвекБестселлер - Эрих Мария Ремарк - Ночь в Лиссабоне - читать в ЛитвекБестселлер - Фрэнк Патрик Герберт - Дюна - читать в ЛитвекБестселлер - Александр Анатольевич Ширвиндт - Опережая некролог - читать в ЛитвекБестселлер - Марк Гоулстон - Не мешай себе жить - читать в ЛитвекБестселлер - Андрей Уланов - Космобиолухи (Авторская редакция 2020 года, с иллюстрациями) - читать в Литвек