Простая замена вариантного типа в исходных кодах Borland Pascal

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

Хотя общая память под разные интерпретации – уже unsafe моветон, важна сама суть без union’ов: stream’ы файла или в память, а BlockRead через аналоги вроде StreamReader/BinaryReader или даже суррогаты Memcpy для array.copy/Blockcopy или клоны.

Ещё линейнее: вынести ID-байт вне описания типа, в цикле читать этот ID из файла и затем соответствующий тип. Presto! Однако, если это не однократная работа с поддержкой подобных файлов, я бы разок прочитал и сконвертировал в более удобоваримый формат.

В принципе, почти все проблемы решали и до нас, поэтому большинство вопросов есть в Инете, а “на дно тянут” не особенности платформы и отсутствие совместимости, а недостаток знаний и мотивации. Жаль, что не всегда могут помочь или подсказать.

Смотря каких. Многие я поддерживал. Те, которые действительно улучшают комфорт написания программ в Паскале. А в некоторых я не вижу смысла, потому и высказываюсь против. Я же, заметьте еще раз. высказываюсь, а не кричу “ЗАПРЕТИТЬ НАФИК!”. Хотя можно и поорать, но эффекта не возымеет. Это ведь все равно всего лишь pro et contra

1 лайк

Уже неделя прошла…

Уговорили. Давайте поля в классах запретим

Это называется “Не буди лихо, пока оно тихо” ))))

1 лайк

А они разве запрещены в C#?

Я бы все целочисленные типы еще запретил, кроме BigInteger. Они при переполнении ничего не сообщают, а это очень такой творческий источник для непредсказуемого поведения программ. :stuck_out_tongue_winking_eye:

BigInteger тоже переполнить можно :wink:

И как, часто получается? И потом, надо же хоть один целый тип оставить…

Сейчас попробую…

А давайте вообще один только Double оставим? Будем неявно преобразовывать его в целое при необходимости. Никаких проблем :rofl:

Нет, цикл for с ним не работает. “Беременные женщины были очень недовольны” (с) 12 стульев.

Справедливости ради замечу, что он и с BigInteger не работает… он же не порядковый.

Я же сказал, преобразуем в целое.

Чтобы преобразовать в целое, должен быть тип целого.

А мы неявно преобразуем, в заголовке цикла.

Т.е. компилятор должен уметь неявно преобразовывать double в отсутствующий класс?

Ну так Вы говорили запретить в Паскале, а не убрать из .NET!

Я даже не решаю вопрос о запретах в Паскале, а уж указывать Майкрософт, что запрещать…

Главное, чтобы разработчики не восприняли шутку всерьёз :smile:

Генерал фон Шварцкопфман встал, прокашлялся, высморкался в зеленый носовой платок и прохрипел: — Господа! На Курской дуге мы потерпели поражение вовсе не из-за того, что было мало танков и самолетов, которых у нас, слава богу, хватает, а из-за наглости русских партизан. Командующему немецкими войсками на Курской дуге генерал-фельдмаршалу фон Клюге они подложили, извиняюсь, на сидение, ёжика… Все оживились. — Да, да, господа! Русского ёжика! Вследствие этого командующий упал со стула и получил ранение. И без мудрого руководства немецкие солдаты, — генерал вытер слезу, — не знали, куда стрелять. Борман мерзко ухмыльнулся. Это по его приказу фон Клюге подложили ёжика. Шутка удалась.

1 лайк