Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 | 2 |

 

  Вопрос: Boolean Добавлено: 17.06.04 05:56  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 
Где в PB этот тип?
 

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 17.06.04 09:43
А зачем он тебе? У VB-шных выражений TRUE и FALSE есть вполне определённые цифровые выражения: False соответствует значению 0, а True - любое ненулевое значение. T.е. если ф-ция возвратила ноль - значит False, в остальных случаях -True. Примерно так:
IF MyFunction THEN
     'здесь код, выполняемый, если True
ELSE
     'здесь - если False
END IF
Можно писать так: IF MyFunction = %TRUE или наоборот IF MyFunction = %FALSE, что эквивалентно соответственно = -1 или = 0

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 17.06.04 10:22
так что заместо двухбайтового Bool использовать рекомендуется однобайтовый Byte...

Ответить

Номер ответа: 3
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #3
Добавлено: 17.06.04 10:52
От меня требуется написать функцию которая и будет соответственно возращать булевое значение, например в VB
Private Function() as BOOLEAN
 
а в PB тогда как получается что вместо этого надо писать Byte, а потом уже по Byte'y судить, или как, в хелпе что то написано про замену Boolean на Byte, но с англ. не очень что бы очень...

Ответить

Номер ответа: 4
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #4 Добавлено: 17.06.04 12:09
В VB тип BOOLEAN реализован через 2-байтовое целое. Поэтому его аналогом в PB должен быть Long или Dword, а не Byte.

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 17.06.04 12:22
это без разницы, два байта или один. Все boolean функции в ВБ можно смело использовать byte...

ЗЫ
Dword (double word), это не как не ДВА байта!!!! а все ЧЕТЫРЕ!

Ответить

Номер ответа: 6
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #6 Добавлено: 17.06.04 13:17
Действительно никакой разницы нет, что Byte, что Word...
Один пес.. работают оба варианта


'PB DLL
#Compile Dll

Function TEST1() Export As Byte
Function=1 'TRUE
End Function

Function TEST2() Export As Byte
Function=0 'FALSE
End Function



                     
'VB исходник

Private Declare Function TEST1 Lib "TEST.dll" () As Boolean
Private Declare Function TEST2 Lib "TEST.dll" () As Boolean


Private Sub Command1_Click()
MsgBox TEST1
MsgBox TEST2

End Sub

Ответить

Номер ответа: 7
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #7 Добавлено: 17.06.04 16:32
А чего бы им не работать :)) Процессор не понимает БУКВЫ (True или False). Он понимает только ЦИФРЫ (0 или 1 или -1 или ещё что). А слово True обозначает буквально следующее:
Const True = 1&
Const False = 0&
И слово False как раз не является булевым выражением, оно подставляется для удобства пользования, булевым выражением является 0&

Ответить

Номер ответа: 8
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #8
Добавлено: 17.06.04 20:50
Эй, люди, вы чего? Какой байт, какой лонг/дворд.
Болеан в ПБ - это интегер.
 ;Dim A as Integer
 A=%TRUE
 IF ISTRUE(A) THEN
 ELSEIF ISFALSE(A) ...

Ответить

Номер ответа: 9
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #9 Добавлено: 18.06.04 02:00
Ну правильно, интегер, но не в этом суть, а в том, что False - это просто константа = 0

Ответить

Номер ответа: 10
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #10
Добавлено: 18.06.04 03:34
 Не, ну конечно же экспортная функция не вернёт тебе Boolean. В PB его просто нету.

 Вот если бы ты был знаком с VB3, тогда бы тебе было конечно легче. Интерфейс PB остановился в развитии примерно на том уровне. В VB3 тоже не было глобальной COM-мизации и TRUE/FALSE нужно было объявлять как константу.

Ответить

Номер ответа: 11
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #11
Добавлено: 18.06.04 07:57
Вообщем надо использовать Byte получается да? или Integer?
 
Могучий перевод, полюбуйтесь как переводит мощный X-Translator:))

Байты - 8-битовые (1-байтовые) целые числа без знака, располагающиеся в ценности от 0 до 255 (0 к 2^8-1). Характер(знак) спецификатора типа для Байта:?.

Переменные Байта идентифицированы следующим переменное название(имя) с маркой вопроса (то есть, var?), или, используя DEFBYT утверждение(заявление) как описано в предыдущем обсуждении Целых чисел. Вы можете также объявлять переменные Байта, использующие БАЙТ keyword с ТУСКЛЫМ утверждением(заявлением). Например:

ТУСКЛЫЙ я КАК БАЙТ  это меня ваще прибило:)))

Ответить

Номер ответа: 12
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #12
Добавлено: 18.06.04 08:41
Как в PB объвлять другие функции из других длл??
вот например
 
#Compile DLL
#Include "Win32Api.inc"
DECLARE FUNCTION RegQueryValueEx LIB "advapi32.dll" ALIAS "RegQueryValueExA" (BYVAL hKey AS LONG, BYVAL lpValueName AS STRING, BYVAL lpReserved AS LONG, lpType AS LONG, lpData AS ANY, lpcbData AS LONG) AS LONG  '- я сюда должен пихать объявления или куда, PB вылетает с ошибкой Parametre mismatch with prior declaration

Ответить

Номер ответа: 13
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #13
Добавлено: 18.06.04 09:46
 Открой Win32Api.inc и поищи там объявляемую функцию. Если она там уже есть, то объявить второй раз ты её не можешь.
 Есть два пути:
 1. Прибить её объявление в Win32Api.inc
 2. Прибить директиву #Include "Win32Api.inc"

Ответить

Номер ответа: 14
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #14 Добавлено: 18.06.04 10:07
Декларировать самому в PB API функции не следует, почти все они есть в Win32Api.inc
VB декларации могут глючить в PB, сам с таким сталкивался...

Ответить

Номер ответа: 15
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #15 Добавлено: 18.06.04 10:49
И ещё бывает, что названия API ф-ций в VB и PB различные.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам