Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизСо всеми прошедшими и наступающими!!! Найти похожие ветки
← →
zdm © (2007-01-09 09:41) [0]vog> ищу в электронном виде "Написание KERNEL-драйверов под win32 для чайников"
alekzander> win32 уже и на чайниках появилось?
← →
zdm © (2007-01-09 09:43) [1]<gram|work> про индийский код
<gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
<gram|work> bool b;
<gram|work> b = false;
<gram|work> if (b == true){...}
<gram|work> Это децкий лепет
<gram|work> ИТАК, ПЕРВОЕ МЕСТО
<gram|work> Знакомый говорит что нашел только что в коде:
<gram|work> if (b.ToString().length < 5){...}
← →
clickmaker © (2007-01-09 14:01) [2]
> <gram|work> if (b.ToString().length < 5){...}
индусы конечно философы, но не настолько же?
это напоминает "как узнать завтрашнюю дату"
Sleep(24*60*60*1000);
D := Date;
← →
Gero © (2007-01-09 15:27) [3]> [1] zdm © (09.01.07 09:43)
(***********************************************************)
(* *)
(* TrueChecker.pas — TTrueChecked Component *)
(* Version 1.0 *)
(* *)
(* Copyright © 2006 by Yanis Prasol *)
(* All rights reserved. *)
(* *)
(***********************************************************)
unit TrueChecker;
interface
uses
Classes, SysUtils;
const
TrueValue = True;
NonTrueValue = not TrueValue;
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…?";
{ 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;
← →
Ega23 © (2007-01-09 15:29) [4]
> Gero © (09.01.07 15:27) [3]
ProgressBar не прикрутил на время проверки.
Низачот. :о)
← →
clickmaker © (2007-01-09 15:29) [5]
> [3] Gero © (09.01.07 15:27)
Жжошь!
Срочно всем инстоллить на палитру и фтыкать в свои проги!
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.053 c