Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение и не выполнение DLL по условию в DLL, Выполнение и не выполнение DLL по услови 
:(
    Опции темы
oblom04
Дата 10.11.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.10.2005

Репутация: нет
Всего: нет



В главной форме я заношу исходные данные в edit (их 30 штук).
Считываю данные в массив sos (real) и передаю в dll.
В dll в зависимости от того, равна ли сумма всех ячеек массива sos значению 100, должно происходить либо выполнение dll и передача ключа (значение kl:=1 говорит о том, что сумма равна 100) и всех результатов в основную программу, или передача только ключа (значение kl:=0, сумма не равна 100 и надо проверить исходные данные) без выполнение dll.
Начинаю тестировать, задаю разные значения: целые, с одним знаком после запятой, с двумя знаками, тремя...
И начинается: то работает, то не работает.
Я ничего не могу понять. Помогите.

Вот фрагмент кода основной программы:

Код

for i:=1 to 30 do
  case i of
  1   : if form2.CheckBox1.Checked=true then val(form2.edit1.text,sos[1],code);
  30 : if form2.CheckBox30.Checked=true then val(form2.edit30.text,sos[30],code);
         end;
{--------------------обращение к DLL со свойствами газа--------------------}

svoistvadll(P1,T1,sos,Mol_ves1,Z1,Roc1,dRoc1,M1,Cp1,Ppr1,Tpr1,oshibka1);


Вот код DLL:
Код

Procedure svoistvadll (P,T: real; sos : Mas01;
                       var Mol_ves,Z,Roc,dRoc,M,Cp,Ppr,Tpr,oshibka: real); Stdcall
......
......
{--------------------Обнуление передаваемых величин из DLL--------------------}
 Mol_ves := 0; Z := 0; Roc := 0; dRoc := 0; M := 0; Cp := 0; Ppr := 0; Tpr := 0;

{--------------------проверка 100 % состава газа--------------------}
 summa := 0;
 for i := 1 to 30 do summa := summa+sos[i];
 oshibka:=0;

 if (summa>=100) and (summa<=100) then begin
                                                                    oshibka:=1;
                                                                    ........
                                                                    ........
                                                                   end;


Это сообщение отредактировал(а) Girder - 10.11.2005, 19:09
PM MAIL   Вверх
RideX
Дата 10.11.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



Цитата(oblom04 @ 10.11.2005, 21:12)
if (summa>=100) and (summa<=100) then begin

Дык что за условие такое: если больше или равно и меньше или равно? Cделайте так:
Код

if summa <> 100 then begin
   oshibka := 1;
end;

PM   Вверх
Poseidon
Дата 10.11.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(RideX @ 10.11.2005, 19:03)
Дык что за условие такое: если больше или равно и меньше или равно?
smile smile smile Это он хотел сказать типа
Код
if summa = 100 then...




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
oblom04
Дата 10.11.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.10.2005

Репутация: нет
Всего: нет



Как я только не пробовал: и так и этак. Но рузультат то у меня один и тотже.
PM MAIL   Вверх
RideX
Дата 10.11.2005, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



oblom04, перед тем как сравнивать округляешь значение?
Код

summa := Round(summa);
if summa = 100 then begin    
   //...    
end;

PM   Вверх
oblom04
Дата 11.11.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.10.2005

Репутация: нет
Всего: нет



Я убрал условие в dll и переменную oshibka, а результаты она передает совершенно другие, точнее вообще ничего не считает.

А не может такого быть, что моя dll сидит где-то в памяти и использует какую-то старую версию.
Может предыдущую версию dll надо выгружать из памяти? Если да, то как?

PM MAIL   Вверх
FRAGNATIC
Дата 11.11.2005, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



Цитата
А не может такого быть, что моя dll сидит где-то в памяти и использует какую-то старую версию.
Может предыдущую версию dll надо выгружать из памяти? Если да, то как?

может
попробую удалить старую длл если выскачить что занята другим процесом то тогда она висит в памяти если нет то нет =)
PM MAIL   Вверх
oblom04
Дата 11.11.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.10.2005

Репутация: нет
Всего: нет



Я извеняюсь, а как это сделать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.