fbpx

Get Connected!

Come and join our community. Expand your network and get to know new people!

Date: 31.07.2021
Donate: 100 USD

Vitalii Artomov has liked a Discussion 6 days ago

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

Обратите внимание на то, что в моем примере есть блок "иначе": 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

Кристина Жалейко posted a new discussion1 week ago

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

Здравствуйте! Возник такой вопрос - возможно ли написать в модуле такое условие или границу расчёта, чтобы при не выполнении его, в отчёт выводилась ошибка? У меня в модуле есть переменная, которая не должна быть больше 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? Может быть, один из сопутствующих параметров не инициализирован? Проверьте, чтобы абсолютно ВСЕ переменные и константы перед тем как входить в выражение получили какие-то значения. Ну а лучше приведите весь код модуля)

My profile

Members online

    No members to show currently
View All

Events

Sorry, we currently have no events.
View All Events

English forum

Video

View all videos

Polls

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

loader
This poll is ended Apr 01 2021 at 12:00
View all polls

Photos

Dystlab™ — Project for Engineers

Dystlab™. All rights reserved.

Address in Canada: 223-2275 Lake Shore Boulevard West, Toronto, ON, M8V 3Y3

Address in Ukraine: 76006, Ivano-Frankivsk, st. Ivana Mykolaichuka 17/97

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

Telegram:
https://t.me/techeditor

Legal information

Dystlab™ is a trademark registered in the State Register of Certificates of Ukraine for Goods and Services Marks 26.02.2018, certificate No. 238304. Owner: entepreneur Artomov V.E., EGRPOU/ITN: 3003314690.

All the most interesting about TechEditor — in Twitter. Join us now!

TechEditor Twitter