Войти

Показать полную графическую версию : Работа с файлами (Не считываются данные из файла)


AnaStas
17-09-2008, 22:17
Пожалуйста проконсультируйте.
При загрузки HTML-страницы два массива должны заполниться данными из двух файлов. Однако только один из них
(все равно какой!) загружает соответствующий массив. Ощущение такое, что функция обрабатывающая второй файл, после отработки первого просто игнорируется. Коллеги, в чем здесь особенность? ActiveXObject позволяет открывать (не одновременно, а после закрытия предыдущего) несколько файлов?
Заранее спасибо.

pva
18-09-2008, 06:48
где код? может в коде ошибка?

AnaStas
18-09-2008, 10:29
Так выглядит страница .shtml:
<script type="text/javascript" src="func2.js"></script>
<script type="text/javascript">
...
<!--
// ========создаем массив записей групп каналов
var grp_arr = new Array(); var chn_arr = new Array();
var file = new ActiveXObject("Scripting.FileSystemObject");
loadGrp(); loadChn();
// ==========================================================

//-->
</script>
...

Функции loadGrp(); loadChn(); обращаются к файлу func2.js.
Вот их коды:

// Функция загрузки списка групп каналов
function loadGrp() {
var grpfile = file.OpenTextFile("groups.txt",1);
var flag="false"; var grplong=0;
for (i=0; flag="false"; i++){
grp_arr[i] = new Array();
grplong = parseInt(grpfile.readLine());
for (j=0; j<grplong; j++){
grp_arr[i][j] = new Array()
for (k=0; k<3; k++){
grp_arr[i][j][k] = grpfile.readLine();
flag=grpfile.atEndOfStream;
}
}
grp_arr[i][0][0]=parseInt(grp_arr[i][0][0]);
}
grpfile.Close();
}
// Функция загрузки списка всех каналов
function loadChn() {
var chnfile = file.OpenTextFile("chanels.txt",1);
var flag="false";
for (i=0; flag="false"; i++){
chn_arr[i] = new Array();
for (j=0; j<3; j++){
chn_arr[i][j] = chnfile.readLine();
flag=chnfile.atEndOfStream;
}
chn_arr[i][0]=parseInt(chn_arr[i][0]);
}
chnfile.Close();
}

AnaStas
19-09-2008, 16:23
Ошибка действительно в коде:function loadGrp() {
var grpfile = file.OpenTextFile("groups.txt",1);
var flag="false"; var grplong=0;
for (i=0; flag="false"; i++){
... »
Как видете flag="false" строковое значение, а должно быть булевое false, да и оператор for возможно у меня не к месту, а если уж использую, то желательно, чтобы было так:
for (i=0; false; i++). Рекомендуют вместо for использовать while.
Так как код заработал, тему можно считать закрытой.
Спасибо за внимание и помощь.




© OSzone.net 2001-2012