Diskuze: Odkaz na dvourozměrný vektor z C++ do RAM
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Upravil jsem příkaz, aby se odkazoval na hodnoty přímo z paměti:
Polyline(hdc, *(DWORDLONG *)(bsrc + 0x01719F0F6B + 8 * x + 8), *(DWORD *)(bsrc + 0x01719F0F6B + 4 * x + 4));
Překlad mi ale hlásí chybu, že není definován pointer bsrc (je definován v hlavním programu WinMain. Co s tím ? Přesun funkce OnPaint za blok WinMain nepomohlo.
bsrc už jsem vyřešil jeho definováním:
BYTE* bsrc = NULL;
před funkcí OnPaint. Poslední problém:
argument of type "DWORDLONG" is incompatible with parameter of type "const POINT *"
Co s tím ? Jde o 64bit pointer, který odkazuje do paměti s daty (souřadnice bodů) pro jejich vykreslení funkcí Polyline.
Nakonec se ukázalo, že potřebuji nadefinovat odkaz na data bodů v
paměti.
To znamené nahradit řádek programu, který odkazuje na strukturu bodů:
POINT apt[156]{}
něčím jako
POINT má_adresa_na_pole_bodů[*(DWORD *)(bsrc + 0x01719F0F6B + 4 * x + 4)]
kde je *(DWORD *)(bsrc + 0x01719F0F6B + 4 * x + 4) odkaz na DWORD hodnotu
počet bodů v poli a přesměrovat adresu pole s daty "apt" na mou 64 bit
adresu v paměti např. pomocí *(DWORDLONG *)(bsrc + 0x01719F0F6B + 8 * x +
Zobrazeno 5 zpráv z 5.