Просто TClientSocket

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Просто TClientSocket

Сообщение stikriz11 » 31.07.2025 18:18:57

sts писал(а):вы видимо путаете с фрипаскалем, лазарус сделан чтоб бесплатно компилить исходники для делфы

Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет. И либы другие, а кроссплатформенно надо много дописывать и переписывать самому. Если надо с дельфи на лазарус под винду - это еще имеет смысл. Если кроссплатформенно, лучше переписать проект заново на других компонентах по другому. По моему опыту, конечно.
stikriz11
постоялец
 
Сообщения: 130
Зарегистрирован: 04.09.2023 15:54:19

Re: Просто TClientSocket

Сообщение Alex2013 » 31.07.2025 19:37:55

iskander писал(а):"Медленный массив" немного напоминает синий вкус или горький цвет.

Написано же «при изменении размера чудовищные тормоза», а весь смысл динамических массивов в динамическом изменении размеров. То есть доступ к однократно созданному массиву вполне быстрый, но чем это отличается от обычного выделения памяти, не очень понятно. Однако любой вызов SetLength моментально превращает «карету в тыкву», и чем больше размер «динамических массивов» и чаще вызывается SetLength, тем более «квадратная тыква» выходит.

Добавлено спустя 7 минут 51 секунду:
sts писал(а):вы видимо путаете с фрипаскалем, лазарус сделан чтоб бесплатно компилить исходники для делфы

Мдя это перл ! :lol: :idea:
ИМХО: «Лазарус» сделан как бесплатная альтернатива «Дельфи» с использованием бесплатного компилятора FPC.
То есть по задумке его авторов всё, что можно делать в «Дельфи», можно делать в «Лазарусе», причем делать довольно похожим образом, но прямая компиляция исходников «Дельфи» в «Лазарусе» в принципе НЕ ПРЕДУСМОТРЕНА проектом.

Да, в «Лазарусе» есть встроенный конвертер исходников «Дельфи 2 Лазарус» и есть режим частичной совместимости в FPC, но на самом деле проще и надежнее вместо «официально кривой конверсии» сразу написать проект-аналог (то, что в основе лежит тот же самый «Обжект Паскаль», разумеется, всё упрощает, но 100%-й совместимости нет и быть не может «по умолчанию»).
Alex2013
долгожитель
 
Сообщения: 3154
Зарегистрирован: 03.04.2013 11:59:44

Re: Просто TClientSocket

Сообщение sts » 01.08.2025 10:32:55

Alex2013 писал(а):Просто почти никто не будет увеличивать размер строки по одному символу до мегабайтных размеров, а в случае бинарного динамического массива это чисто логически кажется вполне «штатным случаем».

да, надо понимать как они работают.
Alex2013 писал(а):Но прикол в том, каждое изменение размера динамического массива вызывает копирование всего массива в новое место в памяти

не совсем, говорят что там вызывается функция менеджера памяти (в делфе под винду, давно слыхал) типа "resize" и если есть возможность то блок памяти просто расширится без копирования, а вот если нет то да.

Добавлено спустя 2 минуты 48 секунд:
stikriz11 писал(а):Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет.

по этому и написано что максимально, т.е. они стремятся к этому.
и основная проблема в сторонних библиотеках а не в базовом коде.
sts
постоялец
 
Сообщения: 463
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Просто TClientSocket

Сообщение iskander » 01.08.2025 12:57:38

Alex2013 писал(а):Просто почти никто не будет увеличивать размер строки по одному символу до мегабайтных размеров

Имхо в девяти случаях из десяти именно это и происходит.

Alex2013 писал(а):а в случае бинарного динамического массива это чисто логически кажется вполне «штатным случаем».

Что-то вдруг вспомнилось
Код: Выделить всё
- Василий Иванович, а вот ты знаешь, что такое "логично"?
- Конечно знаю, Петька, вон видишь на пригорке дом стоит?
- Вижу, Василий Иванович.
- А крыша у него красная.
- Вижу, Василий Иванович, красная.
- Вот так и человек, жил-жил, да и помер.
iskander
энтузиаст
 
Сообщения: 626
Зарегистрирован: 08.01.2012 18:43:34

Re: Просто TClientSocket

Сообщение Alex2013 » 01.08.2025 13:09:08

sts писал(а):не совсем, говорят что там вызывается функция менеджера памяти (в делфе под винду, давно слыхал) типа "resize" и если есть возможность то блок памяти просто расширится без копирования, а вот если нет то да.

Это возможно только если сразу за текущим "местопребыванием " массива находится свободное место подходящего размера, но я сильно сомневаюсь что в реальной программе основанной на динамических классах эта ситуация складывается достаточно часто.
Зы
Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .
Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет :shock: короче это полный алис!
Добавлено спустя 2 минуты 27 секунд:
iskander писал(а):Что-то вдруг вспомнилось

:wink:
Последний раз редактировалось Alex2013 01.08.2025 13:48:19, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 3154
Зарегистрирован: 03.04.2013 11:59:44

Re: Просто TClientSocket

Сообщение Sharfik » 01.08.2025 13:47:36

sts писал(а):по этому и написано что максимально, т.е. они стремятся к этому.

Никогда в жизни один не будет заменять другого. Они просто используют один язык. Имея лицензию Delphi нафиг не нужен Lazarus, так же как имея и делая проекты на Lazarus нафиг не нужна Delphi. Конвертер нужен только, чтобы с меньшими затратами времени переехать на другую платформу. Если разработкик прыгает между двумя средами - это больше похоже на кривой техпроцесс разработки, чем на хорошо настроенный рабочий процесс.
У меня одновременно в использовании Laz и CT, и то плеваться хочется, что перенес пару вещей на последний, в угоду базе GUI компонентов.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 813
Зарегистрирован: 20.07.2013 01:04:30

Re: Просто TClientSocket

Сообщение Alex2013 » 01.08.2025 14:00:34

Sharfik писал(а):Никогда в жизни один не будет заменять другого.

Совершенно верно ! Как я уже писал Лазарус это альтернатива Дельфи . (с сохранением части "Дельфийских традиций" но это нигде не "клон Дельфи" и разумеется не стремится им быть (бо дело это банально подсудное ) )
Alex2013
долгожитель
 
Сообщения: 3154
Зарегистрирован: 03.04.2013 11:59:44

Re: Просто TClientSocket

Сообщение sts » 01.08.2025 14:13:02

Sharfik писал(а):Никогда в жизни один не будет заменять другого.

естественно не будет, вот тока это не отменяет того что считают разработчики лазаруса

Добавлено спустя 3 минуты 5 секунд:
Alex2013 писал(а):Это возможно только если сразу за текущим "местопребыванием " массива находится свободное место подходящего размера, но я сильно сомневаюсь что в реальной программе основанной на динамических классах эта ситуация складывается достаточно часто.

естественно, ну я учитываю это когда пишу код, стараюсь в таких случаях чтоб массив был "последним"
sts
постоялец
 
Сообщения: 463
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Просто TClientSocket

Сообщение Alex2013 » 01.08.2025 14:18:06

sts писал(а): что считают разработчики лазаруса

Откуда такие сведения ?

Добавлено спустя 4 минуты 57 секунд:
sts писал(а):естественно, ну я учитываю это когда пишу код, стараюсь в таких случаях чтоб массив был "последним"

ИМХО В общем случае не поможет . ( в программе управляемой "событиями/сообщениями" постоянно что-то создается и удаляется из памяти )
Alex2013
долгожитель
 
Сообщения: 3154
Зарегистрирован: 03.04.2013 11:59:44

Re: Просто TClientSocket

Сообщение iskander » 01.08.2025 14:39:18

Alex2013 писал(а):Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .

Когда сравнивают попу с пальцем, получаются странные вещи.
Впрочем, это совсем другая история
Код: Выделить всё
Урок математики в 6-м классе, учитель задаёт задачу.
- Летели по небу два крокодила, синий и красный. Сколько мне лет?
Вовочка скорей тянет руку отвечать.
- Ну, хорошо, Вовочка, отвечай.
- Двадцать четыре, Марьванна.
- Правильно, Вовочка, как ты решил?
- Да это легко, Марьванна. Мне двенадцать, а меня папа полудурком кличет.

Alex2013 писал(а):Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет короче это полный алис!

Ага, не прошло и три года.
iskander
энтузиаст
 
Сообщения: 626
Зарегистрирован: 08.01.2012 18:43:34

Re: Просто TClientSocket

Сообщение mike » 01.08.2025 15:24:15

Спасибо всем ответившим. Сделал свою обертку над сокет API. Как по мне, получилось даже удобнее делфового клиент-сокета.

И хотя серверный сокет мне в этом проекте не нужен и не планировался, но базовый класс клиентского сокета так хорошо лег под задачи серверного воркера, что решил сделать еще полноценный серверный сокет, и выложить все на гитхаб. Нужно только привести исходники в презентабельный вид.
mike
новенький
 
Сообщения: 43
Зарегистрирован: 23.02.2007 17:25:00

Re: Просто TClientSocket

Сообщение sts » 01.08.2025 16:38:29

Alex2013 писал(а):Откуда такие сведения ?

дык яж цитату с их сайта привел
Alex2013 писал(а):ИМХО В общем случае не поможет . ( в программе управляемой "событиями/сообщениями" постоянно что-то создается и удаляется из памяти )

дык их в общем случае и не используют на прямую, обычно через всякие обертки
sts
постоялец
 
Сообщения: 463
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Просто TClientSocket

Сообщение Alex2013 » 01.08.2025 19:19:35

iskander писал(а):... получаются странные вещи.

... Я запросто могу ошибаться, но я старюсь писать по делу . Чего и вам искреннее желаю.

Добавлено спустя 12 минут 47 секунд:
sts писал(а):дык яж цитату с их сайта привел

Можно ссылку ? (действительно никогда не замечал там таких заявлений )

Добавлено спустя 10 минут 24 секунды:
sts писал(а):дык их в общем случае и не используют на прямую, обычно через всякие обертки


Честно говоря я думаю что "динамические массивы" вообще в прямом смысле не динамические, а рассчитаны на однократное или очень редкое создание и еще более редкое изменение размера . В этом случае их механика работы имеет смысл и многое может упростить. Или же это вообще какое-то легаси из стандарта Обжект Паскаль которое тащат из версии в версию просто "шоб було".
ЗЫ
Ладно народ если что извинюсь и давайте действительно завязывать с оффтопом... бо "Остапа уже слегка несет" . :wink:
Alex2013
долгожитель
 
Сообщения: 3154
Зарегистрирован: 03.04.2013 11:59:44

Re: Просто TClientSocket

Сообщение sts » 02.08.2025 15:13:14

Alex2013 писал(а):Можно ссылку ?

https://en.wikipedia.org/wiki/Lazarus_(software)
Lazarus is a cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for developing with the Object Pascal language, which is as close as possible to Delphi.
sts
постоялец
 
Сообщения: 463
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 210

Рейтинг@Mail.ru