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

Вниз

in в VBScript   Найти похожие ветки 

 
zzzzzz   (2009-03-10 11:39) [0]

Как в VBScript написать условие проверки вхождения числа в диапазон, что-то типа 3 in [1..9]


 
brother ©   (2009-03-10 11:43) [1]

i:=3;
if (i>=1) and (i<=9) then


 
zzzzzz   (2009-03-10 11:46) [2]


> brother ©   (10.03.09 11:43) [1]

ну а если диапазон задан как: 5, 8, 11, 6, 14


 
Skyle ©   (2009-03-10 11:51) [3]

A = 7
select case A
 case 5, 8, 11, 6, 14 MsgBox "In"
 case else MsgBox "out"
end select


 
Palladin ©   (2009-03-10 11:53) [4]

это не диапазон, это набор значений

if (i=5) or (i=8) or (i=11) or (i=6) or (i=14) then


 
clickmaker ©   (2009-03-10 11:54) [5]

Or


 
zzzzzz   (2009-03-10 11:56) [6]


> A = 7select case A  case 5, 8, 11, 6, 14 MsgBox "In"  case
> else MsgBox "out"end select


Thanks. А как через VBScript проверить принадлежит ли число диапазону используя MSScriptControl.ScriptControl  

Поправьте где я ошибаюсь:


function Calc(const CalcStr: AnsiString): AnsiString;
var
 ScriptCtrl: Variant;
begin
 ScriptCtrl := CreateOleObject("MSScriptControl.ScriptControl");
 ScriptCtrl.Language := "VBScript";

 Result := ScriptCtrl.Eval(CalcStr);

 ScriptCtrl := Unassigned;
end;

procedure TForm1.btn_CalcClick(Sender: TObject);

 resourcestring
   s1 = "select case 2 case 5, 8, 11, 6, 14 MsgBox "In" case else MsgBox "out" end select";

begin
 Caption := Calc(s1);
end;


 
Palladin ©   (2009-03-10 12:04) [7]

интересно, и зачем это делать через MSScriptControl, когда delphi предоставляет для этой операции такой замечательный инструмент как множество?


 
zzzzzz   (2009-03-10 12:10) [8]

Пишу анализатор логических выражений. Для этого как раз подходит MSScriptControl.ScriptControl (выражение ниже, например, анализируется на ура). Проблема в том, что выражение может быть вида 2 in [5,6,9] (Delphi). Из-за незнания как это переделать в VBScript и спрашиваю.  

Вот наброски:

function Calc(const CalcStr: AnsiString): AnsiString;
var
 ScriptCtrl: Variant;
begin
 ScriptCtrl := CreateOleObject("MSScriptControl.ScriptControl");
 ScriptCtrl.Language := "VBScript";

 Result := ScriptCtrl.Eval(CalcStr);

 ScriptCtrl := Unassigned;
end;

procedure TForm1.btn_CalcClick(Sender: TObject);

 resourcestring
   s = "(("abc" = "abc") and ("ABC" = "ABC")) and ((1 < 7) and (5 = 5))";

begin
 Caption := Calc(s1);
end;


 
Skyle ©   (2009-03-10 12:11) [9]


> zzzzzz   (10.03.09 11:56) [6]

Можно, например, так.

procedure TForm1.Button1Click(Sender: TObject);

 function Calc(const CalcStr: AnsiString): AnsiString;
 var
  ScriptCtrl: Variant;
 begin
  ScriptCtrl := CreateOleObject("MSScriptControl.ScriptControl");
  ScriptCtrl.Language := "VBScript";

  ScriptCtrl.AddCode(CalcStr);
  Result := ScriptCtrl.Eval("InRange(7)");

  ScriptCtrl := Unassigned;
 end;

const
S1 = "function InRange(Value) "#13#10 +
 "select case Value "#13#10 +
    "case 5, 8, 11, 6, 14 InRange=true "#13#10 +
    "case else InRange = False "#13#10 +
    "end select "#13#10 +
    "end function";

begin
 Caption := Calc(S1);
end;


Только действительно, необходимость пока неочевидна.



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

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

Наверх




Память: 0.49 MB
Время: 0.007 c
2-1238486856
Handle
2009-03-31 12:07
2009.05.10
проверка вхождения строки без учета регистра


15-1236184377
It's not me
2009-03-04 19:32
2009.05.10
Можно определить, что адрес является широковещательным?


2-1238069200
dis12345
2009-03-26 15:06
2009.05.10
редактировать stringgrid


15-1236501285
Юрий
2009-03-08 11:34
2009.05.10
С днем рождения ! 7 марта 2009 суббота


3-1220519388
greg123
2008-09-04 13:09
2009.05.10
Можно ли в запросе заменить названия столбцов на их описание?