Здравствуйте, Slava Antonov, Вы писали:
SA>А в чем и где глюк?
А то, что вот это, например, падает без объяснения причин:
program Test;
{$APPTYPE CONSOLE}uses SysUtils;
function BoolFun: Boolean;
begin
Result := Boolean(2);
end;
const
CycleOkFail: array[Boolean] of string = ('Ошибка обмена.',
'Успешный обмен.');
var
SomeString: string;
begin
SomeString := CycleOkFail[BoolFun];
Writeln(SomeString);
ReadLn;
end.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Знакомые грабли, действительно Delphi интерпретирует Boolean как Byte
0 - False
<> 0 - True
И никада об этом не забывать
Ну и как уже показал ekamaloff:
Boolean(2) <> (2 = 2)
Re[3]: Delphi 5: boolean то же самое, что shortint ?
От:
Аноним
Дата:
11.04.06 15:38
Оценка:
Здравствуйте, ekamaloff, Вы писали:
E>function BoolFun: Boolean; E>begin E> Result := Boolean(2); E>end;
А Вам разве кто-то обещал, что boolean = {byte, word, dword, integer... продолжить по необходимости}
Формируйте из этой двойки булевое выражение — и будет счастье. Иначе получаем код, привязанный к особеностям реализации конкретной версии конкретного компилятора.
Re[3]: Delphi 5: boolean то же самое, что shortint ?
От:
Аноним
Дата:
11.04.06 15:44
Оценка:
Здравствуйте, ekamaloff, Вы писали:
E>function BoolFun: Boolean; E>begin E> Result := Boolean(2); E>end;
А Вам разве кто-то обещал, что boolean = {byte, word, dword, integer... продолжить по необходимости}
Формируйте из этой двойки булевое выражение — и будет счастье. Иначе получаем код, привязанный к особеностям реализации конкретной версии конкретного компилятора.
Re[2]: Delphi 5: boolean то же самое, что shortint ?
The stars so gaily glistened... (Tue, 11 Apr 2006 10:11:49 GMT @466)
...while the fading voice of Danchik whispered through the darkness:
D> Знакомые грабли, действительно Delphi интерпретирует Boolean как Byte
Не, как ShortIntю Иначе маска была бы $FF, а не $7F
D>
D> 0 - False
D> <> 0 - True
D>
D> И никада об этом не забывать
Я-то помню, Delphi забывает.
Интересно, как с этим в Kylix / FreePascal / Virtual Pascal ?
-- WinAMP://none: WinAMP is suffocated http://Arioch.nm.ru/FL/Fidolook_SL.png
Mail: the)under(Arioch)at(nm)dot(ru ICQ: xmpp:arioch@jabber.ru
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Delphi 5: boolean то же самое, что shortint ?
The stars so gaily glistened... (Tue, 11 Apr 2006 15:38:35 GMT @693)
...while the fading voice of Аноним whispered through the darkness:
А> Здравствуйте, ekamaloff, Вы писали:
E>> function BoolFun: Boolean; E>> begin E>> Result := Boolean(2); E>> end;
Еще смешнее — падает простое без всяких хакерских (елси приведение типов —
это хакерство) штучек
function BoolFun: Boolean;
begin
end;
А> А Вам разве кто-то обещал, что boolean = {byte, word, dword, integer... А> продолжить по необходимости}
Нам как раз обещали, что boolean — это не shortint и не другие типы.
А> получаем код, привязанный к особеностям реализации конкретной версии А> конкретного компилятора.
Простите, пример в моем первом посте — где там привязка к конкретному
компилятору???
Вы о чём ?
-- WinAMP://none: WinAMP is suffocated http://Arioch.nm.ru/FL/Fidolook_SL.png
Mail: the)under(Arioch)at(nm)dot(ru ICQ: xmpp:arioch@jabber.ru
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Delphi 5: boolean то же самое, что shortint ?
[Skip]
E>Я подумываю вообще все программы полностью оборачивать в try-except и не париться. Вот ведь ляпота будет! Баги просто уползут поджав хвосты.
Ех... (так мечтательно, тем временем вытирая очередной try excep end, плюхнутый чайником)
Re[7]: Delphi 5: boolean то же самое, что shortint ?
От:
Аноним
Дата:
18.04.06 10:39
Оценка:
E>Я подумываю вообще все программы полностью оборачивать в try-except и не париться. Вот ведь ляпота будет! Баги просто уползут поджав хвосты. Заметать мусор под ковер — это дурной тон. Баги станут менее заметными, но не исчезнут. Потом комп. будет виснуть без всяких видимых причин. Объясняй потом юзерям, что это не ошибка а особенность реализации и дизайнерской мысли .