powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
7 сообщений из 7, страница 1 из 1
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627349
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Windows API не работают так как указано в документации. На msdn.microsoft.com сказано что если создаваемый каталог уже существует то CreateDirectory вернет 0, а GetLastError вернет ERROR_ALREADY_EXISTS, но в моем проекте в этой ситуации GetLastError возвращает 0, хотя в программе на Си все работает как сказано в документации, мне нужен такой же результат в VB.
Как побороть эту проблему?

VB6, Windows XP SP3

Код: vbnet
1.
Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, ByVal lpSecurityAttributes As Long) As Long



Ссылка на соответствующую статью на msdn.microsoft.com
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627403
nrmBeginner,

Вызов функции, объявленной через Declare, имеет скрытое дополнение в виде вызова GetLastError. Результат помещается в Err.LastDllError. Поэтому следующий явный вызов GetLastError будет возвращать 0.

Выхода два: 1) просто пользоваться Err.LastDllError; 2) вместо описания функций через Declare описывать их в своей библиотеке типов без атрибута usesgetlasterror, что укажет компилятору, что вызов GetLastError программист будет делать сам.
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627434
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й квартал,
Вот бл. Наиогромнейшее вам спасибо.
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627576
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: 13-й квартал
> Вызов функции, объявленной через Declare, имеет скрытое дополнение в виде вызова GetLastError.

А это где-то описано? или личные наблюдения?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627641
Игорь Горбонос,

я впервые увидел это в одной из статей Мэтью Кёрланда (скорее всего, есть и в его книге). Также где-то это было, ЕМНИП, у Брюса МакКинли.
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627674
Игорь Горбонос,

ну да, у Кёрланда. Потом ещё посмотрел в библиотеке MSDN описание атрибута.
...
Рейтинг: 0 / 0
Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
    #37627708
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял, спасибо. Я раньше активно использовал АПИ функции, но такого поведения не замечал. Век живи, век учись :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Windows API. CreateDirectory показывает провал, а GetLastError показывает успех.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]