Problem z IntToHex

0

Witam.

Mam problem z IntToHex, lub być może z wersją Delphi.
Mam pewną funkcję z zastosowaniem tego:

(Form1.Edit14.Text =   ('$') + IntToHex(DirectXPrimaryAddress))

lecz właśnie po zmianie delphi z Tokyo na Berlin (jakakolwiek w tym różnica jest) zaczęło mi tutaj wykrywać błąd:

[dcc32 Error] Unit1.pas(890): E2250 There is no overloaded version of 'IntToHex' that can be called with these arguments.

Jest to coś co działało mi na 100% przez kilka miesięcy w wersji Tokyo. Ten sam projekt po odpaleniu w wersji Berlin już nie działa.

Proszę o wyjaśnienie czemu tak jest.
Dzięki.

0

Tokyo to nowsza wersja niż Berlin. Może była zmiana typu przekazywanej wartości? Co masz pod DirectXPrimaryAddress? Akurat przeinstalowuję Delphi i nie mam jak sprawdzić. To jest jakaś zmienna systemowego czy Twoja?

0

Jest to wartość, którą zapisałem w:

const DirectXPrimaryAddress = $005821E0;

Używam tego do korzystania z pointerów. Generalnie rzecz biorąc chodzi tutaj o bytes, więc poprawnie jest tak że powinienem dawać:

(Form1.Edit14.Text = ('$') + IntToHex(DirectXPrimaryAddress, 8))

Po prostu zastanawiałem się dlaczego Tokyo to potrafi robić bez zapisywania tej "8", a Berlin nie. Myślałem że może coś z "uses" mi się wykasowało.

0

Tokyo ma bardziej rozbudowane konwertery. Looknij sobie do wiki
Berlin
Tokyo
W Berlinie musisz podać ilość liczb na wyjściu, teraz można uznać że w Tokyo jest progress.

0

a wystarczyło najechać na sporną funkcję i wcisnąć F1... Albo prościej najechać na nią myszką i poczekać aż wyskoczy hint z listą parametrów...

Ale nie lepiej na forum lecieć zapytać...

2
Kejsy napisał(a):

Generalnie rzecz biorąc chodzi tutaj o bytes […]

Nie bytes, a digits, bo to o liczbę znaków chodzi (0-F), a nie bajtów.

Po prostu zastanawiałem się dlaczego Tokyo to potrafi robić bez zapisywania tej "8", a Berlin nie. Myślałem że może coś z "uses" mi się wykasowało.

Tak wyglądają deklaracje funkcji w Delphi Berlin:

function IntToHex(Value: Integer; Digits: Integer): string;
function IntToHex(Value: Int64; Digits: Integer): string;
function IntToHex(Value: UInt64; Digits: Integer): string;

A tak wyglądają w Delphi Tokyo:

function IntToHex(Value: Int8): string;
function IntToHex(Value: UInt8): string;
function IntToHex(Value: Int16): string;
function IntToHex(Value: UInt16): string;
function IntToHex(Value: Int32): string;
function IntToHex(Value: UInt32): string;
function IntToHex(Value: Int64): string;
function IntToHex(Value: UInt64): string;
function IntToHex(Value: Integer; Digits: Integer): string;
function IntToHex(Value: Int64; Digits: Integer): string;
function IntToHex(Value: UInt64; Digits: Integer): string;

Dodano funkcje przyjmujące wyłącznie jeden parametr, czyli liczbę do konwersji – liczba znaków na wyjściu dobierana jest automatycznie, według rozmiaru parametru Value w bajtach.

Tak więc nie trać czasu na zastanawianie się – po prostu przeglądaj dokumentację.

1 użytkowników online, w tym zalogowanych: 0, gości: 1