Добрый день!
Есть кусок кода:
var Done = false;
while (!Done) {
var Done = Cycle(FilePath, User, DateStr, TimeStr, PhonePart);
}
function Cycle(FilePath, User, DateStr, TimeStr, PhonePart) {
var fso2 = new ActiveXObject('Scripting.FileSystemObject');
var f2 = fso2.GetFolder('\\\\Pc230712\\sms');
var fc = new Enumerator(f2.Files);
for (; !fc.atEnd(); fc.moveNext())
{
var fl = fc.item();
if (fso2.GetBaseName(fl.Path)) {
var name = fso2.GetBaseName(fl.Path);
}
if (name == 'SEND' + User + DateStr + TimeStr + 'x' + PhonePart + 'done'){
Log.Write(1, 'TRUE!!!!!!');
return true;
}
}
System.Sleep(10000);
return false;
}
while (!Done) {
var Done = Cycle(FilePath, User, DateStr, TimeStr, PhonePart);
}
function Cycle(FilePath, User, DateStr, TimeStr, PhonePart) {
var fso2 = new ActiveXObject('Scripting.FileSystemObject');
var f2 = fso2.GetFolder('\\\\Pc230712\\sms');
var fc = new Enumerator(f2.Files);
for (; !fc.atEnd(); fc.moveNext())
{
var fl = fc.item();
if (fso2.GetBaseName(fl.Path)) {
var name = fso2.GetBaseName(fl.Path);
}
if (name == 'SEND' + User + DateStr + TimeStr + 'x' + PhonePart + 'done'){
Log.Write(1, 'TRUE!!!!!!');
return true;
}
}
System.Sleep(10000);
return false;
}
Функция сканирует папку, и пока нужный файл не появится, скрипт выполняется, но когда условие совпадает и функция должна возвратить true, Террасофт зависает прямо перед строчкой return true; Подскажите, что можно сделать в данной ситуации?
Нравится
3 комментария
24 июля 2012 10:59
Здравствуйте!
Пробовали ли Вы отладиться? На какой именно строке кода Террасофт зависает? Log.Write(1, 'TRUE!!!!!''); ?
И удалите "var" в цикле while:
var Done = false; while (!Done) { Done = Cycle(FilePath, User, DateStr, TimeStr, PhonePart); }
24 июля 2012 11:28
А лучше вообще одной строкой
while (!Cycle(FilePath, User, DateStr, TimeStr, PhonePart)) {}
24 июля 2012 12:22
Спасибо! Записал while одной строкой, вроде заработало. Поглядим что будет дальше.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать