Да, я вот смотрю и страдаю…
Тем временем Аваст
жду скрин с Malwarebytes в режиме проверки
Болталка это болталка, а не выяснение отношений и переход на личности
Получилось весёлое совпадение. Сохранил код, а через секундку - полторы ПК и выключился. Однако вместо радости получил файл состоящий из “пустых” символов. есть версии, что с ним могло произойти и есть ли возможность выковырять исходник? Сохранились exe’шник и pbd…
Копеечная экономия на UPS рано или поздно оборачивается головной болью. Как и экономия на внешнем устройстве для резервного копирования.
Во время отключения энергии сектора HDD/SSD которые в тот момент перезаписывались остаются в неадекватном состоянии, поэтому при следующем запуске их сбрасывает на нули - то есть char(0)
, что и видно в IDE. У меня тоже так было, когда на даче пытался программировать.
На будущее: Раз речь идёт про код - лучше всего использовать git
. И желательно заливать на облоко, вроде github-а. Там есть и приватные репы, если боитесь показывать свой код.
А в данном случае можно использовать .Net декомпилятор (у меня dotPeek) чтоб конвертировать .exe в кривой код на C#, а затем перевести весь этот код на паскаль ручками.
P.S. Ну или альтернативный вариант - написать код с нуля, подглядывая в декомпилированный код только после того как уже реализовали соответствующую часть в новом коде. Я и без потерь исходников время от времени устраиваю такие переписывания, когда не доволен состоянием кода. Работает как более экстремальная, но и более действенная версия рефакторинга.
примерно так и думал, что система не успела полноценно закончить сохранение.
стабильные версии складирую на USB как правило. Но это была первая версия. Такой подставы я не ожидал конечно.
Переписать с 0 проще будет пожалуй…
Благодарю
Планируется ли снять ограничение с кеш-функций на кол-во параметров? Сейчас нужно как минимум 1
Если нужно, сделаем. Напишите Issue
Представить себе, как должно выглядеть кэширование нескольких параметров - это примерно как рассуждение блондинки в известном анекдоте о невозможности представить “квадратный трехчлен”.
Если скомпилировать модуль допусти на 3.7 версии, то будет ли корректно работать .pcu c последующими версиями или потребуется компилировать заново?
Где-то увидел инфу, которая подталкивает на мысль о несовместимости, но не совсем уверен
Несовместимы
Я вот задумался, а зачем такое может понадобиться? Может, достаточно использовать константы в этом случае?
Удобно при работе с глобальными переменными. Я конечно понимаю, что они не в почёте, однако если в них хранится какой то массив данных использующийся во всей программе, то использование, на мой взгляд оправданно. так же, если внутри функции могут вызываться ранее-описанные функции.
Конечно, можно расплодить кучу параметров у каждой функции, но думаю это не лучшее решение.
В целом не критично, но иногда доставляет неудобства
Ну приведите код всё-таки
Ну допустим недавно как раз помогал с такой задачкой.
С клавиатуры вводятся три значения: a, b, c. Программа вычисляет дискриминант и корни уравнения, после чего выводит их на экран. Реализуйте вычисление корней с помощью процедуры, а вычисление дискриминанта с помощью функции.
Мой вариант был таким
var
a, b, c: integer;
function disc:= sqr(b)-4*a*c;
procedure roots;
begin
var d:= disc;
Println('d =', d);
if d < 0 then
print('Нет корней')
else if d > 0 then
$'x1 = {(-b+sqrt(d))/(2*a)}; x2 = {(-b-sqrt(d))/(2*a)}'.Print
else
print('x =', (-b)/(2*a));
end;
begin
(a, b, c):= readlninteger3;
roots;
end.
Глобальные переменные как раз таки что бы не плодить параметры функции.
Изначально хотел disc
удобно было бы сделать кеш-функцей, но из за ограничения пришлось создавать лишнюю переменную, что бы не вычислять одно и тоже несколько раз.
Понятно, что условия задачи надуманные, но вполне можно предположить, что этот же дискриминант понадобится далее по ходу программы или в других подпрограммах. Не создавать же под него в каждом блоке переменную
"Мы рождены, чтоб вам создать проблемы..."
function disc(t:(real, real, real)):= t[1] * t[1] - 4 * t[0] * t[2];
procedure roots(t:(real, real, real));
begin
var d:= disc(t);
Println('d =', d);
var (a, b, c) := t;
if d < 0 then
print('Нет корней')
else if d > 0 then
$'x1 = {(-b+sqrt(d))/(2*a)}; x2 = {(-b-sqrt(d))/(2*a)}'.Print
else
print('x =', (-b)/(2*a));
end;
begin
roots(ReadReal3);
end.
а можно, перед тем как бросаться громкими цитатами, внимательно прочитать ветку для начала?