Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  253

•  TDictionary Custom Sort  3 402

•  Fast Watermark Sources  3 157

•  3D Designer  4 914

•  Sik Screen Capture  3 408

•  Patch Maker  3 611

•  Айболит (remote control)  3 815

•  ListBox Drag & Drop  3 075

•  Доска для игры Реверси  82 423

•  Графические эффекты  4 012

•  Рисование по маске  3 311

•  Перетаскивание изображений  2 687

•  Canvas Drawing  2 827

•  Рисование Луны  2 639

•  Поворот изображения  2 250

•  Рисование стержней  2 191

•  Paint on Shape  1 590

•  Генератор кроссвордов  2 271

•  Головоломка Paletto  1 789

•  Теорема Монжа об окружностях  2 284

•  Пазл Numbrix  1 701

•  Заборы и коммивояжеры  2 078

•  Игра HIP  1 297

•  Игра Go (Го)  1 248

•  Симулятор лифта  1 493

•  Программа укладки плитки  1 241

•  Генератор лабиринта  1 565

•  Проверка числового ввода  1 385

•  HEX View  1 515

•  Физический маятник  1 372

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Преобразование шестнадцатеричных чисел в целые



Оформил: DeeCo

function HexToInt(s: string): Longword;
 var
   b: Byte;
   c: Char;
 begin
   Result := 0;
   s := UpperCase(s);
   for b := 1 to Length(s) do
   begin
     Result := Result * 16;
     c := s[b];
     case c of
       '0'..'9': Inc(Result, Ord(c) - Ord('0'));
       'A'..'F': Inc(Result, Ord(c) - Ord('A') + 10);
       else
         raise EConvertError.Create('No Hex-Number');
     end;
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   ShowMessage(IntToStr(StrToHex('AAF1'))); // > 43761 
end;


 {*************************************************}


 procedure HexToInt(s: string): Integer;
 begin
   Result := StrToInt('$' + s);
 end;

 {*************************************************}

 function HexToInt(strHexValue : string) : Integer;
 var
  c,l : integer;
 begin
   Val(strHexValue, l, c);
   Result := l;
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
  ShowMessage(IntToStr(HexToInt('$EAD1')));
 end;


 {***************************************************}

 unit HexConvert;
 { by Andre Fritzsche }

 interface

 uses SysUtils;

 // Wandelt Hexadezimalwert in Value zu Zahl 
function HexTo(Value: string): Longword;

 // Wandelt Bytewert aus Value in Hexadezimalwert (String) 
function ToHex(Value: Byte): string; overload;

 // Wandelt Wordwert aus Value in Hexadezimalwert (String) und 
// trennt Hi- und Lo-Byte durch Splitter 
function ToHex(Value: Word; Splitter: Char): string; overload;

 // Wandelt Longwordwert aus Value in Hexadezimalwert (String) und 
// trennt Hi- und Lo-Word durch Splitter 
function ToHex(Value: Cardinal; Splitter: Char): string; overload;

 implementation

 const
    HexTbl: string = '0123456789ABCDEF';
   {------------------------------------------------------------------------------}

 function HexTo(Value: string): Longword;
 var
    intX, PosCnt: Byte;
   zwVal: Integer;
 begin
   Result := 0;
   PosCnt := 0; //Halb-Byte-Position 
  for intX := Length(Value) - 1 downto 0 do
    begin     //alle Zeichen von links durchlaufen 
    zwVal := Pos(UpperCase(Value[intX + 1]), HexTbl) - 1; //prufen, ob Zeichen aus Value 
    if zwVal >= 0 then
      begin  //in HexTbl vorkommt und Position zu zwVal 
      Result := Result + (zwVal shl (4 * PosCnt));
       //zwVal 4*Halbbyteposition Bits nach links verschieben 
      Inc(PosCnt);  //Halb-Byte Position erhohen 
    end;
   end;
 end;
 {------------------------------------------------------------------------------}

 function ToHex(Value: Byte): string;
 var
    zwVal: Byte;
 begin
   zwVal  := (Value and $0F);          //erstes (Lo)-Byte von Value maskieren 
  Result := HexTbl[zwVal + 1];        //aus HexTbl zu Result 
  zwVal  := (Value and $F0) shr 4;
   //zweites (Hi)-Byte von Value maskieren und 4Bits nach rechts verschieben 
  Result := HexTbl[zwVal + 1] + Result; //aus HexTbl vor Result 
end;
 {------------------------------------------------------------------------------}

 function ToHex(Value: Word; Splitter: Char): string;
 begin
   Result := ToHex(Byte(Lo(Value)));   //LoByte umwandeln, zu Result 
  Result := ToHex(Byte(Hi(Value))) + Splitter + Result;
   //HiByte umwandeln, zu Result, Trennzeichen davorsetzen 
end;
 {------------------------------------------------------------------------------}

 function ToHex(Value: Cardinal; Splitter: Char): string;
 var
    zwVal: Word;
 begin
   zwVal  := Value and $0000FFFF; //loword maskieren 
  Result := ToHex(Word(zwVal)); //umwandeln und zu Result 
  zwVal  := (Value and $FFFF0000) shr 16; //hiword maskieren 
  Result := ToHex(Word(zwVal)) + Splitter + Result;
   //umwandeln und zu Result, Trennzeichen davorsetzen 
end;
 {------------------------------------------------------------------------------}

 end.







Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте