
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Страницы: (245) « Первая ... 207 208 [209] 210 211 ... 244 245 ( Перейти к последнему сообщению ) |
Сообщ.
#3121
,
|
|
|
jack128, оно там -2 что ли?
![]() |
Сообщ.
#3122
,
|
|
|
![]() ![]() ![]() function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; const cSimpleBoolStrs: array [boolean] of String = ('0', '-1'); begin if UseBoolStrs then begin VerifyBoolStrArray; if B then Result := TrueBoolStrs[0] else Result := FalseBoolStrs[0]; end else Result := cSimpleBoolStrs[B]; end; Хотя Ord(True) = 1, проблемы таки были помню, в том же FIBPlus. |
![]() |
Сообщ.
#3123
,
|
|
То есть разницы между строковым представлением и самим значением переменной ты не видишь?
|
Сообщ.
#3124
,
|
|
|
Помнится, TRUE равное -1 - это в выросшем из VB типе VARIANT. И видимо это через COM вылезает в Delphi.
А то, что любое ненулевое значение преобразуется в true - это похоже заимствовано из C. |
Сообщ.
#3125
,
|
|
|
trainer, откуда в C true?
![]() Добавлено В C89, конечно же. |
Сообщ.
#3126
,
|
|
|
Цитата Мяут-Настоящий @ Отсюда:trainer, откуда в C true? ![]() ![]() int i = -1; if( i ) printf("It's true!"); |
![]() |
Сообщ.
#3127
,
|
|
Цитата trainer @ А то, что любое ненулевое значение преобразуется в true. В дельфи - это не так. Точнее в дельфи есть несколько логических типов, у каждого свое внутреннее представление. родной для дельфи/паскаля boolean предполагает, что 0 - это False, а 1 - это True. Но есть еще набор ByteBool/WordBool/LongBool, для взаимодействия с сишными апи, вот для них считается, что 0 - это False, а не 0 - это True. |
Сообщ.
#3128
,
|
|
|
Цитата jack128 @ То есть разницы между строковым представлением и самим значением переменной ты не видишь? Так а если наследник TField пользуется BoolToStr/StrToBool? ![]() |
![]() |
Сообщ.
#3129
,
|
|
Цитата [S]mike @ Так а если наследник TField пользуется BoolToStr/StrToBool? а есть наcледник TField пользуется Random() < 0.5 ?? Добавлено на счет TBooleanField, в 2010ой дельфе так написано: ![]() ![]() function TBooleanField.GetAsBoolean: Boolean; var B: WordBool; begin if GetData(@B) then Result := B else Result := False; end; то есть если в поле ноль сидит, значит False возвращаем, иначе - True. Вобщем пока не доказано обратного - можно считать, что это korvin где то лажает, а не дельфя. |
Сообщ.
#3130
,
|
|
|
Цитата trainer @ Отсюда: Но здесь же нет true. Я к тому, что такого литерала в C89 вообще нет. Это просто "особенность" оператора if, сравни (Python): ![]() ![]() >>> if [1]: ... print 'a' ... a >>> >>> if [1] is True: ... print 'a' ... >>> >>> if [1] == True: ... print 'a' ... >>> |
![]() |
Сообщ.
#3131
,
|
|
Все оказалось немного по-другому: FieldsEditor сгенерил все булевые поля как TStringField, у которого
![]() ![]() function TStringField.GetAsBoolean: Boolean; var S: AnsiString; begin S := GetAsAnsiString; Result := (Length(S) > 0) and CharInSet(S[1], ['T', 't', 'Y', 'y']); end; Кто виноват? Delphi? ADO? ODBC? PostgreSQL? |
![]() |
Сообщ.
#3132
,
|
|
Цитата korvin @ Кто виноват? Delphi? ADO? ODBC? PostgreSQL? Ты б например тут спросил, толку было больше |
![]() |
Сообщ.
#3133
,
|
|
Цитата jack128 @ Ты б например тут спросил, толку было больше Не, это-то понятно. |
Сообщ.
#3134
,
|
|
|
Delphi такое Delphi
![]() Цитата --------------------------- Skype --------------------------- Access violation at address 012AD530 in module 'Skype.exe'. Read of address 00000008. --------------------------- OK --------------------------- Версия Скайпа - самая последняя. |
Сообщ.
#3135
,
|
|
|
Цитата [S]mike @ Версия Скайпа - самая последняя. Он еще не на .NET разве переписан? |