169 похожих чатов

@Errorsoft почему не хочешь перейти на Int32? У тебя ведь

нет задачи поддерживать код для TP или ещё какого-то легаси?

101 ответов

4 просмотра

В его случае достаточно было бы перейти на Integer даже

Потому что это паскаль, где базовый числовой тип - integer

notme- Автор вопроса
Peter
Потому что это паскаль, где базовый числовой тип -...

но ведь дженерики и AdvancedRecords ты используешь?

notme- Автор вопроса
notme
но ведь дженерики и AdvancedRecords ты используешь...

К тому, что фичи появляются и ты их используешь, так же можно и новыми типами/алиасами типов пользоваться... язык развивается потихоньку и типы тоже можно развивать

notme
но ведь дженерики и AdvancedRecords ты используешь...

Именно, и читаю и копипашу тонны кода, где везде integer, а не int32. Еще не хватало и тут месива типов.

notme
К тому, что фичи появляются и ты их используешь, т...

Все развивается, но TurboPascal compatibility - FIRST

notme- Автор вопроса
Peter
Именно, и читаю и копипашу тонны кода, где везде i...

получается ты переносил какой-то старый код, писанный не под FPC и столкнулся с таким поведением, что System.Integer<>32bit ? Ну такое с легаси бывает...

notme
получается ты переносил какой-то старый код, писан...

Это не легаси, это валидный и БОЛЕЕ НАДЕЖНЫЙ код, где системные штуки, которой является и Integer достаются через System.xxx, таким образом защищая от того что где-то в стороннем Uses могут переопределить Integer/Length/xx и все сломать, с трудноуловимыми багами

notme
получается ты переносил какой-то старый код, писан...

Как я должен защищаться о переопределения Length?

Peter
Как я должен защищаться о переопределения Length?

тогда смирись, что в FPC не стали убивать совместимость со старыми версиями и system.integer оставили таким же, каким он был в оригинале

Peter
Как я должен защищаться о переопределения Length?

Ты ко всем типам добавляешь префикс system. на всякий случай, вдруг его кто-то в интерфейсной части переопределит?

Alexey Kulakov
тогда смирись, что в FPC не стали убивать совмести...

Ну вот видишь, так что проснулись под «капиталистов» выходит, ой ой

Peter
Ну вот видишь, так что проснулись под «капиталисто...

извини, но ты дурак или как? ФПЦ не 10 лет, они начинали хз как давно ещё под дос. причем тут капиталисты?

Renat Suleymanov
Ты ко всем типам добавляешь префикс system. на вся...

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

Тем не менее переопределение возможно, в одном из модулей, что использует небольшой юнит, и поиском потом бага. А с system.xxx, не сломаным - это исключено

notme- Автор вопроса
Peter
Тем не менее переопределение возможно, в одном из ...

возможно, и я не спорю но это будет конкретная такая диверсия, и то, что это диверсия согласятся 100% людей в группе в отличие от спора что же такое integer, тут как видим голоса разделились

notme
возможно, и я не спорю но это будет конкретная так...

Ок кейс. Я использую модуль MegaCool, где автор, в какой-то момент, определил свой Length для строки, который считает и нультерминал, по какой-то там, нужной автору, причине. И вынес из его в интерфейс, для инлайнинга. И все мой код сломался что юзал Length для строк. А что юзал System.Length и тд - не сломался. Пример понятен? Это же касается и всего остального системного.

notme- Автор вопроса
Peter
Ок кейс. Я использую модуль MegaCool, где автор, в...

и не только системного. ты ведь всегда пишешь MegaCool.MegaFoo?

notme
Понятен конечно, но это диверсия

Нет, это почти реальный кейс. Диверсия это про си, разные сильная сторона паскаля не то что его трудно так «взорвать»? Вот имеем что имеем FPC более подвержен сишным «диверсиям»

notme- Автор вопроса
Peter
Нет, это почти реальный кейс. Диверсия это про си...

в смысле в Delphi этот код с переопределенным Length - он бы что нормально бы себя вёл? а в FPC ломается? Именно переопределение Length

zamtmn
и не только системного. ты ведь всегда пишешь Mega...

Иногда именно так для читаемости, если нет префиксов и тд у типов/функций и они оч стандартные имена имеют, что возможно перекрытие и багадром

Peter
Иногда именно так для читаемости, если нет префикс...

вот именно что иногда и для читаемости. а не для страховки

notme
в смысле в Delphi этот код с переопределенным Leng...

Да, и в дельфи и в фпц system.length - это настоящий length, тоже самое касается и всего остального «системного» в дельфи, но не в фпц. Я понятия не имею что там еще кроме System.Integer по приколу сломали.

Но можно чуть улучшить ситуацию используя system.xxx, не так ли?

Peter
Но можно чуть улучшить ситуацию используя system.x...

Можно, я одно время так и делал. Потом понял, что проще не тащить в проект что попало. А если надо притащить, то изолировать в модули и абстракци.

Sergey Bodrov
Можно, я одно время так и делал. Потом понял, что ...

Воооот, и тут у мы приходим к тому, что FPC/Lazarus это 999999 инклюдов «чего попало», и тысяч дубликатов типов и функций, и вероятность «залететь» очень большая. От чего спас бы system.xxx, если бы не был сломан.

Peter
Воооот, и тут у мы приходим к тому, что FPC/Lazaru...

@rouse_79 ты же вроде тоже сталкивался с подставой подобной?, мб тебя услышат, я сдаюсь))

Peter
Воооот, и тут у мы приходим к тому, что FPC/Lazaru...

Мне проще один раз в начале модуля нужные режимы и дефайны поставить, чем в каждой строке неймспейсы указывать.

Peter
Дык в режиме Delphi - System.Integer = 16 бит 🤗🤗🤗

Напиши свой system.pas, делов-то =)

Sergey Bodrov
Напиши свой system.pas, делов-то =)

Проще выкинуть паскаль тогда

notme- Автор вопроса
Peter
Да, и в дельфи и в фпц system.length - это настоящ...

Ок, я ж проверил ) всё работает Где я облажался?

notme
screenshot Ок, я ж проверил ) всё работает Где я облажался?

Вот видишь system.xx полезен - тоже самое с system.integer. Но он в fpc сломан в угоду TP

notme- Автор вопроса
Peter
Вот видишь system.xx полезен - тоже самое с system...

так ты утверждал, что System.Length тебе злой автор Cool модуля переопределил и ко всему этому приплёл типы, что вот мол и поэтому я с типами прав Но Length не переопределился! А типы юзай Int[Size]

notme
так ты утверждал, что System.Length тебе злой авто...

Я говорил что если Length переопределили, в System.xxx можно достучаться до оригинала, тоже самое и для типов. Кроме Integer, который сломан в fpc.

Peter
Я говорил что если Length переопределили, в System...

вот ты просто запиши себе что system.integer - ты стучишь не в ту дверь

А вот тут и проблема - я хз что еще там сломали, ради каких-то странных идей

zamtmn
вот ты просто запиши себе что system.integer - ты ...

Все через system.xxx, а тут исключение, а есть ли еще такие исключения?(я не могу прочитать все 99999 инклюдов) Вот так код и становится «жидким».

notme- Автор вопроса
Peter
Все через system.xxx, а тут исключение, а есть ли ...

https://t.me/Delphi_Lazarus/335740 https://t.me/Delphi_Lazarus/335694 Вот тебе ответы на все вопросы! 😝

notme
https://t.me/Delphi_Lazarus/335740 https://t.me/De...

Запомнить все нюансы физически невозможно. Да и паскаль вроде не цпп, чтобы читать 999 страничные стандарты. Разве не в этом сила этого яп? Паскаль про очевидность. То что в fpc Integer <> System.Intger - не очевидно. Косяк и точка.

notme- Автор вопроса
Peter
Запомнить все нюансы физически невозможно. Да и па...

Integer - это вообще не очевидно, вот Int32/Native - очень очевидно https://t.me/Delphi_Lazarus/335937

notme
Integer - это вообще не очевидно, вот Int32/Native...

Integer, простите, это базовый числовой тип в языке.

notme- Автор вопроса
Peter
Integer, простите, это базовый числовой тип в язык...

И это наверное даже задокументировано в каком-то стандарте языка, да?!

notme
И это наверное даже задокументировано в каком-то с...

Это задокументировано в отчете о паскале вирта - что есть базовый тип Integer, все остальное уже позже было.

notme- Автор вопроса
notme
гугл не находит такого отчёта...

https://oberoncore.ru/_media/library/wirth_the_programming_language_pascal.pdf Никаких Int32

notme- Автор вопроса
Peter
screenshot https://oberoncore.ru/_media/library/wirth_the_pro...

Так кхм...кхм... сам Вирт тебе и говорит, что тип зависит от реализации завтра будет 5 битным юзай Int32 ! 😄

notme
screenshot Так кхм...кхм... сам Вирт тебе и говорит, что тип ...

Именно так - в си тоже самое - подразумевается что это соответствует ABI системы, а не мамонта ДОСА, с 16 бит интом.

notme
screenshot Так кхм...кхм... сам Вирт тебе и говорит, что тип ...

так то не вопрос, что он зависит от реализации. вопрос в том, что в компиляторе в зоне видимости два разных интеджера.

notme- Автор вопроса
Peter
Именно так - в си тоже самое - подразумевается что...

Где тут слова система или аби? Тут есть слово реализация и всё.

notme
screenshot Так кхм...кхм... сам Вирт тебе и говорит, что тип ...

Если мне в паскальном коде надо будет везде писать int32, то проще перейти на go. Integer - базовый тип, int32 - нашлепка, полезная для особых случаев.

notme- Автор вопроса
Handatros
так то не вопрос, что он зависит от реализации. во...

Это уже разные... Один System. другой просто

notme
Где тут слова система или аби? Тут есть слово реал...

Это оно и есть, не было тогда таких слов, под реализацией имелось ввиду «нативное», а не «давайте совместимость с не нативным досом сделаем, а с системой не сделаем, под x64/х32, и пофиг что int везде 32бит, у нас будет 16!»

Peter
Если мне в паскальном коде надо будет везде писать...

Если ты пишешь код, в котором детерминирована размерность integer, то пиши Int32 (в чем я сомневаюсь). Никого же не напрягает использовать Int64 для больших чисел и т.д. Но реальная причина ведь не в этом. А в твоей странной привычке использовать system.Integer Да, и если ты не знаешь точно какой-тип в модуле у тебя, то нужно пересмотреть архитектуру приложения. Вообще у меня за правило, если я вдруг что-то начинаю делать в коде на всякий случай, то стоит задуматься, может у меня недостаточно квалификации в данном вопросе и стоит погрузиться в тематику или пересмотреть и отрефакторить код. Вот меня корежит, когда мне требуется что-то делать на всякий случай

notme- Автор вопроса
Boris Usievich
Это грабли

Косяк и грабли - это переопределять в васяпупкинском модуле глобально типы, а систем.штото и просто штото это не косяк

Renat Suleymanov
Если ты пишешь код, в котором детерминирована разм...

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

notme
Косяк и грабли - это переопределять в васяпупкинск...

Дык fpc постоянно и переопределяет типы из System в каких-то там инклюдах неясных 🤡🤡🤡

Peter
Это не странная привычка, это использование базово...

Как раз ничего не сломано. Сломали в свое время в другом месте ) В Lazarus сделали по умному для совместимости

notme- Автор вопроса
Peter
Дык fpc постоянно и переопределяет типы из System ...

Это не васяпупкинский модуль А Cool-вася.pas - пупкинский, ибо решил глобально переопределить что-то

notme- Автор вопроса
Peter
Это не странная привычка, это использование базово...

О, наконец-то назвал всё своими именами - привычка = СиндромУтёнка 😁

notme
Это не васяпупкинский модуль А Cool-вася.pas - пуп...

Я уже показал как это можно сделать случайно. И язык поддерживает разрешение этой проблемы через System.xxx, но в fpc фича сломана, из-за дефективности базового типа Integer

notme
О, наконец-то назвал всё своими именами - привычка...

Где написано что System.xxx deprecated? Раз не написано - базовая фича, которую можно использовать.

notme- Автор вопроса

Спор начал не я.

notme
Лонгинт заюзай

Почему я должен использовать дополнительный тип, заместо базового Pascal типа?

Peter
Спор начал не я.

Это уже 3 или 4-ый раз когда тебя "вынуждают" вести этот спор. В следующий раз можешь написать мне в личку, если кто-то тебя будет вынуждать )

notme- Автор вопроса
Peter
Почему я должен использовать дополнительный тип, з...

ДЛя чего вообще столько типа целочисленных, да и вообще типов? ЧТобы Петра запутать?

Renat Suleymanov
Это уже 3 или 4-ый раз когда тебя "вынуждают" вест...

Что мешает не спорить? Я написал - костяк есть и точка, но мне пытаются доказать что 16бит Integer - это норма.

notme- Автор вопроса
notme
Чтобы всё работало, а не ломалось

А всего то лишь надо сделать Integer нормальным на уровне компилятора, и проблем не было бы.

notme
Мне на инт пофиг

Зачем тогда споришь?))

notme- Автор вопроса
Peter
А всего то лишь надо сделать Integer нормальным на...

Так он нормальный, сам Вирт подтвердил

notme
Так он нормальный, сам Вирт подтвердил

Я уже выше писал что имплементацион специфик = нативный, а не «древний дос 16 бит, денди»

notme- Автор вопроса
Peter
Зачем тогда споришь?))

Задевает камнебросание в сторону ФПЦ, там других проблем полно (о которых я бы и не спорил)

notme- Автор вопроса
Peter
Я уже выше писал что имплементацион специфик = нат...

Это личное мнение, интерпретация, четкого определения не дано, можно понимать как угодно эти слова(Вирта)

notme
Задевает камнебросание в сторону ФПЦ, там других п...

Также как меня задевает бред о капиталистах в ембе которые что-то там специально делают несовместимым с фпц, я всего то привел обратный пример.

notme- Автор вопроса
Peter
Также как меня задевает бред о капиталистах в ембе...

Это Алексей, не я, я с ним не согласен в этом

notme
Это личное мнение, интерпретация, четкого определе...

Дык и для си и тд не дано - есть сложившиеся реальность/дефакто

notme
Это Алексей, не я, я с ним не согласен в этом

Тогда тебе не к чему задеваться тут, пройти мимо и все

Peter
Дык и для си и тд не дано - есть сложившиеся реаль...

для C все просто. Переопределять фундаментальные типы НЕЛЬЗЯ.

Handatros
так то не вопрос, что он зависит от реализации. во...

ну какбы модули. имеют свои типы - на то он и модульный язык

zamtmn
ну какбы модули. имеют свои типы - на то он и моду...

Вы хотите об этом поговорить? У меня есть что ответить и немало. Но не будут, ок

Ed Doc
даже try..except? 😊

Эм. Ну его не на всякий случай делают. Строго говоря для обработки исключений. Собственно, обычно если его ставят на всякий случай правило, ИМХО такое же: стоит подумать на кодом, чтобы таких чувств не возникало 🤷‍♂️ Это мое мнение, которому я стараюсь следовать

Renat Suleymanov
Эм. Ну его не на всякий случай делают. Строго гово...

если исходить, что трай-эксцепт - соломка/мат - то, имхо, стелить ее надо в тех местах, где вероятность падения велика :)

Ed Doc
если исходить, что трай-эксцепт - соломка/мат - т...

try except - это к тому, что не соломка/мат, а инcтрумент для обработки исключений. Ну вот так, банально ) Я вот в некоторых классах намеренно свои делаю классы исключений и даже генерирую исключение. Ведь не для того, чтобы внести долю неопределенности, чтобы кто-то думал о том, чтобы на всякий случай где-то вставить try except, а для упрощения работы алгоритма, так потому что логичнее. Я в целом понимаю, о чем ты мне хочешь сказать. Каюсь, в исключительных случаях я ставлю try except не столько для обработки, а "на всякий случай". Но мне такие места не нравятся и как правило к ним мне приходится возвращаться, чтобы сделать его более осознанным и без всяких "на всякий случай"

А как обработаешь исключение?

Александр (Rouse_) Багель
А как обработаешь исключение?

покажу ошибку и посоветую позвонить разработчику :)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта