Отправить конкретные значения в BinaryWriter
Мне нужна помощь, у меня кончились идеи. Мне нужно сделать в следующем коде, чтобы иметь возможность выбрать файл из проекта (My.resources), а не HardCoding этой строки FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length)
Я хотел бы иметь возможность передать выбранное значение, но я не могу сохранить My.Resources._1_5
в байтовую переменную он продолжал говорить, что не может хранить одномерный массив байтов в байтах. _1_5 - это файл документа, и у меня есть длинный список файлов, из которых я хочу выбрать.
Dim TempFileName As String = "TMPDoc.doc"
Dim TempFolder As String = My.Computer.FileSystem.SpecialDirectories.Temp
Dim path As String = Application.StartupPath & "\"
TempFileName = path & TempFileName
Dim FS As New System.IO.FileStream(TempFileName, IO.FileMode.Create, FileAccess.Write)
Dim FSR As New System.IO.BinaryWriter(FS)
FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length)
FSR.Close()
FS.Close()
appWord.Documents.Open(TempFileName)
Не уверен, объясняю ли я себя.
1 ответ
Если, как наиболее вероятно, My.Resources._1_5
свойство выставляется как байтовый массив, тогда вы можете просто создать переменную байтового массива, чтобы указать на него, например так:
Dim resource_1_5() As Byte = My.Resources._1_5
Или вы можете создать список байтовых массивов и добавить его в список, например так:
Dim resources As New List(Of Byte())()
resources.Add(My.Resources._1_5)
Однако то, что вы действительно пытаетесь сделать, это просто получить доступ к ресурсу по строковому имени, а не через конкретное свойство. Если это так, вы можете получить его по имени через ResourceManager
, как это:
Dim resource_1_5() As Byte = DirectCast(My.Resources.ResourceManager.GetObject("_1_5", My.Resources.Culture), Byte())
Обратите внимание, что в приведенном выше примере GetObject
метод возвращает Byte
массив, но он бросает его как Object
, Поэтому вам нужно использовать DirectCast
или же CType
бросить его обратно в Byte
массив.