Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

JScript: прочитать файл в бинарном виде

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ю_рий



Зарегистрирован: 25.09.2005
Сообщения: 10

СообщениеДобавлено: Сб Июн 07 2008 20:34    Заголовок сообщения: JScript: прочитать файл в бинарном виде Ответить с цитатой

Мне нужно прочитать файл в бинарном виде. Я пытался это сделать так:

<script>
function f_a(){
fs=new ActiveXObject("Scripting.FileSystemObject")
f=fs.OpenTextFile("C:\\W\\qq.gif",1);
x=f.readAll();
f.Close();
te_xt=""
for(i=0;i<x.length;i=i+1){
y=x.charCodeAt(i)
y=y.toString(16)
te_xt+=y+" "}
alert(te_xt)}
</script>
<input type="button" value="f_a" onClick="f_a()">

Этот скрипт правильно работает, только не для любого кода байта. Вот, что нашёл на эту тему в интернете:
==============================================
результат будет правильным, только если значение этого байта не превосходит 0x7f - JScript работает со строками в юникоде и функций для определения ASCII-кода символа в нём нет.
Но если то же самое сделать на VBScript:

Byte=Asc(f.Read(1))

то всё работает правильно (правда, если перед этим не было вызовов SetLocale).
Т.е. можно на VBScript написать функцию ReadByte() и затем вызывать её из JScript-сценария:

<SCRIPT language='VBScript'>
Function ReadByte(File)
ReadByte=Asc(File.Read(1))
End Function
</SCRIPT>
==============================================
К сожалению, я не знаком с VBscript, поэтому сам не разберусь. Нужно прочитать файл в бинарном виде и передать результаты чтения для дальнейшей обработки в переменную в Javascript

Подскажите, пожалуйста, как это можно сделать.

И вот, ещё нашёл:
==============================================
Наверно можно обойтись и одним JScript'ом, если открывать файл как юникодовский и потом отрезать лишний байт. Вот это вроде бы работает.

path="C:\\test\\test.dbf"; // Путь к файлу.
n=12; // Номер байта (считая с нуля).

fso=new ActiveXObject("Scripting.FileSystemObject");
with (fso.OpenTextFile(path, 1, false, true))
Skip(n>>>1), text=Read(1), Close();

byte=(text.charCodeAt(0) & 0xff<<8*(n&1)) >>> 8*(n&1);

WScript.Echo(byte);
-----------------------------
Для вывода результата в 16-ричном виде заменил последнюю строку на
WScript.Echo(byte.toString(0x10).toUpperCase());
==============================================
P.S. Это работает тоже не совсем так, но здесь дана идея открывать файл как юникодовский и отрезать байт.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
iv250973



Зарегистрирован: 30.11.2007
Сообщения: 12

СообщениеДобавлено: Пн Июл 28 2008 11:10    Заголовок сообщения: Ответить с цитатой

Имей ввиду, что твой код будет работать тока под виндой.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...