1

Тема: WSH: работа с бинарными данными через ADODB.Stream на VBS

Привет как можна ета WSH: пример работы с бинарными данными через ADODB.Stream сделят наVBScript ...

2

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

armenxxx1
Ещё одно "ета" или "сделят", и будет бан.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

The gray Cardinal пишет:

armenxxx1
Ещё одно "ета" или "сделят", и будет бан.

К сожалению я Армении и я в настоящее время в Болгарии лучше понимать русский язык, но говорить/писать очен плохо.... извините исчо раз.

4

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Например, так:

<job>
    <script language="VBScript">
        Option Explicit
        
        Dim strText
        
        strText = getResource("pic")
        
        With New RegExp
            .Global  = True
            
            .Pattern = "\s"
            strText = .Replace(strText, "")
            
            .Pattern = "(.{2})"
            strText = .Replace(strText, "%$1")
        End With
        
        With CreateObject("ADODB.Stream") ' text stream in ISO-8859-1 charset
            .Type    = 2            ' binary mode
            .Charset = "ISO-8859-1" ' to avoid character conversion upper 127 ascii code
            .Open
            .WriteText Unescape(strText)
            .SaveToFile "c:\face.png", 2
            .Close
        End With
    </script>
    
    <resource id="pic">
        89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE0000000C504C54
        45F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E230178A53F760000
        014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E10115AF38361251D40
        4D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413900374022ECE37900BF3
        0D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C8000D0930A5D4A208D35658D61
        9069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74157362EE49B9417D1C1349172D
        636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81EBF74B1BC035E3B80215671DB267E1
        4AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F0BD4897F1A2C7606D43BC35F57D7857A
        1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575A32DD0439A0D7ADA70857846C00D4DF5034
        9D4C55A45D5B31B2F104231269D95D2DA12F317D96ABBA0BDE5692B9A3EA847AF1794654544EBAE9
        5AC7F103F62B06FEC580AB3F0000000049454E44AE426082
    </resource>
</job>

5

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Привет alexii извини но я не хорошо выразился я хочу скрипт целиком била написана VBScript (.vbs) заранее спасибо

6

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Скрипт целиком написан (точнее, переведён с JScript) на VBScript. Формат файла — *.wsf: WSH: пишем сценарии в формате WSF.

7

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

alexii пишет:

Скрипт целиком написан (точнее, переведён с JScript) на VBScript. Формат файла — *.wsf: WSH: пишем сценарии в формате WSF.

Это новая для меня большое спасибо

8 (изменено: armenxxx1, 2010-08-10 00:34:22)

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Другой метод без использования *.wsf только *.vbs

strText="89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE0000000C504C5445F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E230178A53F760000014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E10115AF38361251D404D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413900374022ECE37900BF30D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C8000D0930A5D4A208D35658D619069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74157362EE49B9417D1C1349172D636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81EBF74B1BC035E3B80215671DB267E14AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F0BD4897F1A2C7606D43BC35F57D7857A1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575A32DD0439A0D7ADA70857846C00D4DF50349D4C55A45D5B31B2F104231269D95D2DA12F317D96ABBA0BDE5692B9A3EA847AF1794654544EBAE95AC7F103F62B06FEC580AB3F0000000049454E44AE426082"
             
With New RegExp
    .Global  = True
    .Pattern = "\s"
    strText = .Replace(strText, "")
    .Pattern = "(.{2})"
    strText = .Replace(strText, "%$1")
End With
     
With CreateObject("ADODB.Stream") ' text stream in ISO-8859-1 charset
    .Type    = 2            
    .Charset = "ISO-8859-1" 
    .Open
    .WriteText Unescape(strText)
    .SaveToFile "face.png", 2
    .Close
End With

9

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

armenxxx1 пишет:

Другой метод без использования *.wsf только *.vbs

strText="89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE0000000C504C5445F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E230178A53F760000014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E10115AF38361251D404D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413900374022ECE37900BF30D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C8000D0930A5D4A208D35658D619069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74157362EE49B9417D1C1349172D636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81EBF74B1BC035E3B80215671DB267E14AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F0BD4897F1A2C7606D43BC35F57D7857A1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575A32DD0439A0D7ADA70857846C00D4DF50349D4C55A45D5B31B2F104231269D95D2DA12F317D96ABBA0BDE5692B9A3EA847AF1794654544EBAE95AC7F103F62B06FEC580AB3F0000000049454E44AE426082"
             
With New RegExp
    .Global  = True
    .Pattern = "\s"
    strText = .Replace(strText, "")
    .Pattern = "(.{2})"
    strText = .Replace(strText, "%$1")
End With
     
With CreateObject("ADODB.Stream") ' text stream in ISO-8859-1 charset
    .Type    = 2            
    .Charset = "ISO-8859-1" 
    .Open
    .WriteText Unescape(strText)
    .SaveToFile "face.png", 2
    .Close
End With

Привет как написать ета код на VBA...

10 (изменено: armenxxx1, 2010-10-26 15:45:55)

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Помогите написать код на VBA...

11

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Что-то наподобие:

Set objScriptControl = CreateObject("MSScriptControl.ScriptControl")
objScriptControl.Language = "VBScript"

strText = "89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE0000000C504C5445F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E230178A53F760000014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E10115AF38361251D404D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413900374022ECE37900BF30D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C8000D0930A5D4A208D35658D619069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74157362EE49B9417D1C1349172D636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81EBF74B1BC035E3B80215671DB267E14AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F0BD4897F1A2C7606D43BC35F57D7857A1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575A32DD0439A0D7ADA70857846C00D4DF50349D4C55A45D5B31B2F104231269D95D2DA12F317D96ABBA0BDE5692B9A3EA847AF1794654544EBAE95AC7F103F62B06FEC580AB3F0000000049454E44AE426082"
             
With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "\s"
    strText = .Replace(strText, "")
    .Pattern = "(.{2})"
    strText = .Replace(strText, "%$1")
End With
     
With CreateObject("ADODB.Stream") ' text stream in ISO-8859-1 charset
    .Type = 2
    .Charset = "ISO-8859-1"
    .Open
    .WriteText objScriptControl.Eval("UnEscape(""" & strText & """)")
    .SaveToFile "c:\face.png", 2
    .Close
End With

Set objScriptControl = Nothing

А необходимость? В VBA есть функции, умеющие непосредственно работать с бинарными файлами.

12

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

alexii Большое спасибо

Но после создания изображения не останавливается... добавил objScriptControl.quit(0) но выдает ошибка.

13

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Описывайте подробно, что Вы делаете.

14 (изменено: armenxxx1, 2010-10-27 20:00:22)

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

alexii пишет:

Описывайте подробно, что Вы делаете.

Видео... http://zalil.ru/29878024

15

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Ссылки оформляйте тэгом «url».

Это не VBA (Visual Basic for Application — внутренний язык Microsoft Office), а «чистый» VB (Visual Basic). Ну, и? Судя по ролику, всё работает. Что не так? Что Вы подразумеваете под:

Но после создания изображения не останавливается...

Автоматическое закрытие формы «Form1»?

16

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

alexii пишет:

Ссылки оформляйте тэгом «url».

Это не VBA (Visual Basic for Application — внутренний язык Microsoft Office), а «чистый» VB (Visual Basic). Ну, и? Судя по ролику, всё работает. Что не так? Что Вы подразумеваете под:

Но после создания изображения не останавливается...

Автоматическое закрытие формы «Form1»?

Извините отредактировал...

Да, я хочу "автоматическое закрытие формы «Form1»" Буду очень признателен если вы скажете мне

17

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Я точно не помню, но попробуйте в самый конец, перед «End Sub», добавить:

Unload Me

P.S. В принципе, можно обойтись совсем без формы.

18

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Прекрасно работает alexii спасибо

19

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Не получить то, что я хочу . Когда добавил больше код не получается создать *.png ...

видео... http://zalil.ru/29879647

20

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Лучше приведите сам код.

21

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

http://zalil.ru/29880414

22

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Слишком длинный текст.

23 (изменено: armenxxx1, 2010-10-28 19:58:16)

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Не можно разделить шестнадцатеричный код...

24

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Например так... Но я не знаю на VB как должен выглядеть...

strText="89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE000"&_
"0000C504C5445F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E23"&_
"0178A53F760000014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E1"&_
"0115AF38361251D404D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413"&_
"900374022ECE37900BF30D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C800"&_
"0D0930A5D4A208D35658D619069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74"&_
"157362EE49B9417D1C1349172D636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81E"&_
"BF74B1BC035E3B80215671DB267E14AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F"&_
"0BD4897F1A2C7606D43BC35F57D7857A1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575"&_
"A32DD0439A0D7ADA70857846C00D4DF50349D4C55A45D5B31B2F104231269D95D2DA12F317D96"&_
"ABBA0BDE5692B9A3EA847AF1794654544EBAE95AC7F103F62B06FEC580AB3F0000000049454E4"&_
"4AE426082"
             
With New RegExp
    .Global = True
    .Pattern = "s"
    strText = .Replace(strText, "")
    .Pattern = "(.{2})"
    strText = .Replace(strText, "%$1")
End With
     
With CreateObject("ADODB.Stream") ' text stream in ISO-8859-1 charset
    .Type = 2
    .Charset = "ISO-8859-1"
    .Open
    .WriteText Unescape(strText)
    .SaveToFile "face.png", 2
    .Close
End With

25

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Точно так же. Но ни WSH, ни VBА не осиливают подобную операцию (&) в заданном размере. «Отожрав» всю память, они, как правило, отваливаются по ошибке исполнения. В то же время, если хранить строку в обычном текстовом файле, считывать эту строку из текстового файла в переменную strText — никаких проблем, понятно, не возникает.

Вы можете озвучить конечную цель и необходимость именно такого решения Вашей задачи?

P.S. Почему бы для этих целей (Вы ведь пишете на «большом» языке, на VB) не использовать обычные ресурсы в проекте?!

26

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

alexii пишет:

Точно так же. Но ни WSH, ни VBА не осиливают подобную операцию (&) в заданном размере. «Отожрав» всю память, они, как правило, отваливаются по ошибке исполнения. В то же время, если хранить строку в обычном текстовом файле, считывать эту строку из текстового файла в переменную strText — никаких проблем, понятно, не возникает.

Вы можете озвучить конечную цель и необходимость именно такого решения Вашей задачи?

P.S. Почему бы для этих целей (Вы ведь пишете на «большом» языке, на VB) не использовать обычные ресурсы в проекте?!

alexii Моя идея заключается в создании несколько файлов из несколько шестнадцатеричный кодов не обязательно быть использованы скрипт выше... Глядя только на легкость без использования длинных VB кодов...

27

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Повторюсь: что мешает хранить бинарные файлы непосредственно в ресурсах?

28

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Можете ли вы дать пример...

29

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Не могу — у меня нет сейчас в наличии VB6.

30

Re: WSH: работа с бинарными данными через ADODB.Stream на VBS

Другой метод...   *.vbs


Data = "89504E470D0A1A0A0000000D4948445200000027000000420803000000E3443FEE0000000C504C5445F0EEEEF95353F59393FF04047F58B0FF000000097048597300002E2300002E230178A53F760000014249444154789CED955902C42008434DB8FF9DA7AD4BD9AC1C60FCAA363E10115AF38361251D404D27520242A40414290171EB0A409112F0F6AEE2E1C33A033BEA0C1CA413900374022ECE37900BF30D5494EBB380FB061AA7F6401AC41EE8CEB803D20176C007C76B1C8000D0930A5D4A208D35658D619069D28A3821E6CC60FB5E1013A2B679AB7CB7749B026F1A7ADB74157362EE49B9417D1C1349172D636DAF83F1DE7EEB3889F729E7B943EE7434B762CFA1269C81EBF74B1BC035E3B80215671DB267E14AABF523E6C57B46F3E315B6960BA16DC4B49E89A4F3282F0BD4897F1A2C7606D43BC35F57D7857A1375CF0DF9C297E87A6AF9040B3A2E9DAF48C11134575A32DD0439A0D7ADA70857846C00D4DF50349D4C55A45D5B31B2F104231269D95D2DA12F317D96ABBA0BDE5692B9A3EA847AF1794654544EBAE95AC7F103F62B06FEC580AB3F0000000049454E44AE426082"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileObj = FSO.CreateTextFile("face.png", True)
For i = 1 To Len(Data) Step 2
FileObj.Write Chr(CLng("&H" & Mid(Data,i,2)))
Next

И все же я не могу сделать VB