fbpx

Приєднуйтесь!

Приходьте і приєднуйтесь до нашої спільноти. Розгорніть вашу мережу та дізнайтеся про нових людей!

Date: 31.07.2021
Donate: 100 USD

Vitalii Artomovподобається Обговорення 6 днів тому

Получилось!! ) Спасибо! Заработало всё!

Обратите внимание на то, что в моем примере есть блок "иначе": else TextMessage := 'X> 100! РАСЧЕТ НЕВОЗМОЖЕН!'; Это сделано для того, чтобы переменная TextMessage была гарантированно инициализирована. Можно еще в самом начале расчета написать: begin TextMessage := '';... Это я к тому, что переменной обязательно нужно присвоить какое-то значение (т.е. чтобы какой-то текст обязательно выводился в отчете, пусть даже пустая строка).

В главном модуле прописано вот это uses Classes, Dialogs, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7; const c_t=1; var S_0: Double; begin Calculate_z_e; Calculate_k; Calculate_k_k; Calculate_c_e; Calculate_mu2_0; Calculate_S_g; S_0 := c_t * c_e * mu2_0 * S_g; Report.Update; end;

Пытаюсь сделать второй вариант, но наверное не в том месте прописываю всё. Расчёт считается, но ошибка в отчёт не выводится

Я прописываю так:, но результат не получается var TextMessage: string; b2, l_c, c_e, c_e0 : Double; procedure Calculate_c_e; begin Calculate_z_e; Calculate_k; Calculate_k_k; begin b2 := Math.IntPower(b, 2); begin if l_c > 100 or l_c < 0 then TextMessage := 'l_c > 100 или l_c < 0 ! РАСЧЕТ НЕВОЗМОЖЕН!'; end; l_c := 2*b - (b2 / l); c_e0 := (1.2 - 0.4 * k_k) * (0.8 + 0.002 * l_c); end; далее есть ещё условия и прописано begin Calculate_c_e; Report.Update; end; Это всё нахожу процедуре, которая...

Дополнительно, Вы можете ограничить величину переменной: begin X := Math.Min(X, 100); // теперь X никогда не превысит 100 end;

Да, Кристина, это возможно. Есть такие варианты: 1. Вывести пользователю стандартное окно с сообщением: begin if X > 100 then ShowMessage('X> 100! РАСЧЕТ НЕВОЗМОЖЕН!'); end; 2. Вывести сообщение прямо в отчет. Для этого добавьте в отчет объект "Script text" с текстовой переменной TextMessage, а в скрипте пропишите: var TextMessage: string; begin if X

Кристина Жалейко опублікувала нову дискусію.1 тиждень тому

Установка границ расчёта

Здравствуйте! Возник такой вопрос - возможно ли написать в модуле такое условие или границу расчёта, чтобы при не выполнении его, в отчёт выводилась ошибка? У меня в модуле есть переменная, которая не должна быть больше 100. И мне нужно, чтобы расчёт не производился и ещё лучше выдавал понятную ошибку в отчёт, если эта переменная более 100 или отрицательная. Возможно ли? Если да, то где прочитать, покажите, пожалуйста?

Поддержка пользователей (русскоязычный форум)

Верно, Кристина. Принцип работы приложения такой, что блок BEGIN...END выполняется только для главного модуля, для остальных модулей он игнорируется. Поэтому если Вы переключаете разные модули, то нужно организовать инициализацию переменных через соответствующие процедуры.

плюс из-за этих дополнений у меня потерялись end; А теперь всё ВЫВЕЛОСЬ в отчёт!! Это очень круто! Я хотела сделать этот шаблон такой "матрёшкой!, когда из модуля в модуль я нахожу то нужное значение для основной формулы. Теперь должно получиться всё..

В начале второго модуля мне не хватало в нужном месте Calculate_z_e; я в конце второго модуля не прописала begin Calculate_k; // это значение, которое я нахожу во втором модуле. Report.Update; end;

В общем, сюда я код скопировать не могу - ошибку страница выдаёт. (Пришлось комментарий даже разделить) НО. Я сейчас самым научным методом что называется тыком, стала редактировать второй модуль. И первый. Ещё сравнила с Вашим ответом. А ещё сравнила внимательнее с тем, что Вы мне присылали пару недель назад. И сначала у меня вообще перестали выводиться в отчёт значения из обоих модулей, а потом всё заработало!!!!

Кристина, я скопировал Ваш код в новый модуль и запустил — работает. Потом добавил еще один модуль Unit2, сделал его главным и прописал в нем: uses Classes, Forms, Dialogs, Unit1; begin Calculate_z_e; Report.Update; end; Запустил приложение — всё считает и выводит в отчет. Давайте сравнивать, что у нас отличается?

Блин, страница не даёт второй код прописать сюда

И вот это работает. Значение в отчёт выводится. После того как делаю второй Юнит, назначаю его главным, добавляю в него запись uses Classes, Forms, Dialogs, Unit1; значение из второго Юнита считается, но значение z_e становится невидимым .

Да, верно.. uses Classes, Forms, Dialogs; const // значения, принимаемые согласно проекту: z = 7; // м, высота от поверхности земли; h = 15; // м, высота здания; d = 10; // м, размер здания (без учёта его стилобитной части) в направлении, // перпендикулярном расчётному направлению ветра (поперечный размер); // значения, неизменяемые для данного расчёта: var z_e : Double; procedure Calculate_z_e; // м, эквивалентная высота. begin if (h 2*d) then begin if (z > = h - d) then begin z_e :=h; end;...

А как у Вас присваивается значение переменной A? Может быть, один из сопутствующих параметров не инициализирован? Проверьте, чтобы абсолютно ВСЕ переменные и константы перед тем как входить в выражение получили какие-то значения. Ну а лучше приведите весь код модуля)

Мій профіль

Реєстрація
Запам'ятати мене
Забули логін  Забули пароль

Учасники онлайн

    Наразі немає учасників
Переглянути всіх

Події

На жаль, зараз у нас немає подій.
Переглянути всі події

Сторінки

Відео

Переглянути всі відео

Опитування

Which codes do you want to see in the MULTICODE first?

loader
This poll is ended квіт. 01 2021 d 12:00
View all polls

Фото

Dystlab™ — Project for Engineers

Dystlab™. Всі права захищено.

Адреса офісу в Канаді: 223-2275 Lake Shore Boulevard West, Toronto, ON, M8V 3Y3

Адреса офісу в Україні: 76006, м. Івано-Франківськ, вул. Миколайчука Івана 17/97

E-mail:
technot needed texteditoranother not needed text@dystlabdummy text.store

Telegram:
https://t.me/techeditor

Dystlab™ — торговельна марка, зареєстрована в Державному реєстрі свідоцтв України на знаки для товарів і послуг 26.02.2018, свідоцтво № 238304. Власник: фізична особа-підприємець Артьомов В. Є., ЄДРПОУ/ІНН: 3003314690.

Все найцікавіше про TechEditor — в Твіттері. Приєднуйся!

TechEditor Twitter