powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / open for binary для VBScript
15 сообщений из 15, страница 1 из 1
open for binary для VBScript
    #35659215
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
'save to file
Open "c:\a2.xml" For Binary As # 1 
Put # 1 , , s
Close # 1 
при записи размер  1 .8M


'get from file
Open "c:\a2.xml" For Binary As # 1 
get # 1 , , s
Close # 1 
(преобразование и запись)
эти работает для VB6


нашёл функции для VBscript
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Function ReadBinaryFile(FileName)
     Const adTypeBinary =  1 
     Dim BinaryStream
     Set BinaryStream = CreateObject("ADODB.Stream")
     BinaryStream.Type = adTypeBinary
     BinaryStream.Open
     BinaryStream.LoadFromFile FileName
     ReadBinaryFile = BinaryStream.Read
     BinaryStream.Close
     Set BinaryStream = Nothing
  End Function

Function SaveBinaryData(FileName, Text)
     Const adTypeBinary =  1 
     Const adTypeText =  2 
     Const adSaveCreateOverWrite =  2 
     Dim BinaryStream As ADODB.Stream
     Set BinaryStream = CreateObject("ADODB.Stream")
     BinaryStream.Type = adTypeBinary
     BinaryStream.Open
     With CreateObject("ADODB.Stream")
        .Type = adTypeText
        .Open: .WriteText Text
        .position =  2 
        .CopyTo BinaryStream, Len(Text) *  2 
        .Close
     End With
     BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
     BinaryStream.Close
     Set BinaryStream = Nothing
End Function
при записи в данном случае размер файла увеличивается в 2 раза(Unicode)
но конечные файлы совпадают
как изменить код процедур чтобы размер файла при записи не увеличивался

пытался изменить код тогда при чтении файл не верный
(это нужно для компресии текста)
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35659445
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите здесь support.microsoft.com
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
     With CreateObject("ADODB.Stream")
        .Type = adTypeText
        .Charset = "ascii"
        .Open: .WriteText Text
        .Position =  0 
        .CopyTo BinaryStream, Len(Text)
        .Close
     End With
и ещё здесь стоит почитать
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660233
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не срабатывает
файл при записи действительно уменьшился как при Open for binary
но когда прочитываю преобразую и записываю
то файл не соответствуют исходному а Open for binary работает
то ли проблема при записи то ли при чтении из Stream
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660666
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если использовать FileSystemObject
Код: plaintext
1.
2.
3.
4.
5.
    Dim fso As FileSystemObject
    Dim fl As TextStream
    
    Set fl = fso.OpenTextFile("")
    ...
    fl.Write
I
Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660698
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал не то не текст
я использую алгоритм LWZ для сжатия текста и соответсвенно для декомпрессии
для VB6 работает open for Binary для получения и для и для записи

в VBscript этого нет а хотел бы
fso.OpenTextFile только для текста

через stream работает если через Unicode
но размер увеличивается в 2 раза в отличии от open for Binary

если без Unicode то при чтении и декомпрессии файл не тот

вот это мне нужно победить
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660708
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя использую алгоритм LWZ

после этого еще BASE64 применяй и тогда проблем нет, при обратном преобразовании декодь из BASE64 сначала,а потом уже из LWZ
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660745
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BASE64 может увеличить размер файла
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660761
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зато вы избавитесь от проблем в ASCII-кодировке
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35660807
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это то же самое что с UNICODE
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35661383
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael R,

Ох Михаил, а зачем создавать бинарные файлы в VBS? Совершенно не могу представить смысл этой задачи. Но если сильно хочется, из готовых решений могу предложить использовать DynaWrap
http://freenet-homepage.de/gborn/WSHBazaar/WSHDynaCall.htm
Оно тебе даст доступ ко всему Виндовому API, в том числе и к CreateFile, WriteFile, etc.

Но я на 90% уверен что тебе на самом деле совершенно не нужно делать бинарный файл напрямую из VBS.
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35661419
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да мне всё равно бинарный файл или нет
факт что нужно сжать файл записать что бы много места не занимал и переслать на хост
на хосте сделать всё наоборот
если есть решение как преобразованный сжатый файл сохранить кроме как через open for binary и при
возможность открыть в VBscript и преобразовать обратно
то с радостью приму
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35661534
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael Rнужно сжать файл записать что бы много места не занимал и переслать на хост
на хосте сделать всё наоборот
Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub CreateComressed
   Dim sh, fso, MyFile
   Set sh = WScript.CreateObject ("WSCript.Shell")
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyFile = fso.CreateTextFile("testfile.txt", True)
   MyFile.WriteLine("This is a test.")
   MyFile.Close
   sh.Run "gzip -9 testfile.txt",  0 , true
   fso.MoveFile "testfile.txt.gz", "//shared_folder/testfile.txt.gz"
End Sub
Вместо gzip можешь взять любой другой архиватор. Но если речь идет о http-хостах, то браузеры сами умеют gz открывать. Их не нужно будет распаковывать перед выкладкой или пересылкой.
Ну а если нужна ручная распаковка, то точно так-же, запускаешь сначала распаковку через sh.Run потом работаешь с обычными файлами.


И вообще, Михаил, VBS это средство манипуляции файлами а не данными. А судя по твоим задачам, тебе давно пора уже за Perl браться. У него и с регулярными выражениями намного лучше чем в VB* и с файлами он прекрасно работает, да и вообще он намного мощнее.
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35661840
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создание файлов на хосте исключено нет прав(только чтение)
и установка dll тоже не выйдет
сжатый файл должен идти через FTP
там должен открываться преобразовываться и отправляться в базу

мне всё что нужно найти аналог open for binary для VBScript хотя бы для чтения
для записи годиться open for binary
через open for binary сжатие в 4 раза
через Stream(UNICODE) только в 2
через Stream(без UNICODE) файлы не соответсвуют друг другу

вот собственно говоря описание проблемы
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35662017
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael Rсоздание файлов на хосте исключено нет прав(только чтение)Если запрещено создавать файлы, как ты собираешься создавать упакованные файлы? Если разрешено создавать упакованные файлы, то почему вдруг нельзя создавать промежуточные распакованные?

michael Rмне всё что нужно найти аналог open for binary для VBScriptЭто ты найдешь только тогда, когда сам напишешь свой собственный VBScript. Ну нету там команды open, нету. Вообще нету.
...
Рейтинг: 0 / 0
open for binary для VBScript
    #35662206
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упаковка на клиенте там есть VB
на хосте только распаковка (прочитать файл в переменную и расжать файл создавать не надо)
сам текст это данные для базы к которой я так же не могу обратиться на прямую только на хосте
аналог open for binary для VBScript есть через Stream но работа с ним не то (как писал раньше )
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / open for binary для VBScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]