|
|
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Это пока в одном модуле И вообще нихуя непонятно, для чего это тебе надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2025, 18:16 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
"Век живи, век учись" ) Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно. А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi. https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage Код: Delphi 1. ... |
|||
|
:
Изменено: 20.10.2025, 16:13 - s62
Нравится:
Не нравится:
|
|||
| 20.10.2025, 16:08 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
"Век живи, век учись" ) Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно. А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi. https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage Код: Delphi 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2025, 16:35 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
"Век живи, век учись" ) Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно. А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi. https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage Код: Delphi 1. ... |
|||
|
:
Изменено: 20.10.2025, 16:53 - s62
Нравится:
Не нравится:
|
|||
| 20.10.2025, 16:48 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
"Век живи, век учись" ) Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно. А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi. https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage Код: Delphi 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2025, 17:03 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Это пока в одном модуле ... В классе предка объявляем функцию SetMyProp в секции protected, которая присваивает private полю заданное значение. Но не назначаем свойству сеттер, так что свойство у предка read-only. А в потомке задаем сеттером эту функцию. ... |
|||
|
:
Изменено: 20.10.2025, 18:04 - s62
Нравится:
Не нравится:
|
|||
| 20.10.2025, 18:03 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
"Век живи, век учись" ) Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно. А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi. https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage Код: Delphi 1. Кстати, вот на sql.ru были грамотные люди в разделе Делфи, там можно было поучиться каким-то вещам, что-то узнать. Хотя стиль бывал и довольно резкий. ... |
|||
|
:
Изменено: 20.10.2025, 21:02 - s62
Нравится:
Не нравится:
|
|||
| 20.10.2025, 21:00 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Это да. Не зная, можно изобретать велосипеды там, где нет нужды это делать. Ну вот, я расширил свой кругозор сегодня. ) Кстати, вот на sql.ru были грамотные люди в разделе Делфи, там можно было поучиться каким-то вещам, что-то узнать. Хотя стиль бывал и довольно резкий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2025, 21:04 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
тут только я остался из тех аксакалов ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2025, 05:47 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
для сокетов WSAGetLastError. Они возвращают код ошибки Например, если select возвращает не ошибку, но FD_ISSET( Socket, exceptfds ) - пришло событие ошибки в параметр exceptfds, то WSAGetLastError хрень вернет. Надо получать код ошибки через getsockopt с параметром SO_ERROR и использовать его, либо устанавливать его в WSASetLastError, тогда WSAGetLastError отработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2025, 15:39 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
для сокетов WSAGetLastError. Они возвращают код ошибки Например, если select возвращает не ошибку, но FD_ISSET( Socket, exceptfds ) - пришло событие ошибки в параметр exceptfds, то WSAGetLastError хрень вернет. Надо получать код ошибки через getsockopt с параметром SO_ERROR и использовать его, либо устанавливать его в WSASetLastError, тогда WSAGetLastError отработает. Вызывается Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Изменено: 22.10.2025, 16:08 - s62
Нравится:
Не нравится:
|
|||
| 22.10.2025, 15:58 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Но какие-то другие можно получить через WSAGetLastError ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2025, 16:09 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Ну да, но там же обычно или успешное выполнение или возвращает SOCKET_ERROR, например для connect, send, recv... ... |
|||
|
:
Изменено: 22.10.2025, 16:18 - s62
Нравится:
Не нравится:
|
|||
| 22.10.2025, 16:18 |
|
||
|
Заметки о Делфи.
|
|
|---|---|
|
#18+
Ну да, но там же обычно или успешное выполнение или возвращает SOCKET_ERROR, например для connect, send, recv... ... |
|
|
:
|
|
| 22.10.2025, 16:19 |
|
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
не сталкивался ни разу с такой хуетой, но я и select не пользовался, обычно хватало всегда recv/send а у них сообщение об ошибке всегда было информативное в некоторых сорцах (synapse, например, или RealThinClient) видел обработку FD_ISSET, но у меня не вылазило ни разу. Возможно, это более актуально во всяких линуксах Фик его знает ... |
|||
|
:
Изменено: 22.10.2025, 17:21 - defecator
Нравится:
Не нравится:
|
|||
| 22.10.2025, 17:17 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Возможно, это более актуально во всяких линуксах Фик его знает Из виндовых функций используются только WSAGet/SetLastError. обычно хватало всегда recv/send ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2025, 21:45 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=1558000&tid=15954]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 175ms |

| 0 / 0 |
