powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Заметки о Делфи.
Модераторы: s62
25 сообщений из 78, страница 3 из 4
Заметки о Делфи.
    #1515292
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  04.09.2025, 18:14
[игнорируется]
defecator [игнорируется] 

Почитай документацию, я ссылку привел. У меня работает то, что ты показал.
Это пока в одном модуле
И вообще нихуя непонятно, для чего это тебе надо
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1557951
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
"Век живи, век учись" )
Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно.
А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage
Код: Delphi
1.
function SysErrorMessage(ErrorCode: Cardinal; AModuleHandle: THandle = 0): string;
Норм. Раньше не знал.
...
Изменено: 20.10.2025, 16:13 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558000
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  20.10.2025, 16:08
[игнорируется]
"Век живи, век учись" )
Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно.
А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage
Код: Delphi
1.
function SysErrorMessage(ErrorCode: Cardinal; AModuleHandle: THandle = 0): string;
Норм. Раньше не знал.
так это как минимум с дельфи 2 тянется.
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558024
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator  20.10.2025, 16:35
[игнорируется]
s62  20.10.2025, 16:08
[игнорируется]
"Век живи, век учись" )
Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно.
А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage
Код: Delphi
1.
function SysErrorMessage(ErrorCode: Cardinal; AModuleHandle: THandle = 0): string;
Норм. Раньше не знал.
так это как минимум с дельфи 2 тянется.
Так я и не писал, что это новое.
...
Изменено: 20.10.2025, 16:53 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558041
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  20.10.2025, 16:48
[игнорируется]
defecator  20.10.2025, 16:35
[игнорируется]
s62  20.10.2025, 16:08
[игнорируется]
"Век живи, век учись" )
Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно.
А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage
Код: Delphi
1.
function SysErrorMessage(ErrorCode: Cardinal; AModuleHandle: THandle = 0): string;
Норм. Раньше не знал.
так это как минимум с дельфи 2 тянется.
Так я и не писал, что это новое.
Я к тому, что матчасть надо знать
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558131
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator  04.09.2025, 18:16
[игнорируется]
s62  04.09.2025, 18:14
[игнорируется]
defecator [игнорируется] 

Почитай документацию, я ссылку привел. У меня работает то, что ты показал.
Это пока в одном модуле
...
Кстати ограничение насчет одного модуля легко устраняется, если рассуждать в общем, в данном случае мне это не было нужно. Когда обсуждали, ещё подумал, но не стал тогда писать.
В классе предка объявляем функцию SetMyProp в секции protected, которая присваивает private полю заданное значение. Но не назначаем свойству сеттер, так что свойство у предка read-only. А в потомке задаем сеттером эту функцию.
...
Изменено: 20.10.2025, 18:04 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558236
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator  20.10.2025, 17:03
[игнорируется]
s62  20.10.2025, 16:48
[игнорируется]
defecator  20.10.2025, 16:35
[игнорируется]
s62  20.10.2025, 16:08
[игнорируется]
"Век живи, век учись" )
Функции winapi (может по-разному бывает, но есть вот такой вариант) в случае неуспеха возвращают результат, что ошибка, а какая именно - есть функции GetLastError или например для сокетов WSAGetLastError. Они возвращают код ошибки, а что она означает, можно посмотреть например на сайте Microsoft, там есть таблица кодов ошибок и что они означают. Поинтересовался, как вывести прямо в программе текст сообщения, а не код ошибки, если есть код. Оказывается, есть функция win32 API, FormatMessage, если задать определенные параметры, она это может. Но там буфер под строку, размер её передается, освобождать память потом надо, в общем не очень удобно.
А оказывается в библиотеках Delphi есть функция SysErrorMessage, которая делает то же самое: по коду ошибки возвращает её описание. Она, собственно, вызывает эту функцию winapi.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.SysErrorMessage
Код: Delphi
1.
function SysErrorMessage(ErrorCode: Cardinal; AModuleHandle: THandle = 0): string;
Норм. Раньше не знал.
так это как минимум с дельфи 2 тянется.
Так я и не писал, что это новое.
Я к тому, что матчасть надо знать
Это да. Не зная, можно изобретать велосипеды там, где нет нужды это делать. Ну вот, я расширил свой кругозор сегодня. )
Кстати, вот на sql.ru были грамотные люди в разделе Делфи, там можно было поучиться каким-то вещам, что-то узнать. Хотя стиль бывал и довольно резкий.
...
Изменено: 20.10.2025, 21:02 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1558237
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  20.10.2025, 21:00
[игнорируется]
defecator  20.10.2025, 17:03
[игнорируется]
s62  20.10.2025, 16:48
[игнорируется]
defecator  20.10.2025, 16:35
[игнорируется]
s62  20.10.2025, 16:08
[игнорируется]
...
так это как минимум с дельфи 2 тянется.
Так я и не писал, что это новое.
Я к тому, что матчасть надо знать
Это да. Не зная, можно изобретать велосипеды там, где нет нужды это делать. Ну вот, я расширил свой кругозор сегодня. )
Кстати, вот на sql.ru были грамотные люди в разделе Делфи, там можно было поучиться каким-то вещам, что-то узнать. Хотя стиль бывал и довольно резкий.
тут только я остался из тех аксакалов ! всю жизнь только Паскаль-Дельфи !
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1559574
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator  20.10.2025, 21:04
[игнорируется]
тут только я остался из тех аксакалов !
Я бы не был так уверен.
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560368
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  20.10.2025, 16:08
[игнорируется]
для сокетов WSAGetLastError. Они возвращают код ошибки
Для сокетов WSAGetLastError не всегда работает, если интересно.
Например, если select возвращает не ошибку, но FD_ISSET( Socket, exceptfds ) - пришло событие ошибки в параметр exceptfds, то WSAGetLastError хрень вернет.
Надо получать код ошибки через getsockopt с параметром SO_ERROR и использовать его, либо устанавливать его в WSASetLastError, тогда WSAGetLastError отработает.
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560385
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
YuRock  22.10.2025, 15:39
[игнорируется]
s62  20.10.2025, 16:08
[игнорируется]
для сокетов WSAGetLastError. Они возвращают код ошибки
Для сокетов WSAGetLastError не всегда работает, если интересно.
Например, если select возвращает не ошибку, но FD_ISSET( Socket, exceptfds ) - пришло событие ошибки в параметр exceptfds, то WSAGetLastError хрень вернет.
Надо получать код ошибки через getsockopt с параметром SO_ERROR и использовать его, либо устанавливать его в WSASetLastError, тогда WSAGetLastError отработает.
Я использую не select, а WSAEventSelect. Да, например какие-то ошибки можно получить так (условный код).
Вызывается
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
case WSAWaitForMultipleEvents(1, @FEvents[0], False, aTimeout - TimeElapsed, False) of
  WSA_Wait_Event_0:
  begin
    WSAEnumNetworkEvents(FClientSocket, FEvents[0], NetworkEvents);
    if NetworkEvents.iErrorCode[FD_Read_Bit] = 0 then
    begin
      ...
    end
    else begin
       ...
       err := NetworkEvents.iErrorCode[FD_READ_BIT];  //код ошибки <--------------------
      ...
    end;
Но какие-то другие можно получить через WSAGetLastError.
...
Изменено: 22.10.2025, 16:08 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560400
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  22.10.2025, 15:58
[игнорируется]
Но какие-то другие можно получить через WSAGetLastError
Только если ф-ция (select/recv/send и другие) вернула SOCKET_ERROR (-1)
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560412
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
YuRock  22.10.2025, 16:09
[игнорируется]
s62  22.10.2025, 15:58
[игнорируется]
Но какие-то другие можно получить через WSAGetLastError
Только если ф-ция (select/recv/send и другие) вернула SOCKET_ERROR (-1)
Ну да, но там же обычно или успешное выполнение или возвращает SOCKET_ERROR, например для connect, send, recv...
...
Изменено: 22.10.2025, 16:18 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560414
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  22.10.2025, 16:18
[игнорируется]
YuRock  22.10.2025, 16:09
[игнорируется]
s62  22.10.2025, 15:58
[игнорируется]
Но какие-то другие можно получить через WSAGetLastError
Только если ф-ция (select/recv/send и другие) вернула SOCKET_ERROR (-1)
Ну да, но там же обычно или успешное выполнение или возвращает SOCKET_ERROR, например для connect, send, recv...
Обычно - да. Но вот с select не всегда так.
...
Рейтинг: 1 / 0
Нравится: s62
Заметки о Делфи.
    #1560476
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
не сталкивался ни разу с такой хуетой, но я и select не пользовался, обычно хватало всегда recv/send
а у них сообщение об ошибке всегда было информативное

в некоторых сорцах (synapse, например, или RealThinClient) видел обработку FD_ISSET, но у меня не вылазило ни разу.
Возможно, это более актуально во всяких линуксах
Фик его знает
...
Изменено: 22.10.2025, 17:21 - defecator
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560673
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator  22.10.2025, 17:17
[игнорируется]
Возможно, это более актуально во всяких линуксах
Фик его знает
Я все свои сетевые библиотеки, протоколы на сокетах Беркли написал, чтоб можно было если что скомпилить не только под винду. Пока, правда, не пришлось ни разу :)
Из виндовых функций используются только WSAGet/SetLastError.
defecator  22.10.2025, 17:17
[игнорируется]
обычно хватало всегда recv/send
select нужен для ожидания с таймаутом
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1560674
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock  22.10.2025, 21:45
[игнорируется]
select нужен для ожидания с таймаутом
И для проверки (с ожиданием) возможности делать send тоже, кстати. Иначе может зависнуть если не навсегда, то надолго.
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1577901
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Это наверное все дельфисты, которые ещё остались, знают, но так, напомню, сегодня на всякий случай пересматривал.
В цикле while:
Код: Delphi
1.
while counter <= finalValue do
выражение finalValue (если это выражение, а не число), будет оцениваться/вычисляться на каждом шаге цикла.

В цикле for
Код: Delphi
1.
for counter := initialValue to finalValue do statement
initialValue и finalValue оцениваются один раз перед началом цикла.

Из документации:
Цитата 
[игнорируется]
(про цикл 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.
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Declarations_and_Statements_(Delphi)#For_Statements
...
Изменено: 07.11.2025, 11:37 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1577981
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62 [ігнорувати] 

Да, конечно. В паскале реализован для x86 нативный loop для циклов for. В отличие от си.
Счетчик сразу в регистр забивается и дальше меняется самим процом.
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1577995
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень удобно бывает делать циклы типа
Код: Delphi
1.
for i := 1 to CalcSomeCount do
Не заботясь о том, что CalcSomeCount - функция, пусть даже которая в базу лезет. Вызовется один раз.
...
Рейтинг: 1 / 0
Нравится: s62
Заметки о Делфи.
    #1598120
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
По документации параметры процедур и функций const могут передаваться как по значению, так и по ссылке, в зависимости от компилятора (в доке есть также подробное описание, когда по ссылке, когда по значению, вот тут https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi) ).

Но оказывается, не знал, можно с помощью атрибута [Ref] указать компилятору, чтобы параметр передавался по ссылке.
Цитата 
[игнорируется]
Constant parameters may be passed to the function by value or by reference, depending on the specific compiler used. To force the compiler to pass a constant parameter by reference, you can use the [Ref] decorator with the const keyword.

The following example shows how you can specify the [Ref] decorator either before or after the const keyword:
Код: Delphi
1.
function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name);
https://docwiki.embarcadero.com/RADStudio/Athens/en/Parameters_(Delphi)#Constant_Parameters
...
Изменено: 02.12.2025, 11:13 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1598331
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  02.12.2025, 11:01
[игнорируется]
По документации параметры процедур и функций const могут передаваться как по значению, так и по ссылке, в зависимости от компилятора (в доке есть также подробное описание, когда по ссылке, когда по значению, вот тут https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi) ).

Но оказывается, не знал, можно с помощью атрибута [Ref] указать компилятору, чтобы параметр передавался по ссылке.
Цитата 
[игнорируется]
Constant parameters may be passed to the function by value or by reference, depending on the specific compiler used. To force the compiler to pass a constant parameter by reference, you can use the [Ref] decorator with the const keyword.

The following example shows how you can specify the [Ref] decorator either before or after the const keyword:
Код: Delphi
1.
function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name);
https://docwiki.embarcadero.com/RADStudio/Athens/en/Parameters_(Delphi)#Constant_Parameters
если там классы на входе (а по названию так оно и есть), то там всегда указатель
...
Рейтинг: 0 / 0
Заметки о Делфи.
    #1598456
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator  02.12.2025, 14:34
[игнорируется]
s62  02.12.2025, 11:01
[игнорируется]
По документации параметры процедур и функций const могут передаваться как по значению, так и по ссылке, в зависимости от компилятора (в доке есть также подробное описание, когда по ссылке, когда по значению, вот тут https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi) ).

Но оказывается, не знал, можно с помощью атрибута [Ref] указать компилятору, чтобы параметр передавался по ссылке.
Цитата 
[игнорируется]
Constant parameters may be passed to the function by value or by reference, depending on the specific compiler used. To force the compiler to pass a constant parameter by reference, you can use the [Ref] decorator with the const keyword.

The following example shows how you can specify the [Ref] decorator either before or after the const keyword:
Код: Delphi
1.
function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name);
https://docwiki.embarcadero.com/RADStudio/Athens/en/Parameters_(Delphi)#Constant_Parameters
если там классы на входе (а по названию так оно и есть), то там всегда указатель
Да. Но там может быть что угодно, у них пример по-моему слегка сбивающий с толку (что объекты в примере). У меня на входе запись. В принципе, если исходить из того, что написано по ссылке, что я привел вверху прошлого сообщения, передача должна быть тоже по ссылке. Но у меня какие-то смутные воспоминания, что сталкивался, что не так было. Может ошибаюсь. Поставил [Ref], теперь (должно быть) точно по ссылке.
...
Изменено: 02.12.2025, 16:22 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1598742
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
s62  02.12.2025, 16:19
[игнорируется]
defecator  02.12.2025, 14:34
[игнорируется]
s62  02.12.2025, 11:01
[игнорируется]
По документации параметры процедур и функций const могут передаваться как по значению, так и по ссылке, в зависимости от компилятора (в доке есть также подробное описание, когда по ссылке, когда по значению, вот тут https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi) ).

Но оказывается, не знал, можно с помощью атрибута [Ref] указать компилятору, чтобы параметр передавался по ссылке.
Цитата 
[игнорируется]
Constant parameters may be passed to the function by value or by reference, depending on the specific compiler used. To force the compiler to pass a constant parameter by reference, you can use the [Ref] decorator with the const keyword.

The following example shows how you can specify the [Ref] decorator either before or after the const keyword:
Код: Delphi
1.
function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name);
https://docwiki.embarcadero.com/RADStudio/Athens/en/Parameters_(Delphi)#Constant_Parameters
если там классы на входе (а по названию так оно и есть), то там всегда указатель
Да. Но там может быть что угодно, у них пример по-моему слегка сбивающий с толку (что объекты в примере). У меня на входе запись. В принципе, если исходить из того, что написано по ссылке, что я привел вверху прошлого сообщения, передача должна быть тоже по ссылке. Но у меня какие-то смутные воспоминания, что сталкивался, что не так было. Может ошибаюсь. Поставил [Ref], теперь (должно быть) точно по ссылке.
бляха муха, ну вот зачем ты всей этой хуетой озадачиваешься ?
Ты сам определяешь, что там у тебя будет в параметрах.
Ref - это очередной костыль, который придумали для COM
...
Изменено: 02.12.2025, 21:23 - defecator
Рейтинг: 0 / 0
Заметки о Делфи.
    #1598796
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator [игнорируется] 
Не хочешь, не используй, никто тебя не заставляет. Я написал об одной из фич. Делфи. Мне в конкретной ситуации удобно, что это const (семантика) и что я точно знаю, что передается по ссылке и нет ненужного копирования данных.
...
Изменено: 02.12.2025, 23:01 - s62
Рейтинг: 0 / 0
25 сообщений из 78, страница 3 из 4
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Заметки о Делфи.
Модераторы: s62
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]