Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI, C++] Problem z przekazywaniem pointera

Ostatnio zmodyfikowano 2012-12-17 18:53
Autor Wiadomość
codex
Temat założony przez niniejszego użytkownika
» 2012-12-17 17:24:59

proc ShowErrorMessage hWnd,dwError
  local lpBuffer:DWORD
        lea     eax,[lpBuffer]
        invoke  FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
        invoke  MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
        invoke  LocalFree,[lpBuffer]
        ret
endp   

Oczywiscie, że to nie to samo, ale jeżeli w pamięci w określonym miejscu wyląduje wartość typu LPSTR o wartości = x to bez różnicy czy by wylądowało tam LPVOID o wartosci = x lub DWORD o wartosci = x. Program wykona się identycznie. Jestem tego pewien zresztą widać wyżej z przykładu w asm (gotowca wziołem).

P-71296
kubawal
» 2012-12-17 18:09:20
Jakbyś chciał, to mógłbyś w sumie zadeklarować se tablicę char'ów i do niej po jednym bajcie przypisywać ręcznie kolejne bajty wskaźnika.
Ale to już chyba lekki offtop :)
P-71303
codex
Temat założony przez niniejszego użytkownika
» 2012-12-17 18:25:38
No właśnie żartując trafiłeś w sedno sprawy nieświadomie ponieważ do tablicy bajtów czy jak tam wolisz nazywać charów można bezpośrednio skopiować 4 bajty pointera - nie trzeba wcale po 1 kopiować. Z tego powodu nie kumam ni w ząb dlaczego w cpp to takie ważne przestrzegane i pilnowane. Coś mi się wydaje, że tak szybko się nie dowiem :)
 
P-71306
DejaVu
» 2012-12-17 18:48:20
1. Intellisense.
2. Łatwiej czytać kod.
3. Trudniej popełnić nieświadomie błąd.
4. Wskaźnik wcale nie musi mieć 4 bajtów.
5. Typ void* nie mówi o tym na jakie dane wskazuje.
6. Masz zapewnioną kontrolę typów chociażby posługując się wskaźnikami na klasę bazową przy dziedziczeniach.
7. Dziwna ta dyskusja...
P-71314
kubawal
» 2012-12-17 18:53:32
@offtop: Widzę, że Pan Piotr zmienił sobie avatara :) Nawet bardziej pasuje, niż ten poprzedni :P
P-71317
1 « 2 »
Poprzednia strona Strona 2 z 2