Перевести коды ошибок WinSock'a в текстовый вид

Вот функция, аналогичная SysErrorMessage, принемает на вход код ошибки socket'a , возвращает строковое сообщение об ошибке..
function WSAErrorMessage(ErrorCode: Integer): string;
var
 Buffer: array[0..255] of Char;
var
 Len: Integer;
begin
 Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_IGNORE_INSERTS or
 FORMAT_MESSAGE_ARGUMENT_ARRAY, Pointer(GetModuleHandle('wsock32.dll')),
 ErrorCode, 0, Buffer,
 SizeOf(Buffer), nil);
 while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len);
 SetString(Result, Buffer, Len);
end;
Author: jack128
Source: Взято из http://forum.sources.ru
ID: 03560
----
Некоторые коды сразу на русском:
 10004 Выполнение операции с сокетом, блокирующей выполнение программы, прервано вызовом специальной функции. 
 10013 Нет разрешения на доступ к сокету. 
 10014 Неверный адрес указателя при вызове функции. 
 10022 Неправильный аргумент при вызове функции для работы с сокетами. 
 10024 Слишком много открытых сокетов на нить, процесс или глобальных. 
 10035 Ресурс временно недоступен, при выполнении функции работы с сокетом, которая не может выполнить операцию немедленно. 
 10036 Одна блокирующая операция сейчас уже выполняется. 
 10037 Одна операция с неблокирующим сокетом уже выполняется. 
 10038 Попытка вызвать функцию, работающую с сокетами, при передаче ей в аргументе значения, которое не является правильным значением сокета. Обычно возникает, при попытке работы с уже закрытым сокетом. 
 10039 Требуется адрес назначения 
 10040 Сообщение слишком длинное при передаче дейтаграммы. 
 10041 Тип протокол не поддерживается для данного сокета. 
 10042 Неправильная опция или уровень заданы в функциях опций сокетов 
 10043 Запрошенный протокол не сконфигурирован для работы с системе 
 10044 Тип сокета не поддерживается 
 10045 Операция с сокетом не поддерживается 
 10046 Семейство протоколов не поддерживается 
 10047 Адрес не поддерживается на выбранном протоколе сокета 
 10048 Адрес+порт уже используется на этом хосте. Очень распространённая ошибка, когда две программы-серверы пытаются использовать один и тот же порт для приема запросов клиентов. 
 10049 Невозможно использовать запрошенный адрес для привязки в порту 
 10050 Сеть неработоспособна 
 10051 Сеть недоступна, аппаратура не знает как туда переслать пакет, возможно из-за ненастроенной маршрутизации. 
 10052 Соединение разорвано из-за сбоя при выполнении операции 
 10053 Программное обеспечение компьютера, на котором выполняется данная программа, разорвало соединение. 
 10054 Соединение разорвано с удаленного компьютера, возможно, что так оно и задумано было, и клиент завершил всю передачу информации по сокету. 
 10055 Не места в буфере или очереди. 
 10056 Сокет уже подсоединен. 
 10057 Сокет не подсоединенный 
 10058 Невозможно послать или получить данные по сокету, из-за того, что эта операция уже запрещена функцией shutdown 
 10060 Timeout 
 10061 Удаленный компьютер отказал в соединении, возможно не нём не запущен соответствующая программа сервер. 
 10064 Компьютер, с которым производится попытка соединения выключен. 
 10065 К удаленному компьютеру не найдет маршрут пересылки пакетов. 
 10067 Запущено слишком много процессов, использующих Windows Socket 
 10091 Сетевая подсистема недоступна. 
 10092 Неверная версия winsock.dll 
 10093 Не выполнена функция WSAStartup перед использованием любой другой фукнции работы с сокетами. 
 10109 Запрошенный тип класса не найден. 
 10101 Удаленный компьютер инициировал завершение соединения 
 11001 Запрошенное имя компьютера не найдено 
 11002 Временная ошибка при разрешении имени компьютера в адрес, возможно её не будет при повторе операции через некоторое время. 
 11003 Невосстанавливаемая ошибка при разрешении имени в адрес. 
 11004 С запрошенным именем компьютера не связано никакой правильной информации об адресе, хотя само имя присутствует в соответствующих базах данных имён.
 
Author: Miscђka
Source: Взято из http://forum.sources.ru
ID: 03561
Category:Связь
Category:Сокеты
Category:Справочники