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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2009, 16:15   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию Копирование подстроки

Здравствуйте, уважаемые...
Я к вам с очередной проблеммой. Подскажите, как извлечь число из хекс строки, имея в наличии только паскаль? ) Есть программа на дэльфи (неважно какая), в ней используется скриптовой движок FastScripts (в данном случае часть на паскале)...

Далее... есть строка довольно необычного вида, набор чисел в шестнацатиричной форме...
Для примера:
6C 8d 00 00 00 03 00 00 00 00 00 00 00
где: 1й байт - 1е число(типа byte) , 2-5 быйты - 2е число (интеджер), 6-9 байты - 3е число (интеджер)... далее - неважно...
Строка выглядит именно так, включая пробелы... строк подобных нужно обработать ОЧЕНЬ много, ручками нереально... можно конечно написать отдельнуя программку на дэльфи, но это нежелательно...

Мне нужно используя голый паскаль извлечь эти числа (имея нужную часть строки), первое число извлекать не обязательно, главное - 2е и 3е...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 28.01.2009 в 16:50.
Johnson вне форума Ответить с цитированием
Старый 28.01.2009, 16:40   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

функция pos(substring1,string2) тебе в помощь - эта функция ищет в строке string2 подстроку substring1, и если находит, возвращает номер символа, с которого начинается подстрока в этой строке - вот и ищите пробелы между числами pos(' ',string1), где string1='6C 8d 00 00 00 03 00 00 00 00 00 00 00', и все это в цикле, в котором в конце из строки надо удалить то, что обрабатывалось ( ту компоненту )
capta1n вне форума Ответить с цитированием
Старый 28.01.2009, 16:51   #3
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Извиняюсь, немного изменил вопрос... как извлечь нужную часть строки я понял, теперь не понял как преобразовать из хекса в число )

Чтоб найти нужную часть строки я сделал проще:
Код:
function MyReadD(param: integer; pck: string):string;
var
  a: String;
begin
  a:= Copy(pck,param*2+param-2,12);
  Result := a;
end;
где: param - номер байта, с которого начинать, pck - строка с хесом

мне необходимо только преобразовать типы
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 28.01.2009 в 16:57.
Johnson вне форума Ответить с цитированием
Старый 28.01.2009, 16:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вот тее превращение строки в HEX виде в число. Надо только к этой строке $ добавить и пробелы поубирать.
Код:
var h,s:string;r,i:integer;
begin
h:='$6C8d0000000300000000000000';
i:=0;
val(h,i,r);
end;
В i будет число

P.S. Поставь себе HEX-редактор и им превращай все-во-все
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2009, 17:01   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Ругается на "Ундеклэйред идентифер" Val


НЕХ-редактор у меня есть.... дело в том, что необходимо преобразовать в числа более 10000 строк... я до пенсии буду их переделывать... проще сделать, чтоб скрипт читал строку, преобразовывал её, и производил дальнейшие действия...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 28.01.2009 в 17:05.
Johnson вне форума Ответить с цитированием
Старый 28.01.2009, 18:09   #6
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Решил проблему по-тупому)
Код:
function MyReadD(param: integer; pck: string):integer;
var
  a,s: String;
  i,x:integer;
begin
  s:='';
  a:= Copy(pck,param*2+param-2,12);
  For x:= 1 to Length(a) do
      begin
      if (a[x]<>' ')then s:=s+a[x];
      end;
  a:=s[7]+s[8]+s[5]+s[6]+s[3]+s[4]+s[1]+s[2];
  i:=StrToInt('$'+a);
  Result := i;
end;
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вхождение подстроки в строку! Edimus Общие вопросы C/C++ 4 04.04.2011 07:50
Вставка подстроки в строку Kortes Общие вопросы C/C++ 2 25.12.2008 11:51
значение из подстроки GazimagomedovM Помощь студентам 2 10.07.2008 08:50
в Делфи3 выбор подстроки scorpik_olga Общие вопросы Delphi 8 23.04.2007 11:57