Справочник по WIN API

Тема в разделе "WASM.BEGINNERS", создана пользователем Luzer, 16 янв 2008.

  1. zet

    zet New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2007
    Сообщения:
    121
    Префикс А или W есть только у тех функций и констант, которые работают с текстом.
    А - ANSI 8 бит на символ
    W - Wide (UNICODE) 16 бит на символ

    из windows.pas
    Код (Text):
    1. ...
    2. function FindNextFile; external kernel32 name 'FindNextFileA';
    3. function FindNextFileA; external kernel32 name 'FindNextFileA';
    4. function FindNextFileW; external kernel32 name 'FindNextFileW';
    5. ...
    Итого: FindNextFile = FindNextFileA
     
  2. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    что-то я не пойму. Юзаю функцию FindNextFileA
    она требует передачу хэндла из предыдущей функции FindFirstFileA
    и структуру, которую она заполняет информацией о файле.
    Дак вот, рекомендуется делать так find_struct db 314 dup (?) (кстати, че значит dup?)))) типо массива чтоли)
    т.е с этим отрабатывает все наура. когда объявляю find_struct db 1 dup (?)
    тоже самое все наура) хотя смещение 44 - это имя файла.
    Объясните, почему второй раз тоже срабатывает, куда он данные сует, если выделено в 314 раз меньше места
     
  3. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    еще никак не пойму. вот есть строго заданая строка str1 db "123",0
    и str2 db "456",0
    нужно к str1 прибавть str2, чтобы получилось 123456. Как в паскале например=)
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    WinApi гарантирует сохранение регистров esi, edi, ebp, esp, ebx
    Изменяются EFLAGS, edx, ecx. В eax возвращается результат(ошибка).
     
  5. zet

    zet New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2007
    Сообщения:
    121
    Luzer
    А как FindNextFileA узнает сколько памяти было выделенно!
    Она запишет данные по адресу find_struct и еще 313 байт, затирая те данные которые идут после find_struct.

    ---------------------------
    The lstrcat function appends one string to another.
    LPTSTR lstrcat(LPTSTR lpString1, LPTSTR lpString2);
    Parameters

    lpString1
    [in, out] Pointer to a null-terminated string. The buffer must be large enough to contain both strings.

    lpString2
    [in] Pointer to the null-terminated string to be appended to the string specified in the lpString1 parameter.

    Return Value
    If the function succeeds, the return value is a pointer to the buffer.
    If the function fails, the return value is NULL.

    The first argument, lpString1, must be large enough to hold lpString2 and the closing '\0', otherwise a buffer overrun may occur.

    (с) MSDN
     
  6. zet

    zet New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2007
    Сообщения:
    121
    Luzer
    У тебя правильно ICQ в анкете указан? Арийская Дева :)
     
  7. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    Ну, можно считать да=)