Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация 
V
    Опции темы
KTatsu
Дата 28.11.2011, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 23.8.2008
Где: Москва

Репутация: 1
Всего: 1



Тут как бы 2 вопроса, но по моему, решение должно быть схоже.

Во первых, использую ReadProcessMemory. Вот так норм работает:
Код

ReadProcessMemory(la2proc,(LPVOID) 0x0FF6713C,&cp,8,NULL);

А так не хочет даже компилироваться:
Код

ReadProcessMemory(la2proc,(LPVOID) ("0x"+Edit1->Text),&cp,8,NULL);
В Edit текст типа 0FF6713C

Второе, это список клавиш в комбо боксе. Код клавиш F1-F12: 0x70-0x7B, грех не использовать это как-то так:
Код

unsigned short key;
key=IntToHex(ComboBox1->ItemIndex+112,2);
Вместо того, чтобы писать условие на каждую строку комбо бокса. Но тут мне компилятор тоже говорит, что я не прав.

Помогите, пожалуйста smile
PM MAIL   Вверх
Usper
Дата 28.11.2011, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



С преобразованием типов проблема:
0x0FF6713C - число, а "0x"+Edit1->Text строка, причём лучше писать так: AnsiString("0x") + Edit1->Text, чтобы у компилятора меньше неоднозначностей возникало.
IntToHex() преобразует число в строку, а key - это арифметический тип.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
artsb
Дата 28.11.2011, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(KTatsu @  28.11.2011,  02:59 Найти цитируемый пост)
А так не хочет даже компилироваться:

В чём причина вам уже сказал Usper. А сделать можно так.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
KTatsu
Дата 28.11.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 23.8.2008
Где: Москва

Репутация: 1
Всего: 1



Цитата(artsb @  28.11.2011,  08:06 Найти цитируемый пост)
В чём причина вам уже сказал Usper.

Ну, причину я в общем-то из сообщений компилятора понял. А вот как выйти из ситуации не нашел.
Цитата(artsb @  28.11.2011,  08:06 Найти цитируемый пост)
А сделать можно так.

За ссылку спс... Правда я думал, что выход попроще должен быть.
Если так, то в моем случае будет проще организовать поиск адреса по значению и написать 12 строк в обработчике ComboBox'а.

За ссылку еще раз спс, принцип понятен.
PM MAIL   Вверх
Usper
Дата 29.11.2011, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Эээ... если всё понятно из сообщений компилятора, то в чём вообще проблема то? StrToInt() принимает и строки, в которых число записано в шестнадцатиричном виде.
Код

    int a;
    AnsiString S;
    S = "0xFF";
    a = StrToInt(S);
    ShowMessage(IntToStr(a));



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
KTatsu
Дата 29.11.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 23.8.2008
Где: Москва

Репутация: 1
Всего: 1



Вы наверное не правильно поняли, или я не правильно объясннил. Дело в том, что мне нужен какраз арифметический тип, чтобы использовать в другой области программы:
Код

SendMessage(proc, WM_KEYUP, key, NULL);
smile

Это сообщение отредактировал(а) KTatsu - 29.11.2011, 09:55
PM MAIL   Вверх
artsb
Дата 29.11.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(KTatsu @  29.11.2011,  09:47 Найти цитируемый пост)
Вы наверное не правильно поняли

Почему же... Usper правильно говорит.

Из справки:
Цитата

StrToInt


Converts a string that represents an integer (decimal or hex notation) into a number. 

Так что, можно так:
Код

ReadProcessMemory(la2proc, (LPVOID) StrToInt(String("0x") + Edit1->Text), &cp, 8, NULL);



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
KTatsu
Дата 29.11.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 23.8.2008
Где: Москва

Репутация: 1
Всего: 1



А, точно, все работает. Что-то я малость протупил...
Просто мне показалось, что я так уже пробовал:(

Для комбобокса написал так:
Код

key=StrToInt(String("0x")+IntToHex(ComboBox2->ItemIndex+112,2));
Все работает.

Ну, теперь точно все, вопрос решен. Спасибо огромное, ребята! smile

Я бы вам по плюсику поставил, но постов у меня слишком мало :(
PM MAIL   Вверх
artsb
Дата 29.11.2011, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(KTatsu @  29.11.2011,  18:56 Найти цитируемый пост)
key=StrToInt(String("0x")+IntToHex(ComboBox2->ItemIndex+112,2));

Эм... Это вы для теста так написали? А то какой-то замкнутый круг получился smile
Можно же просто:
Код

key=ComboBox2->ItemIndex+112;


Цитата(KTatsu @  29.11.2011,  18:56 Найти цитируемый пост)
Я бы вам по плюсику поставил, но постов у меня слишком мало :( 

Это поправимо  smile 


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
KTatsu
Дата 30.11.2011, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 23.8.2008
Где: Москва

Репутация: 1
Всего: 1



Цитата(artsb @  29.11.2011,  20:17 Найти цитируемый пост)
Можно же просто

Я сомневался в этой строке, потому написал тут...
Теперь мне окончательно стало ясно, на какой именно мелочи я запнулся и запутался smile
Я просто не знал, что, к примеру, между записями "key=0xFF" и "key=255" нет никакой разницы smile 

Хотя до того, как создавать тему я пробовал:
Код

ReadProcessMemory(la2proc,(LPVOID) StrToInt("0x"+Edit1->Text),&cp,8,NULL);
В таком варианте компилировалось, но значения были выданы не из того адреса, который я задавал.
Цитата(artsb @  29.11.2011,  20:17 Найти цитируемый пост)
Это поправимо

Ну... Как бы не хотелось бы всеже засорять форум бесполезными постами smile 

Ну ладненько, еще раз, спасибо smile 

Это сообщение отредактировал(а) KTatsu - 30.11.2011, 01:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0763 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.