Просто TClientSocket

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

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

stikriz11
постоялец
Сообщения: 136
Зарегистрирован: 04.09.2023 14:54:19

Сообщение stikriz11 »

sts писал(а):вы видимо путаете с фрипаскалем, лазарус сделан чтоб бесплатно компилить исходники для делфы
Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет. И либы другие, а кроссплатформенно надо много дописывать и переписывать самому. Если надо с дельфи на лазарус под винду - это еще имеет смысл. Если кроссплатформенно, лучше переписать проект заново на других компонентах по другому. По моему опыту, конечно.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

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

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

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

Сообщение sts »

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

Добавлено спустя 2 минуты 48 секунд:
stikriz11 писал(а):Не похоже, чтобы вы компилировали хоть что-нибудь средней сложности из дельфи на лазарусе. Отличия в большом количестве мелочей, утомляет.
по этому и написано что максимально, т.е. они стремятся к этому.
и основная проблема в сторонних библиотеках а не в базовом коде.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

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

Код: Выделить всё

- Василий Иванович, а вот ты знаешь, что такое "логично"?
- Конечно знаю, Петька, вон видишь на пригорке дом стоит?
- Вижу, Василий Иванович.
- А крыша у него красная.
- Вижу, Василий Иванович, красная.
- Вот так и человек, жил-жил, да и помер.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

sts писал(а):не совсем, говорят что там вызывается функция менеджера памяти (в делфе под винду, давно слыхал) типа "resize" и если есть возможность то блок памяти просто расширится без копирования, а вот если нет то да.
Это возможно только если сразу за текущим "местопребыванием " массива находится свободное место подходящего размера, но я сильно сомневаюсь что в реальной программе основанной на динамических классах эта ситуация складывается достаточно часто.
Зы
Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .
Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет :shock: короче это полный алис!
Добавлено спустя 2 минуты 27 секунд:
iskander писал(а):Что-то вдруг вспомнилось
:wink:
Последний раз редактировалось Alex2013 01.08.2025 12:48:19, всего редактировалось 1 раз.
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

sts писал(а):по этому и написано что максимально, т.е. они стремятся к этому.
Никогда в жизни один не будет заменять другого. Они просто используют один язык. Имея лицензию Delphi нафиг не нужен Lazarus, так же как имея и делая проекты на Lazarus нафиг не нужна Delphi. Конвертер нужен только, чтобы с меньшими затратами времени переехать на другую платформу. Если разработкик прыгает между двумя средами - это больше похоже на кривой техпроцесс разработки, чем на хорошо настроенный рабочий процесс.
У меня одновременно в использовании Laz и CT, и то плеваться хочется, что перенес пару вещей на последний, в угоду базе GUI компонентов.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Sharfik писал(а):Никогда в жизни один не будет заменять другого.
Совершенно верно ! Как я уже писал Лазарус это альтернатива Дельфи . (с сохранением части "Дельфийских традиций" но это нигде не "клон Дельфи" и разумеется не стремится им быть (бо дело это банально подсудное ) )
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

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

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

Сообщение Alex2013 »

sts писал(а): что считают разработчики лазаруса
Откуда такие сведения ?

Добавлено спустя 4 минуты 57 секунд:
sts писал(а):естественно, ну я учитываю это когда пишу код, стараюсь в таких случаях чтоб массив был "последним"
ИМХО В общем случае не поможет . ( в программе управляемой "событиями/сообщениями" постоянно что-то создается и удаляется из памяти )
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

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

Код: Выделить всё

Урок математики в 6-м классе, учитель задаёт задачу.
- Летели по небу два крокодила, синий и красный. Сколько мне лет?
Вовочка скорей тянет руку отвечать.
- Ну, хорошо, Вовочка, отвечай.
- Двадцать четыре, Марьванна.
- Правильно, Вовочка, как ты решил?
- Да это легко, Марьванна. Мне двенадцать, а меня папа полудурком кличет. 
Alex2013 писал(а):Зы Зы
О производительности динамических массивов...
Оказывается все еще "оригинальнее" ... и Setlength еще и нулями выделенную память заполняет короче это полный алис!
Ага, не прошло и три года.
mike
новенький
Сообщения: 55
Зарегистрирован: 23.02.2007 16:25:00

Сообщение mike »

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

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

Сообщение sts »

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

Сообщение Alex2013 »

iskander писал(а):... получаются странные вещи.
... Я запросто могу ошибаться, но я старюсь писать по делу . Чего и вам искреннее желаю.

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

Добавлено спустя 10 минут 24 секунды:
sts писал(а): дык их в общем случае и не используют на прямую, обычно через всякие обертки
Честно говоря я думаю что "динамические массивы" вообще в прямом смысле не динамические, а рассчитаны на однократное или очень редкое создание и еще более редкое изменение размера . В этом случае их механика работы имеет смысл и многое может упростить. Или же это вообще какое-то легаси из стандарта Обжект Паскаль которое тащат из версии в версию просто "шоб було".
ЗЫ
Ладно народ если что извинюсь и давайте действительно завязывать с оффтопом... бо "Остапа уже слегка несет" . :wink:
sts
энтузиаст
Сообщения: 519
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Сообщение sts »

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.
slyubez
постоялец
Сообщения: 185
Зарегистрирован: 31.03.2015 07:44:07

Сообщение slyubez »

Если разработкик прыгает между двумя средами - это больше похоже на кривой техпроцесс разработки, чем на хорошо настроенный рабочий процесс.
Есть и исключения, когда ведется разработка компонентов под разные среды и операционные системы. Да, это трэш, но в таком случае без него никак.
Ответить