|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Собственно сабж. Не буду рассказывать предысторию, дошел до следующего: Создаю новый проект, на форме один статик текст, в Declare global external function пишу Код: plaintext
В событии open окна пишу Код: plaintext 1. 2.
Это всё. При запуске вижу 87, вместо желанного нуля. 87 -- Invalid parameter (Неверно задан параметр), хотя функция какбэ даже без параметров.. Может кто в курсе как это побороть? P.S. если это дело повесить на кнопку вместо open, то 87 только при первом нажатии, при последующих прекрасный ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 14:34 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85 пишет: > 87 -- Invalid parameter (Неверно задан параметр), хотя функция какбэ > даже без параметров.. Может кто в курсе как это побороть? Легко. Не вызывать функцию там, где это не имеет смысла. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 14:46 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Dim2000 Легко. Не вызывать функцию там, где это не имеет смысла. Вы имеете в виду что перед ней должны быть другие winapi функции? В любом случае, что бы там не происходило перед GetLastError, сначала вылазит 87, а потом то что должно быть на самом деле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 14:58 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Ну вообще-то возвращается ulong, а не long ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 15:13 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
spas2001Ну вообще-то возвращается ulong, а не longИсправил, ничего не изменилось( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 15:18 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85spas2001Ну вообще-то возвращается ulong, а не longИсправил, ничего не изменилось( Сказали же, не вызываь ее просто так. Эта ошибка лезет откуда-то из недр виртуальной машины от ее вызовов Win API функций. С точки зрения Windows не различимо что вызвали что-то из скрипта или из внутреннего кода виртуальной машины. Например если в отладчике проходиться, то в PB9 все время выскакивало сообщение типа Window doesn't have scrollbars от прорисовки отладчика, а GetLastError из скрипта терялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 15:43 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Локшин Марк Сказали же, не вызываь ее просто так. Эта ошибка лезет откуда-то из недр виртуальной машины от ее вызовов Win API функций. С точки зрения Windows не различимо что вызвали что-то из скрипта или из внутреннего кода виртуальной машины.Ну я же вызывал ее не из научного интереса первоначально.. Вешаю на кнопку соединение с фтп сервером и получение файла, естественно хочу знать соединилось или нет, скопировалось или нет, для этого использую GetLastError. При первом нажатии при любом исходе возвращает 87 (и если успешно файл скопирует и если неправильный путь прописать и хоть еще что). P.S. даже не так, не при первом нажатии, а при первом вызове GetLastError, последующие нормальный результат дают. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 15:58 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85 пишет: > Вы имеете в виду что перед ней должны быть другие winapi функции? Функции, устанавливающие этот самый LastError. Это неочевидно ;)? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:01 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85[quot Локшин Марк] Вешаю на кнопку соединение с фтп сервером и получение файла, естественно хочу знать соединилось или нет, скопировалось или нет, для этого использую GetLastError. При первом нажатии при любом исходе возвращает 87 (и если успешно файл скопирует и если неправильный путь прописать и хоть еще что). Вызывайте WinAPI функцию и сразуже следом за ней GetLastError СРАЗУ СЛЕДУЮЩЕЙ СТРОКОЙ В ТОМ ЖЕ СКРИПТЕ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:24 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Локшин Марк Вызывайте WinAPI функцию и сразуже следом за ней GetLastError СРАЗУ СЛЕДУЮЩЕЙ СТРОКОЙ В ТОМ ЖЕ СКРИПТЕ.Так и делал.. в первый раз 87, независимо от того что та функция должна была установить. Я конечно могу обойти эту беду, вызвав GetLastError разок в open (тогда на кнопке потом все хорошо), но хотелось бы как-то понять (я ж думал это моя ошибка, а не пауэрбилдеровская) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:44 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Dim2000 Функции, устанавливающие этот самый LastError. Это неочевидно ;)? Очевидно. Но пока они были я мог сомневаться, а вдруг и правда неверные аргументы передаю. А вот пока ошибки не случилось, этот самый LastError должен бы нулем быть по логике, не? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:47 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85 пишет: > Так и делал.. в первый раз 87, независимо от того что та функция должна > была установить. А та функция устанавливает LastError? И вообще, где код ;)? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:57 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85Dim2000 Функции, устанавливающие этот самый LastError. Это неочевидно ;)? Очевидно. Но пока они были я мог сомневаться, а вдруг и правда неверные аргументы передаю. А вот пока ошибки не случилось, этот самый LastError должен бы нулем быть по логике, не? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 16:58 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Dim2000 А та функция устанавливает LastError? И вообще, где код ;)? Щас озаботился сделать короткий пример, чтоб показать, что я не вру и вроде догнал где собака порылась.. Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 17:19 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
А зачем поиск окна? ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 17:27 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85 пишет: > Вот такой код на кнопке ведет себя как раз как я описал: при первом > нажатии 87, при последующих 0 Как я и думал, не воспроизводится. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 17:41 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Dim2000 Как я и думал, не воспроизводится. что, сразу 0 дает? значит у меня что-то( PB 11.5 build 3127 кстати ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 17:48 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85Щас озаботился сделать короткий пример, чтоб показать, что я не вру и вроде догнал где собака порылась.. Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5. 6.
Вот смотрите, сценарий при котором LastError может портиться между вызовами FindWindowW и GetLastError: PowerScript: l_handle = FindWindowW(0,ls_wname) Внутри: Вызов LoadLibrary("User32.dll") Вызов GetProcAddress("FindWindowW") Вызов FindWindowW() PowerScript: l_error = GetLastError() Внутри: Вызов LoadLibrary("kernel32.dll") Вызов GetProcAddress("GetLastError") Вызов GetLastError() Как видим при первом запуске вашего кода, между вызовами FindWindowW и GetLastError производятся еще ряд вызовов которые также устанавливают LastError Это только те, что точно должны вызваться. А есть еще и работа самого интерпретатора PB, и не исключено что там вызываются еще дополнитеные ф-и WinAPI ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2010, 21:14 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Вот смотрите, сценарий при котором LastError может портиться между вызовами FindWindowW и GetLastError: PowerScript: l_handle = FindWindowW(0,ls_wname) Внутри: Вызов LoadLibrary("User32.dll") Вызов GetProcAddress("FindWindowW") Вызов FindWindowW() PowerScript: l_error = GetLastError() Внутри: Вызов LoadLibrary("kernel32.dll") Вызов GetProcAddress("GetLastError") Вызов GetLastError() Как видим при первом запуске вашего кода, между вызовами FindWindowW и GetLastError производятся еще ряд вызовов которые также устанавливают LastError Это только те, что точно должны вызваться. А есть еще и работа самого интерпретатора PB, и не исключено что там вызываются еще дополнитеные ф-и WinAPIВот кстати да, загвоздка где-то в подгрузке библиотек. Когда для примера пытался вместо FindWindow вызывать CopyFile (который тоже из kernel32), то GetLastError уже проходит нормально.. Хотя вон же люди пишут что не воспроизводится.. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 09:31 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Используйте вместо FindWindowW, FindWindowA ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 09:37 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
Хотя это от системы зависит ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 09:42 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
spas2001 пишет: > Хотя это от системы зависит Скорее от версии эхотага. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 11:13 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
maniac85Хотя вон же люди пишут что не воспроизводится.. Я может не совсем ясно выразился. Суть моего сообщения в том, что GetLastError() бессмысленно вызывать из PowerScript - она вернет ошибку не от той ф-и которая вам нужна (даже если и значение будет похоже на правду). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 12:33 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
To Anatoly Moskovsky Да это понятно, но все-равно прикольно наблюдать :) ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 12:36 |
|
GetLastError возвращает 87
|
|||
---|---|---|---|
#18+
А для FTP - я брал wodftpdlx Тынц Все красиво и без лишних телодвижений И сразу все проблемы решаются, различные z-mode и куча наворотов ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2010, 12:39 |
|
|
start [/forum/topic.php?fid=15&msg=36418780&tid=1336059]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 567ms |
0 / 0 |