wsprintf выводить дату в полном и сокращенном

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 15 фев 2008.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Здравствуйте.Подскажите пожалуйста как при испоьзовании ф-ии wsprintf выводить дату в полном и сокращенном формате (беру с DATA SYSTEMTIME).
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    приблизительно так

    Код (Text):
    1. .486
    2. .model flat, stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\kernel32.inc
    6. include \masm32\include\user32.inc
    7. includelib user32.lib
    8. includelib kernel32.lib
    9.  
    10.  
    11. .DATA
    12.  
    13. szCaption       db  "LocalTime",0
    14. szFormat  db  "%s %02u %04u at %02u:%02u:%02u",0
    15. ALIGN DWORD
    16. month  db  "Jan",0
    17.        db  "Feb",0
    18.        db  "Mar",0
    19.        db  "Apr",0
    20.        db  "May",0
    21.        db  "Jun",0
    22.        db  "Jul",0
    23.        db  "Aug",0
    24.        db  "Sep",0
    25.        db  "Oct",0
    26.        db  "Nov",0
    27.        db  "Dec",0
    28.  
    29.  
    30. .DATA?
    31. ALIGN DWORD
    32. _st  SYSTEMTIME  <>
    33. buffer  db  128 dup (?)
    34.  
    35. .CODE
    36.  
    37. ALIGN DWORD
    38. start:
    39.   mov  ebx, OFFSET _st
    40.   invoke GetLocalTime, ebx
    41.   assume ebx:ptr SYSTEMTIME
    42.   xor eax, eax
    43.   mov ax, [ebx].wSecond
    44.   push eax   ; 1
    45.   mov ax, [ebx].wMinute
    46.   push eax   ; 2
    47.   mov ax, [ebx].wHour
    48.   push eax   ; 3
    49.   mov ax, [ebx].wYear
    50.   push eax   ; 4
    51.   mov ax, [ebx].wDay
    52.   push eax   ; 5
    53.   mov ax, [ebx].wMonth
    54.   lea eax, [month-4+eax*4]
    55.   push eax   ; 6
    56.   assume ebx:nothing
    57.   push OFFSET szFormat   ; 7
    58.   mov esi, OFFSET buffer
    59.   push esi   ; 8
    60.   call wsprintf
    61.   add esp, (8 * SIZEOF DWORD)
    62.   invoke MessageBox, NULL, esi, OFFSET szCaption, MB_OK or MB_ICONINFORMATION
    63.   invoke ExitProcess, 0
    64. End start