Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Тип Boolean в InterBase [D5, IB6.x]


Konuhov sergey ©   (2002-04-18 19:02:00) 

Насколько я понял, в IB6 тоже нет типа Bool.
А можно ли написать внешнюю процедуру, которая будет принимать переменную типа bool в параметрах. Необходимо передать результат выражения типа "a<5".


Digitman   (2002-04-24 14:19:00) [1]

>Praco
Может, я не понял, но к чему тогда вот это уточнение :
>>"Необходимо передать результат выражения типа "a<5". ??
Какая разница - что с чем сравнивать : "a" с "5" или слона с моськой ? Речь-то не о сравнении чего-то там с чем-то, а о том, как принять/передать/интерпретировать булево значение )

в UDF :

function SomeFunction(var Value: LongBool): WordBool;
begin
...
if Value then
Result := ...
else
Result := ...
end;

в ISQL :

DECLARE EXTERNAL FUNCTION SomeFunction
INTEGER
RETURNS SMALLINT
ENTRY_POINT "SomeFunction" MODULE_NAME "myudflib.dll";

CREATE PROCEDURE SOME_SP
(I1 INTEGER, I2 INTEGER)
RETURNS (CMPRESULT SMALLINT)
AS
BEGIN
CMPRESULT = SomeFunction(I1 - I2);
IF (CMPRESULT <> 0) THEN ...
END





Praco   (2002-04-24 10:50:00) [2]

> Digitman © (24.04.02 08:48)
Не пойдет. Вопрос был "принимать переменную типа bool в параметрах". А в функции CompareTwoInteger нет смысла. Это можно сделать в SQL.
> Konuhov sergey
"А можно ли написать внешнюю процедуру, которая будет принимать переменную типа bool в параметрах. Необходимо передать результат выражения типа "a<5"".

в SQL
IF a < 5 THEN i = 1
ELSE i = 0;
ExternalFunc(i);
...

в UDF
if Boolean(i) then ...

Вопрос был в этом?



Digitman   (2002-04-24 08:48:00) [3]

в UDF :

function CompareTwoInteger(var i1, i2: Integer): WordBool;
begin
Result := i1 > i2;
end;

в ISQL :

DECLARE EXTERNAL FUNCTION CompareTwoInteger
INTEGER,
INTEGER
RETURNS SMALLINT
ENTRY_POINT "CompareTwoInteger" MODULE_NAME "myudflib.dll";

CREATE PROCEDURE COMPARE
(I1 INTEGER, I2 INTEGER)
RETURNS (CMPRESULT SMALLINT)
AS
BEGIN
CMPRESULT = CompareTwoInteger(I1, I2);
END


zx   (2002-04-23 17:45:00) [4]

Вы тут о ib6 или о dll разговариваете???


Konuhov sergey   (2002-04-23 17:35:00) [5]

Вопрос был о внешних функциях, которые хранятся в отдельном
dll-модуле. Причем тут внутренние.


Johnmen   (2002-04-22 16:21:00) [6]

>..внешней процедуре для IB...

А что же тогда внутренняя ?


Konuhov sergey   (2002-04-22 15:25:00) [7]

Вопрос был о внешней процедуре для IB.
Но dедь вызывать то ее требуется из SQL.


Reindeer Moss Eater   (2002-04-19 18:34:00) [8]

А разве спрашивалось про процедуру в IB?


Konuhov sergey   (2002-04-19 16:36:00) [9]

А разве в IB будет работать такое приведение типа?


Konuhov sergey   (2002-04-19 16:36:00) [10]

А разве в IB будет работать такое приведение типа?


Konuhov sergey   (2002-04-19 16:35:00) [11]

А разве в IB будет работать такое приведение типа?


Reindeer Moss Eater   (2002-04-18 19:09:00) [12]

Передавай
Integer( a < 5 )


Наверх

Титульная страница Поиск, карта сайта Написать письмо