|
|
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
select нужен для ожидания с таймаутом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2025, 21:47 |
|
||
|
Заметки о Делфи.
|
|||
|---|---|---|---|
|
#18+
Это наверное все дельфисты, которые ещё остались, знают, но так, напомню, сегодня на всякий случай пересматривал. В цикле while: Код: Delphi 1. В цикле for Код: Delphi 1. Из документации: Цитата [игнорируется] (про цикл for) For purposes of controlling the execution of the loop, the expressions initialValue and finalValue are evaluated only once, before the loop begins. ... The difference between this construction (там пример с while - s62) and the for...to statement is that the while loop reevaluates finalValue before each iteration. This can result in noticeably slower performance if finalValue is a complex expression, and it also means that changes to the value of finalValue within statement can affect the execution of the loop. ... |
|||
|
:
Изменено: Вчера, 11:37 - s62
Нравится:
Не нравится:
|
|||
| Вчера, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=1577901&tid=15954]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 161ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...