Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 15:23   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию BinToHex из Classes. Как юзать и скормить ей большой String

Наткнулся на функу BinToHex из модуля Classes (если что, привожу её код):
Код:
procedure BinToHex(Buffer, Text: PChar; BufSize: Integer); assembler;
const
  Convert: array[0..15] of Char = '0123456789ABCDEF';
var
  I: Integer;
begin
  for I := 0 to BufSize - 1 do
  begin
    Text[0] := Convert[Byte(Buffer[I]) shr 4];
    Text[1] := Convert[Byte(Buffer[I]) and $F];
    Inc(Text, 2);
  end;
end;
{asm
        PUSH    ESI
        PUSH    EDI
        MOV     ESI,EAX
        MOV     EDI,EDX
        MOV     EDX,0
        JMP     @@1
@@0:    DB      '0123456789ABCDEF'
@@1:    LODSB
        MOV     DL,AL
        AND     DL,0FH
        MOV     AH,@@0.Byte[EDX]
        MOV     DL,AL
        SHR     DL,4
        MOV     AL,@@0.Byte[EDX]
        STOSW
        DEC     ECX
        JNE     @@1
        POP     EDI
        POP     ESI
end;}
1) Совершенно не понятно, почему асм закомментен.
2) Зачем ей столько параметров и какие нужно ввести ( в смысле как её юзать).
3) Если я ей "скормлю" String длиной ~2 9440 000 символов, она её переварит?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.11.2009, 16:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Совершенно не понятно, почему асм закомментен.
Наверное для прикола )
Цитата:
Зачем ей столько параметров и какие нужно ввести ( в смысле как её юзать).
Код:
var s:string;bz:integer;l:PAnsiChar;
begin
 s:='12345';
 GetMem(l,length(s));
 BinToHex((@s[1]),l,length(s));
 Caption:=l;
end;
Цитата:
она её переварит?
А ты попробуй и отойди
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2009, 16:08   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А чтоб получить результат в String?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.11.2009, 16:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чем тебе PAnsiChar не String?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2009, 16:44   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вариации на тему:
Код:
var
   s:string;
   Buf:string;//pchar;
begin
   s:= '45';
   SetLength(Buf,Length(s)*2);
   //GetMem(buf,length(s));
   BinToHex(PChar(s), pchar(Buf), length(s));
   caption:= buf;
end;
но делает функа тоже, что и...
Код:
inttohex(ord(s[i]),2)
только массив в bintohex сразу
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.11.2009, 17:18   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
GetMem(l,length(Bits));
 BinToHex((@Bits[1]),l,length(Bits));
 S:=l;
Длина битс что-то около э...э... 1 000 000 симв.

Ашипка AccessViola

P.S.
Код:
Var
 F: TextFile;
 BitS, S: String;
 X, Y : Integer;
 CurrentNumOfColor : Byte;
 LBit, Bit : TBitMap;
 MultiFlag : Boolean;
 CurrentBitS :String;
 I :Integer;
 N :Integer;
 l:PAnsiChar;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как ускорить работу с большой dbf базой? avfly БД в Delphi 22 13.10.2009 21:37
Маршрутизация.Как юзать локальные ресурсы? Zerone Свободное общение 10 06.10.2009 19:27
Юзать два 2-х ступенчетых переключателя как один 4-х ступенчетый Altera Свободное общение 25 07.08.2009 21:31
как юзать библиотеку time в с++ ? Познающий Общие вопросы C/C++ 1 11.06.2009 17:22