Сейчас на форуме: _MBK_, tyns777, UniSoft (+11 невидимых)

 eXeL@B —› Программирование —› Ошибки при переводе чисел в delphi
Посл.ответ Сообщение

Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 26 июня 2012 13:04 · Поправил: TryAga1n
· Личное сообщение · #1

Есть адреса в листбоксе:
Code:
  1. 009D2C34
  2. 0234E6A4
  3. 02578208
  4. 0259F630
  5. 025BDC04
  6. 145BEFD8
  7. 1AD22E6C
  8. 36A2F544
  9. 37752D94
  10. 3780C5F1
  11. 37956B88
  12. 37960BCA
  13. 3C5CF818

Для использования в ReadProcessMemory я их получаю и перегоняю в integer
sAddr:=StrToInt('$'+ListBox1.Items.ValueFromIndex[ListBox1.ItemIndex]);

Проблема:
маленькие адреса
Code:
  1. 0234E6A4
  2. 02578208
  3. 0259F630
  4. 025BDC04

перегоняются без ошибок. Большие же
Code:
  1. 145BEFD8
  2. 1AD22E6C
  3. 36A2F544
  4. 37752D94
  5. 3780C5F1
  6. 37956B88
  7. 37960BCA
  8. 3C5CF818

теряют первый символ. получается перевод из 045BEFD8, вместо 145BEFD8.
Как побороть?



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 26 июня 2012 13:12
· Личное сообщение · #2

TryAga1n
Читай справку по Delphi и да StrToInt как бы двух видов int32 и int64, для ReadProcessMemory достаточно ибо BigInt это наркоманией попахивает...
Звезды подсказывают что косяк в типах.

| Сообщение посчитали полезным: TryAga1n

Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 26 июня 2012 13:16
· Личное сообщение · #3

F_a_u_s_t пишет:
StrToInt как бы двух видов int32 и int64

Спасибо большое. Что-то я совсем забыл про int64



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 26 июня 2012 13:24 · Поправил: TryAga1n
· Личное сообщение · #4

Не получается
Беру адрес 145BEFD8
Code:
  1. var
  2. sAddr:INT64;
  3. begin
  4. sAddr:=StrToInt64('$'+ListBox1.Items.ValueFromIndex[ListBox1.ItemIndex]);

в sAddr лежит 73134040(045BEFD8)

Результат тот же...



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 26 июня 2012 13:27 · Поправил: Vovan666
· Личное сообщение · #5

используй wsprintf
кстати была похожая тема
http://exelab.ru/f/action=vthread&forum=6&topic=4331

| Сообщение посчитали полезным: TryAga1n

Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 26 июня 2012 13:33 · Поправил: TryAga1n
· Личное сообщение · #6

Методом проб и ошибок решил вопрос. Всем спасибо


 eXeL@B —› Программирование —› Ошибки при переводе чисел в delphi
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати