Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

Помнится, тут уже было несколько соревнований...   Найти похожие ветки 

 
Empleado ©   (2007-03-22 19:30) [0]

Предложите интересные реализации проверки условия, типа if not MyBool <> True then. На любом языке.
Спасибо


 
Ega23 ©   (2007-03-22 19:33) [1]


function ConvertBooleanValue(const Value : Boolean) : Boolean;
begin
 if (Value=True) then
  begin
   Result := False;
  end
 else
  if (Value=False) then
   begin
    Result := True;
   end
  else
   raise Exception.Create("Unknuwn boolean value!");
end;


 
umbra ©   (2007-03-22 19:38) [2]

function ConvertBooleanValue(const Value : Boolean) : Boolean;
begin
Result := not Value;
end;


 
Vlad Oshin ©   (2007-03-22 19:38) [3]

не понял...
так что ли?
if MyBool <> false then
if MyBool = true then


 
Ega23 ©   (2007-03-22 19:38) [4]


> umbra ©   (22.03.07 19:38) [2]


фи...


 
Vlad Oshin ©   (2007-03-22 19:41) [5]

в чем прикол то


 
umbra ©   (2007-03-22 19:41) [6]

2 Ega23 ©   (22.03.07 19:38) [4]

я, наверное, не понял, какие реализации называются интересными :)


 
oldman ©   (2007-03-22 19:42) [7]


> Empleado ©   (22.03.07 19:30)  
> Предложите интересные реализации проверки условия, типа
> if not MyBool <> True then. На любом языке.


Предлагаю.
На Паскале:

if not MyBool <> True then

:)))


 
Ega23 ©   (2007-03-22 19:43) [8]


> я, наверное, не понял, какие реализации называются интересными
> :)
>


Да тут месяца с три назад соревнование в маразме было...  :)


 
Empleado ©   (2007-03-22 19:44) [9]


> umbra ©   (22.03.07 19:41) [6]

"интересные" - в кавычках :)

> Ega23 ©   (22.03.07 19:33) [1]

Сильно :)


 
oldman ©   (2007-03-22 19:46) [10]


> Ega23 ©   (22.03.07 19:33) [1]


А через case не сработает?


 
Ega23 ©   (2007-03-22 19:48) [11]


> А через case не сработает?


Так маразматичнее. ИМХО. :)


 
Eraser ©   (2007-03-22 19:48) [12]

вот наваял )
function ConvertBooleanValue(const Value : Boolean) : Boolean;
var
 str: string;
begin
 try
   str := BoolToStr(Value, true);
   if Length(str) > 4 then
     Result := not Value
   else
     if Length(str) = 4 then
       Result := not Value
     else
       raise Exception.Create("Unknuwn boolean value!");
 except
   raise Exception.Create("Unknuwn boolean value!");
 end;
end;


 
Vlad Oshin ©   (2007-03-22 19:49) [13]

надо набрать в поисковике Правила булевой алгебры и по формулам раскрутить А=В на пару пейджов


 
Empleado ©   (2007-03-22 19:53) [14]


> Eraser ©   (22.03.07 19:48) [12]

В твоем коде ошибка! :)


 
Eraser ©   (2007-03-22 19:55) [15]

> [14] Empleado ©   (22.03.07 19:53)

хз, у меня работает )


 
Empleado ©   (2007-03-22 19:58) [16]


> Eraser ©   (22.03.07 19:55) [15]

"Unknuwn" :)


 
Ega23 ©   (2007-03-22 19:59) [17]

да и raise 2 раза - лишнее...


 
Eraser ©   (2007-03-22 20:01) [18]

> [16] Empleado ©   (22.03.07 19:58)

значит не та версия Делфи, у меня такой код
 if ConvertBooleanValue(true) then
   ShowMessage("!!!");
 if ConvertBooleanValue(false) then
   ShowMessage("!!!");

работает как надо )

> [17] Ega23 ©   (22.03.07 19:59)

так надо, чтобы программа надежнее работала )


 
umbra ©   (2007-03-22 20:07) [19]

interface

type
 TBooleanConverter = class
  private
    FValue: Boolean;
  public
     constructor Create(Value: Boolean); reintroduce;
     property Value: boolean read FValue;
  end;

implementation

constructor TBooleanConverter.Create(Value: Boolean);
begin
 inherited Create;
 if Value <> True then
   FValue := True
 else
   FValue := False;
end;


Использовать так:

with TBooleanConverter.Create(myBoolean) do
 try
   if Value then {......};
 finally
   Free;
 end;


 
easy ©   (2007-03-22 20:13) [20]

http://bash.org.ru/quote.php?num=66390


 
Eraser ©   (2007-03-22 20:19) [21]

> [20] easy ©   (22.03.07 20:13)


> if (b.ToString().length < 5){...}

ну на делфи код еще извращеннее получается )
if Length(BoolToStr(b, True)) < 5 then


 
Knight ©   (2007-03-22 21:50) [22]

if StrToInt(BoolToStr(MyBool, MyBool and not MyBool))<StrToInt(BoolToStr(not MyBool, MyBool and not MyBool)) then


 
VirEx ©   (2007-03-22 22:38) [23]

procedure to_be;
function be(to_be:boolean):boolean;
begin
 result:=to_be or not to_be
end;
begin
if messagebox(0,PChar(""+vartostr(be(boolean(1-random(2))))),"to be or not to be?",IDOK)<>IDHELP then to_be
end;


 
DrPass ©   (2007-03-22 23:04) [24]

А вот без всяких выдумок, вполне тривиальный код на RPG-III:
*IN80 IFEQ*OFF


 
BiN ©   (2007-03-22 23:04) [25]

эх, вы.... учитесь пока я жив ))

function NotBool(Value: Boolean): Boolean;
var
 Temp: Boolean;
begin
 for Temp:=Low(Boolean) to High(Boolean) do
   If Temp xor Value then
   begin
     Result:=Temp;
     Exit;
   end;
 raise Exception.Create("Chaos Error: Invalid entropy direction");
end;


 
Игорь Шевченко ©   (2007-03-22 23:07) [26]

BiN ©   (22.03.07 23:04) [25]

Потрясающе!


 
BiN ©   (2007-03-22 23:09) [27]


> Игорь Шевченко ©   (22.03.07 23:07) [26]

Спасибо, не стоит )


 
VirEx ©   (2007-03-23 00:38) [28]

library GetBool;

uses
 SysUtils,
 Classes,
 windows;

const
TBoolStr : array[0..1] of string=("True","False");

type
TBoolType = (IsBoolean, IsNotBoolean);
TResult   = procedure (result:string) of object;

TBoolParser = class(TObject)
 FBool_:integer;
 constructor create;
 destructor  destroy;
 function GetBoolType:TBoolType;
 property Bool_: integer read FBool_ write FBool_;
end;

type
 TBooler = class(TThread)
 private
 FBool:string;
 //FBoolRes:TBoolStr;
 FParser:TBoolParser;
 FOnResult:TResult;
 protected
  procedure Execute; override;
 public
  constructor Create(s:string);
 published
  property OnResult: TResult read FOnResult write FOnResult;
end;

var
Booler:TBooler;

function IsBooleanOrNotBool(s:string;r:TResult):string;
begin
if Booler<>nil then Booler.Destroy;
Booler:=TBooler.Create(s);
Booler.OnResult:=r;
Booler.Resume;
end;

function IsRealyBoolean(b:boolean;r_:TResult):boolean; export
begin
 IsBooleanOrNotBool(IntToStr(Integer(b)),r_);
end;

constructor TBooler.Create(s: string);
begin
FBool:=s;
FParser:=TBoolParser.create;
with FParser do Bool_:=StrToInt(s);
inherited Create(True);

end;

procedure TBooler.Execute;
begin
 inherited;
 case FParser.GetBoolType of
 IsBoolean   :FOnResult(TBoolStr[0]);
 IsNotBoolean:FOnResult(TBoolStr[1]);
 end;
end;

{ TBoolParser }
constructor TBoolParser.create;
begin
FBool_:=0;
inherited Create;
end;

destructor TBoolParser.destroy;
begin
FBool_:=-1;
end;

function TBoolParser.GetBoolType: TBoolType;
begin
case FBool_ of
1:result:=IsBoolean;
0:result:=IsNotBoolean;
end;
end;

exports
 IsRealyBoolean;

begin
end.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TResult = procedure (s:string) of object;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 procedure Result(s: string);
 end;

var
 Form1: TForm1;

 function IsRealyBoolean(b:boolean;r_:TResult):boolean; external "GetBool.dll" name "IsRealyBoolean";
implementation

{$R *.dfm}
procedure TForm1.Result(s: string);
begin
MessageBox(0,PChar(s),"result",id_ok);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
IsRealyBoolean(true,Result);
end;
end.


 
Knight ©   (2007-03-23 00:59) [29]

if MessageDlg(UpperCase(BoolToStr(MyBool,True))+"=TRUE?",mtConfirmation,[mbYes,mbNo],0)=mrYes then ;


 
Gero ©   (2007-03-23 01:51) [30]

(***********************************************************)
(*                                                         *)
(*           TrueChecker.pas &#151; TTrueChecked Component      *)
(*                                        Version 1.0      *)
(*                                                         *)
(*                 Copyright © 2006 by Yanis Prasol      *)
(*                 All rights reserved.                    *)
(*                                                         *)
(***********************************************************)

unit TrueChecker;

interface

uses
Classes, SysUtils;

const
TrueValue = True;
NonTrueValue = not True;

type
TTrueFalseChanger = class(TObject)
public
 procedure SetTrue(var X: Boolean);
 procedure SetNonTrue(var X: Boolean);
 procedure SetNonTrueIfTrueAndSetTrueIfNonTrue(var X: Boolean);
end;

TTrueChecker = class(TComponent)
private
 FVariable: Boolean;
 function GetIsTrue: Boolean;
 procedure SetVariable(const Value: Boolean);
public
 constructor Create(AOwner: TComponent); override;
published
 property IsTrue: Boolean read GetIsTrue;
 property Variable: Boolean read FVariable write SetVariable default NonTrueValue;
end;

implementation

const
STrueSettingError = "Failed set variable value to true!";
SNonTrueSettingError = "Failed set variable value to non true!";
SNonTrueAndNonFalseError = "Boolean variable value is not true and not false!";
SDontUnderstandingError = "mmmmmmmmmmm&#133?";

{ TTrueFalseChanger }

procedure TTrueFalseChanger.SetTrue(var X: Boolean);
begin
repeat
 if (X <> TrueValue) or (X = NonTrueValue) then
   begin
     SetNonTrueIfTrueAndSetTrueIfNonTrue(X);
   end
 else
   raise Exception.Create(STrueSettingError);
until X = TrueValue;
end;

procedure TTrueFalseChanger.SetNonTrue(var X: Boolean);
begin
repeat
 if (X <> NonTrueValue) or (X = TrueValue) then
   begin
     SetNonTrueIfTrueAndSetTrueIfNonTrue(X);
   end
 else
   raise Exception.Create(SNonTrueSettingError);
until X = NonTrueValue;
end;

procedure TTrueFalseChanger.SetNonTrueIfTrueAndSetTrueIfNonTrue(var X: Boolean);
begin
if (X <> (X and not X)) = TrueValue then
 begin
   X := NonTrueValue;
 end
else if (X xor NonTrueValue) = NonTrueValue then
 begin
   X := TrueValue;
 end
else
 raise Exception.Create(SNonTrueAndNonFalseError);
end;

{ TTrueChecker }

function TTrueChecker.GetIsTrue: Boolean;
label
TrueLabel, FalseLabel;
var
TrueFalseChanger: TTrueFalseChanger;
begin
TrueFalseChanger := TTrueFalseChanger.Create;
try
 try
   if (FVariable = TrueValue) and (FVariable <> NonTrueValue) then
     begin
       goto TrueLabel;
     end
   else
     begin
       if (FVariable = NonTrueValue) and (FVariable <> TrueValue) then
         begin
           goto FalseLabel;
         end
       else
         raise Exception.Create(SDontUnderstandingError);
     end;
   TrueLabel:
   while (Result <> TrueValue) do
     TrueFalseChanger.SetTrue(Result);
   Exit;
   FalseLabel:
   while (Result <> NonTrueValue) do
     TrueFalseChanger.SetNonTrue(Result);
   Exit;
 except
   Result := NonTrueValue;
 end;
finally
 TrueFalseChanger.Free;
end;
raise Exception.Create(STrueSettingError);
end;

constructor TTrueChecker.Create(AOwner: TComponent);
begin
inherited;
FVariable := NonTrueValue;
end;

procedure TTrueChecker.SetVariable(const Value: Boolean);
begin
if FVariable <> Value then
 FVariable := Value;
end;

end.


Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
const
TestedValiable = True;
var
TrueChecker: TTrueChecker;
ResultValiable: Boolean;
begin
TrueChecker := TTrueChecker.Create(nil);
try
 TrueChecker.Variable := TestedValiable;
 ResultValiable := TrueChecker.IsTrue;
 if ResultValiable then
   ShowMessage("Variable is True!")
 else
   ShowMessage("Variable is False!");
finally
 TrueChecker.Free;
end;

end;


 
Германн ©   (2007-03-23 02:04) [31]

Это что? Соревнование в "переплюнивании" той самой функции IncDay?
:)


 
Loginov Dmitry ©   (2007-03-23 07:52) [32]

Что-то должно нету варианта с COM :)


 
Hero ©   (2007-03-23 09:49) [33]

валяюсь :DDDDDD


 
REA   (2007-03-23 09:56) [34]

А ведь еще не раскрыта тема SomeVar := Not(True = False) = True xor (Var = NotVar)...


 
REA   (2007-03-23 10:02) [35]

TExBoolean = (eTrue, eFalse, eIDontKnow, eIDontCare, eWhatIsThisFor, eSeemsTrue, eSeemsNotTrue, eNotKnownYet, eNeverTellSomeoneButItsTrue)


 
Virgo_Style ©   (2007-03-23 10:10) [36]

Мне кажется, гораздо изящнее будет после BoolToStr использовать регэкспы...


 
Gadenysh   (2007-03-23 12:22) [37]

через варианты можно сделать. и в сеттер\геттер - запись\чтение из файла. код лень писать))


 
Gadenysh   (2007-03-23 12:24) [38]


> Gero ©   (23.03.07 01:51) [30]


а где иконко в трее? не годится


 
Knight ©   (2007-03-23 13:39) [39]

А где сетевые технологии, зачатки ИИ... и прочее? :)


 
Карелин Артем ©   (2007-03-23 13:58) [40]

   public sealed class BeeChanger
   {
       public static bool toBee(bool Bee)
       {
           return (Bee.ToString().Equals(bool.TrueString));
       }

       public static bool nottoBee(bool Bee)
       {
           return (Bee.ToString().Equals(bool.FalseString));
       }
   }



Страницы: 1 2 вся ветка

Текущий архив: 2007.04.15;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.035 c
2-1174637885
Konst5719
2007-03-23 11:18
2007.04.15
DeleteString


2-1174586807
Kostya_
2007-03-22 21:06
2007.04.15
1c + Delphi


2-1175127004
Lavrenty
2007-03-29 04:10
2007.04.15
Курсор в TMemo


3-1169643338
LineSoft
2007-01-24 15:55
2007.04.15
Получение данных из хранимой процедуры


1-1170303300
APiC
2007-02-01 07:15
2007.04.15
реестр