• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль: сравнение версий, глюки и т.п.

  • Автор темы Автор темы MrSTEP
  • Дата начала Дата начала
Нет, я спрашиваю разрешения на прикрепление к сообщению своего паскаля
 
Я спросил, дабы ничего не нарушить ненароком :)
 

Вложения

Ничего не понимаю! Бред какой-то. Вроде бы мой вариант более "продвинутый": и весит вдвое больше, и, помимо консольного tpc.exe и обычного запуска в турбосреде turbo.exe имеется более новый tpx.exe - тоже турбосреда, но с возможностью нормальной утилизации оперативной памяти. Однако же у меня CRT глючит, а у MrStep - нет, и там программа идет. Воистину, чудеса! Если кому интересно - вот мой ТР-7. Даже пришлось разбить на 2 архива, в один по ограничениям форума не лезет. Содержимое (папки и файлы) нужно свалить в одну папку, которую предварительно создать:
 

Вложения

Действительно, в твоем паскале ошибка.. А вот в моем нет. И справка на руссоком :)
 
Действительно, в твоем паскале ошибка.. А вот в моем нет. И справка на руссоком :)
Уф, и четверти века не прошло, а я уже всё-таки пропатчил свой ТР-7! Теперь и у меня всё работает. Лёша, если не надоело экспериментировать и еще не снес мою версию, замени в нем в папке BIN файл turbo.tpl вот этим:
 

Вложения

Работает.. А как тебе удалось пропатчить его?
 
Работает.. А как тебе удалось пропатчить его?
Да просто набрал в Гугле что-то типа CRT PASCAL "Error 200", она мне и выдала кучу ссылок. Попробовал какую-то французскую утилиту - не пошла, а в другом месте наш умелец просто выложил файл для замены - с ним получилось.
 
Делали мы на практике какую-то программулину несложную, шло все не то, что бы легко, но и без особых сложностей. Проверяем ответ - моя писанина выводит 4, у старосты с тем же тестом - 0. Внимательно сравниваем, ничего не поймем - все одно. Уже и руководитель посмотрел - диву дался, на ровном месте обнуляет переменную и все.. Дали мне задание разобраться, хоть кровь из носу. Сажусь, открываю два окна, форматирую все под себя, даже переменные по-своему переименовал. И тут замечаю, что типы целый и вещественный описаны у нас в разном порядке. Меняю, тестирую.. Толи лыжи не едут, толи я чего-то не понимаю - прога выдает правильный ответ. Меняю местами типы в своем коде - ответ неправильный. В общем, от порядка описания типов зависел результат. До сих пор понять этого не можем. Если получится, найду на днях это чудо, покажу.
Нашел эту программу. Она уже заточена под отладочную печать.
Задание примерно следующее: записать в файл некоторое количество чисел, затем выбрать их него k-ое число. Программа работает правильно.
Код:
uses crt;
var f:file; k:integer; x:real;
begin clrscr;
     writeln('vvedi 4icla: ');
     assign(f,'data.dat');
     rewrite(f);
     repeat
           read(x);
           blockwrite(f,x,1);
     until eoln;
     close(f);
     reset(f);
     write('vvedi nomer elementa ');
     readln(k);
     writeln('*k=',k);
     seek(f,k-1);
     writeln('**k=',k);
     blockread(f,x,1);
     writeln('***k=',k);
     writeln(k,' element=',x:5:3);
end.
Но меняем местами x:real; и k:integer; в описании переменных, и ловим k=0 на выходе, но верно выбранный из файла элемент.
 
Но меняем местами x:real; и k:integer; в описании переменных, и ловим k=0 на выходе, но верно выбранный из файла элемент.
Да, интересно. Поиграл с программкой. Всё так и есть. И более того.
Насколько я понимаю, всё это заморочки динамических размещений блоков в нетипизированных файлах, причем с необъявленной длиной блока. Между прочим, если размер блока задавать, т.е. вместо
rewrite(f) и reset(f) записать что-нибудь типа rewrite(f,10) и reset(f,10), то программа и вовсе пойдет вразнос, хотя сообщений об ошибках не будет.
А отсюда мораль: не выпендривайтесь (шутка, но...). Я вот использую во всех случаях жизни только файлы типа TEXT, а уж этими блоковыми записями-чтениями отродясь не пользовался. Ну их! :D
 
Я вот использую во всех случаях жизни только файлы типа TEXT, а уж этими блоковыми записями-чтениями отродясь не пользовался. Ну их!
Задача была использовать нетипизированный файл. Но блин, аж смешно вспомнить, какими глазами мы смотрели на эту прогу :D
 
Вообще я чем дальше, тем более во мнении укрепляюсь, что в Паскале от всего, что прямо или косвенно связано с динамическим размещением в памяти чего бы то ни было, лучше (по возможности) держаться подальше. Просто можно крупно подорваться. На одну такую мину с многомерными динамическими массивами я (и, судя по Интернету, отнюдь не только я) недавно наступил. Подробно свои изыскания привел здесь: http://www.tehnari.ru/f43/t42627/ . Так что если есть возможность, то лучше без указателей, а по-простому, по рабоче-крестьянски. Оно спокойнее.
 
Нас пытались-было научить динамике, но не пошло. Не знаю, насколько это применимо в других языках, но подобная катавасия в паскале меня пугает..
 
Нас пытались-было научить динамике, но не пошло. Не знаю, насколько это применимо в других языках, но подобная катавасия в паскале меня пугает..
LongCat как-то, помнится, упоминал, что вроде в СИ это сделано существенно более толково.
 
Да нам и не преподавал его никто. Хотя, общался с одним малоизвестным программером отсюда, он сказал правильную вещь:

- Паскаль, Делфи, ЯваСкрипт - это как раз не "программер", а "кодить умею". Вот программером станешь, когда начнешь сам заморачиваться, изучать языки и методы.

Так что, учить все придется самому...
 
Касательно логического отрицания

Как оказалось, не все версии Паскаля "переваривают" употребление логического оператора Not, как функции. Т.е. если b - переменная типа boolean, то в некоторых Паскалях выражение
Not(b)
вызовет сообщение об ошибке при трансляции. Зато
Not b
понимает любая версия.
 
Недокументированные возможности. Byte, как функция.

Все знают (надеюсь), что одним из целочисленных типов данных в Паскале является Byte - неотрицательное целое число в диапазоне 0..255. Между тем Byte может также выступать в роли функции, тип аргумента которой есть Char или Boolean. В первом случае (Char) функция Byte эквивалентна оператору Ord, т.е. возвращает значение кода символа. Если же аргумент имеет тип Boolean, то при значении true возвращается 1, а при значении false - 0.
 
Назад
Сверху