Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

WinAPI Return Values and Errors   Найти похожие ветки 

 
AlexeyITN   (2004-04-01 16:33) [0]

Доброго времени суток.
Уважаемые мастера, прошу меня извинить за слишком глупый вопрос, но но но...
Я думал без "этого" обойдусь, а шиш! Программирование как увлечение застопорилось. Вопрос: как правильно обрабатывать ошибки от винды и выдавать их результат юзеру. Например: есть функция, она возвращает 123 (при нуле - успех). Как эти "123" присобачить к конкретным строкам ошибок. Я не понимаю как использовать набор текстовых сообщений и набор кодовых ошибок возвращаемых, в случае не удачи, функцией. Подскажите. Возможно статьёй, ссылкой...Бьюсь как рыба об лёд...:(
Заранее благодарен!


 
BiN ©   (2004-04-01 16:39) [1]

Бьюсь как рыба об лёд...

sysutils->SysErrorMessage он же FormatMessage из кернел32


 
AlexeyITN   (2004-04-01 17:12) [2]

спасибо! Пара вопросов.
- какая разница будет в написании SysErrorMessage и GetLastErorr, если сразу после функции написать SysErrorMessage ?
- как выводить результат функции при помощи GetLastErorr?


 
BiN ©   (2004-04-01 17:17) [3]

ты чего издеваешься?
так и пиши SysErrorMessage(GetLastError)


 
AlexeyITN   (2004-04-01 17:19) [4]

да нет, не издеваюсь, ...я просто присваивал результат функции переменной result типа integer, а потом писал SysErrorMessage(result)


 
AlexeyITN   (2004-04-01 17:24) [5]

Result := -1;
   WMsg := ChaR("!");
   MsgLen := Length(WMsg) * 2; // Unicode is 2-byte.
   WMsgName := "-1-";
   Result := NetMessageBufferSend(nil,
             PWideChar(WMsgName), PWideChar(NameOfAdr),
             PWideChar(WMsg), MsgLen);
   If Result<>0 then
      begin
         ShowMEssage(SysErrorMessage(GetLastError));
      end;
----------------------
Ответ винды: "Протекает наложенное событие ввода/вывода"
----------------------
смотрю MSDN:
----------------------
Return Values
If the function succeeds, the return value is NERR_Success.

If the function fails, the return value can be one of the following error codes.

Return code Description
ERROR_ACCESS_DENIED The user does not have access to the requested information.
ERROR_INVALID_PARAMETER The specified parameter is invalid.
ERROR_NOT_SUPPORTED This network request is not supported.
NERR_NameNotFound The user name could not be found.
NERR_NetworkError A general failure occurred in the network hardware.
-----------------
И как это понять: неужели мой английский настолько плох...или это мой delphi настолько?


 
BiN ©   (2004-04-01 17:33) [6]

net-функции сами возвращают код ошибки, а не getlasterror.
пиши типа   If Result<>0 then
     begin
        ShowMEssage(Result);
     end;


 
VMcL ©   (2004-04-01 18:50) [7]

>>AlexeyITN  (01.04.04 16:33)

RaiseLastOSError() // D6+
RaiseLastWin32Error()


 
nikkie ©   (2004-04-01 19:08) [8]

>net-функции сами возвращают код ошибки
кроме того, описания кодов ошибок находятся в netmsg.dll. итого:
if (result >= NERR_BASE) and (result <= MAX_NERR) then begin
 LoadLibraryEx("netmsg.dll", 0, LOAD_LIBRARY_AS_DATAFILE)
 FormatMessage(FORMAT_MESSAGE_FROM_HMODULE)
 FreeLibrary(...)
end;


 
AlexeyITN   (2004-04-02 10:57) [9]

теперь она возвращает:
-----------------------
не удалось найти псевдоним сообщений в сети
-----------------------
название компа указано верно!в чём проблема...?
Набираю...cmd
net helpmsg 2273...пишет что не правильный псевдоним,..или компьютер принимающий сообщение занят...
но я то отсылаю себе!
может прав не хватает!?
(прошу прощения что плавно отошёл от темы"программирование на WINAPI")


 
BiN ©   (2004-04-02 11:23) [10]

а служба сообщений у тебя запущена?


 
AlexeyITN   (2004-04-02 11:27) [11]

да, запущена. Это я с самого начала смотрел!


 
AlexeyITN   (2004-04-02 12:36) [12]

самое обидное в этой истории это то, что
winexec(PChar(b),SW_HIDE); работает...и с команды run работает...
-----------------------
функцию гружу очень тупо: статически загружаю библиотеку!
-----------------------
после uses
function NetMessageBufferSend(ServerName: LPCWSTR; MsgName: LPCWSTR; FromName: LPCWSTR; Buf: LPCWSTR;
BufLen: DWORD): DWORD; stdcall; external "netapi32.dll" name "NetMessageBufferSend";


 
BiN ©   (2004-04-02 13:27) [13]

у тебя очевидно ошибка в параметре MsgName.
Приведи вызов


 
BiN ©   (2004-04-02 13:31) [14]

так все ясно
 WMsgName := "-1-"; замени на имя компьютера-адресата, и к тому же какого он типа, - надеюсь, Widestring, а не String


 
AlexeyITN   (2004-04-02 13:37) [15]

var  result: integer;
 WMsgName : WideString;
 WMsg : WideString;
 MsgLen : integer;
b:string;
begin
WMsg := PChaR("-1-");
   MsgLen := Length(WMsg) * 2; // Unicode is 2-byte.
   WMsgName := "-1-"; b:="-1-";

   Result := NetMessageBufferSend(nil,
             PWideChar(WMsgName), PWideChar(b),
             PWideChar(WMsg), MsgLen);
-----------------
имя моего компа: -1-


 
BiN ©   (2004-04-02 13:54) [16]

&^%^#$*%^$*^%)*&)_(*&)(%&^$ это я ругался :)

b:widestring
и вместо WMsg := PChaR("-1-"); пиши просто WMsg := "-1-";


 
AlexeyITN   (2004-04-02 14:05) [17]

позор мне тупорылому....:)
спасибо за помощь!


 
AlexeyITN   (2004-04-02 14:23) [18]

ранее этот код работал,..но я полез на microsoft.update...поустанавливал критические обновления для винды.
После этого прога перестала работать - я удалил все эти обновления, но, как оказалось :) дядя Били сделал так, что изменнённая netapi32.dll не восстановилась до прежнего состояния. А в новой версии как оказалось была отключена работа с переменными типа string. Конец истории. :)))


 
nikkie ©   (2004-04-02 20:27) [19]

>А в новой версии как оказалось была отключена работа с переменными типа string.
вот ведь собаки! э... а что ты собственно имел в виду?

>Конец истории. :)))
да нет, похоже еще не конец... :)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.044 c
3-1083156599
Санёк
2004-04-28 16:49
2004.05.23
Чтение данных с MS SQL блоками


3-1083063659
infom
2004-04-27 15:00
2004.05.23
Есть ли такой компонент?


1-1083754763
uuuh
2004-05-05 14:59
2004.05.23
Простой вопрос.


14-1083581374
McSimm
2004-05-03 14:49
2004.05.23
В форумах произошли изменения


1-1083757608
DimonNew
2004-05-05 15:46
2004.05.23
ini файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский