Программы на Visual Basic

Тема в разделе "WASM.RESEARCH", создана пользователем freeloader, 19 окт 2004.

  1. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    freeloader




    Ты можешь это доказать?
     
  2. freeloader

    freeloader New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    23
    Адрес:
    Russia
    а что тут доказывать, когда я делаю тоже самое на VB, когда я смотрю через Вашу же программу, совсем разные цифры..., единственно что может быть, так это то что я нашаманил в коде, вообщем вот опять в студию:

    .386

    .model FLAT, STDCALL

    option casemap:none



    include windows.inc



    includelib kernel32.lib

    include kernel32.inc

    include user32.inc

    includelib user32.lib



    ;

    ;DEBUG

    ;

    ;include debug.inc

    ;includelib debug.lib



    .data



    Serial db ?

    VName db 255 dup(0)

    FSName db 255 dup(0)



    lpfmt db '%u',0

    lpTitleMB db 'wert',0

    lpRootName db 'C:\',0

    lgSizeBuff db 255



    .code



    start:



    invoke GetVolumeInformation, addr lpRootName, addr VName, addr lgSizeBuff, addr Serial, 0, 0, addr FSName, addr lgSizeBuff

    invoke wsprintf,addr FSName,addr lpfmt,addr Serial

    ;mov eax, DWORD ptr offset Serial

    invoke MessageBox,NULL,addr FSName,addr lpTitleMB,MB_OK or MB_ICONASTERISK

    invoke ExitProcess,0



    end start
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Во-первых, сравни свой код из первого поста со вторым, на каком основании ты сменил "Serial dd ?" на "Serial db ?" ?

    Во-вторых где ты увидел в моём коде addr перед Serial ?

    Будь внимательней!
     
  4. freeloader

    freeloader New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    23
    Адрес:
    Russia
    Тогда у меня еще одна просьба по поводу того в каких случаях надо употреблять addr а в каких не надо?

    например взять это:

    invoke wsprintf,addr FSName,addr lpfmt, Serial

    я так понимю что addr это указатель..., а больше пока понять не могу...

    и еще вот эта функция wsprintf откуда она?
     
  5. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Правильно, addr Serial вернет адрес (смещение,offset) переменной , а просто Serial вернет содержимое (значение) переменной.







    из kernel32.dll ,тьфу из MSDN, читай его или какой-нить win32api.hlp всегда перед тем как писать строку кода с API ф-цией, которую видишь в первый раз)



    з.ы. Serial dd ? это переменная в четыре байта (dword), а Serial db ? в один байт (byte)

    з.ы. читай основы