2015-01-15 4 views
1

Мне нужна помощь здесь, у меня кончились идеи. Мне нужно сделать в следующем коде, чтобы иметь возможность выбрать файл из проекта (My.resources), вместо HardCoding этой строки FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length) Мне хотелось бы иметь возможность передать выбранное значение, но я не могу магазин My.Resources._1_5 в байтовую переменную, он продолжал говорить, не может хранить 1 мерный массив байтов в байт. _1_5 - файл doc, и у меня есть длинный список файлов, которые я хочу выбрать.Отправить конкретные значения для BinaryWriter

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) 

Не уверен, что я объясняю себя.

+0

Это переменная Byte(), а не байтовая переменная. –

ответ

0

Если, как это, скорее всего, в случае, свойство 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.

+0

Выполнено запросов: D Большое спасибо за помощь! Извините за поздний ответ – JavierM

Смежные вопросы