Почему BoolToStr(true) = '-1'?[Решено]
Добавлено: 08.05.2011 11:30:21
Делали с учащимися микропроект в Lazarus по учебнику (Delphi).
Помимо прочего, задание включает следующий алгоритм:
1. Считываем из двух текстовых полей нули или единицы.
2. Выполяем логическую операцию (and или or).
3. Результат отображаем в метке.
Для преобразования string в boolean и обратно используем функции StrToBool и BoolToStr соответственно.
Удивляюсь, когда оказывается, что BoolToStr возвращает '-1', а не '1', если переданная ей лог.переменная имеет значение true.
Приходится "обходить" '-1' примерно так:
Может быть не надо так делать и есть другая функция, которая возвращает '1'?
Почему StrToBool превращает '1' в true, а BoolToStr превращает true в '-1'?
Помимо прочего, задание включает следующий алгоритм:
1. Считываем из двух текстовых полей нули или единицы.
2. Выполяем логическую операцию (and или or).
3. Результат отображаем в метке.
Для преобразования string в boolean и обратно используем функции StrToBool и BoolToStr соответственно.
Удивляюсь, когда оказывается, что BoolToStr возвращает '-1', а не '1', если переданная ей лог.переменная имеет значение true.
Приходится "обходить" '-1' примерно так:
- Код: Выделить всё
...
var and1:boolean;
...
and1 := StrToBool(Edit1.Text) and StrToBool(Edit2.Text);
if and1 := true then Label1.Caption := '1'
else Label1.Caption := '0';
...
Может быть не надо так делать и есть другая функция, которая возвращает '1'?
Почему StrToBool превращает '1' в true, а BoolToStr превращает true в '-1'?