Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Работа с ресурсами в VB .NET 2005 Добавлено: 16.04.08 23:59  

Автор вопроса:  Abriel
Будьте добры, подскажите! Как правильно и лаконично работать с ресурсами в NET? Например нужно во время выполнения изьять файл (и сохранить на жесткий диск), который ранее был добавлен в ресурсы проэкта???

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #1 Добавлено: 18.04.08 01:57
Обидно!!! В Который раз отвечаю сам себе! А вообще многие найдя ответ на свой вопрос - залупились, надули щеки и молча улыбаются, не то, чтобы поделиться с другими (а вот кому и пригодится). Ладно... Вот что я нашел (есть исходник проэкта - Автор: Егоров Никита (aka C...R...a...S...H - e-mail: crash.smolensk@mail.ru).
Может кто еще поделится соображениями по поводу работы с файлом ресурсов в VB.NET???

Процедура получения ресурса, который прикреплен к проекту. Для этого ресурса в поле свойства "Build Action" необходимо выбрать "Embedded Resource".

Dim res As IO.Stream 'Объявление потока данных
'Загрузка ресурса в поток данных
res = Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("useResources.Computer.ico";)
'Изменение иконки главной формы
Me.Icon = New Icon(res)
'Закрытие потока данных
res.Close()
'Загрузка картинки прикрепленной к проекту
res = Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("useResources.Штукатурка.bmp";)
picIcon.Image = Image.FromStream(res)
res.Close()


Процедура получения ресурсов, которые находятся в файле resTest.resx прикрепленном к проекту. Для этого файла в поле свойства "Build Action" необходимо выбрать "Embedded Resource".

Dim rm As New Resources.ResourceSet((Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("useResources.resTest.resources";)))
'Получение строки с именем "q1"
MsgBox(rm.GetString("q1";))
'Освобождение ресурсов
rm.Close()
rm.Dispose()


Процедура получения ресурсов, которые находятся в файле ресурсов данной формы. Этот файл можно посмотреть, выбрав в меню пункт Project/Show All Files.

Dim rm As New Resources.ResourceManager(GetType(Form1))
'Получение строки с именем "$this.Name"
'Изменение ресурсов формы не сохраняются, если вы производите какие-либо манипуляции с ней
MsgBox(rm.GetString("$this.Name";))


Процедура получения ресурсов, которые находятся в файле resTest2.resources этот файл должен быть расположен в том же каталоге что и исполняемый файл. Конвертация файлов из ResX в Resources производится утилитой ResGen.exe.

Dim rm As New Resources.ResourceSet("resTest2.resources";)
MsgBox(rm.GetString("101";))
rm.Close()
rm.Dispose()


Процедура получения ресурсов, которые находятся в файле resXTest.resx этот файл должен быть расположен в том же каталоге что и исполняемый файл.

Dim rm As New Resources.ResXResourceSet("resXTest.resx";)
MsgBox(rm.GetString("101";))
rm.Close()
rm.Dispose()


Процедура загрузки ресурсов из ресурсов прикрепленного к проекту. Имя файла обязательно должно быть таким "ProjectResources.resx"
Что бы использовать эту функцию необходимо подключить сборку Microsoft.VisualBasic.Compatibility
Название строки должно начинаться с "str" потом следовать номер ресурса. Например, в моем проекте называется str101
Для загрузки ресурса используют только номер.

MsgBox(Microsoft.VisualBasic.Compatibility.VB6.LoadResString(101))

Ответить

Номер ответа: 2
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #2 Добавлено: 04.05.08 15:47
а через My.Resources не пробовал работать? Без бубнов и танцев )))

Ответить

Номер ответа: 3
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #3 Добавлено: 04.05.08 21:45
:-)))))) улыбнуло!
Этот код актуален был наверное для FW 1.0 максимум 1.1 Оглянись, уже 3.5 на дворе!
Отстаете, батенька! :-)

Ответить

Номер ответа: 4
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #4 Добавлено: 06.05.08 23:47
:) Негодяи! Посмеялись с меня! :) А пример никто привести не может! Как изъять любой файл с русурсов на HDD используя My.Resources?

Ответить

Номер ответа: 5
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #5 Добавлено: 07.05.08 01:19
Вот нашел два способа, как думаете, возможно еще лаконичней?
System.IO.File.WriteAllBytes("c:\newfile.exe", My.Resources.ResExeFile)

' The file that you add to the project has to have the Build Action
' property changed to "Embedded Resource" for this to work. This will
add the file
' to the project as a resource and not a compiled item.
'

Dim ResStream As System.IO.Stream

' This is the name of your applications namespace followed by the name
of the file that's embedded.
' So if your namespace is "MyProject" and the name of the file is
' the value for the sResPath would be "MyProject.BlankDatabase.mdb".

Dim sResPath As String = "AnimalControl.db.mdb"
Dim NewFilePathName As String = sPath
Dim numBytesRead As Integer = 0
' Get the Embedded Resource
ResStream =
System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(sResPath)
Dim numBytesToRead As Integer = CInt(ResStream.Length)
Dim bytes(ResStream.Length) As Byte
While numBytesToRead + 1 > 0
Dim n As Integer = ResStream.Read(bytes, numBytesRead, numBytesToRead)
' The end of the file has been reached.
If n = 0 Then
Exit While
End If
numBytesRead += n
numBytesToRead -= n
End While
' Save the resource to file
Dim fs As New FileStream(NewFilePathName, FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()

Ответить

Номер ответа: 6
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #6 Добавлено: 07.05.08 08:13
нужно во время выполнения изьять файл (и сохранить на жесткий диск), который ранее был добавлен в ресурсы проэкта

Ответить

Номер ответа: 7
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #7 Добавлено: 07.05.08 08:18
Ты сам ответил на свой вопрос :-))
Первый вариант вполне рабочий.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам