Главная страница
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.008 c
15-1236692439
Тимохов
2009-03-10 16:40
2009.05.10
Проверьте, пожалуйста, в Дельфи 2009


4-1209369334
Dmitry_177
2008-04-28 11:55
2009.05.10
Теуцщая позиция в файле


2-1238154785
Andra
2009-03-27 14:53
2009.05.10
Как получить данные с другого приложения?


2-1238312668
Rom1988
2009-03-29 11:44
2009.05.10
Загрузить файл в TMemoryStream под другим именем


15-1236693437
DillerXX
2009-03-10 16:57
2009.05.10
Помогите с .htaccess