none
Como acessar os arquivos da pasta Resources via código RRS feed

  • Pergunta

  • Tenho algumas imagens importadas para a pasta Resource, gostaria de saber como faço para acessar uma dessas imagens via código, de modo que quando eu compilar o programa, o mesmo não dê erro de path? 

    Havia tentado desta forma, mas só funciona no debug: picturebox1.image = system.drawing.image.FromFile("..\..\Resources\image1.jpg")

    Quero que após o setup também seja possível acessar a mesma.

    Também, gostaria de acessar um arquivo de texto, do mesmo modo, sem dar erro de path, após o programa ser instalado em um PC.

     


    Neo-_-
    terça-feira, 15 de fevereiro de 2011 13:09

Respostas

  • Olá Neo, é bem simples:

     picturebox1.image = My.Resources.image1


    []s.

    Alan Cossari.

    Twitter Facebook
    • Sugerido como Resposta Alan Cossari terça-feira, 15 de fevereiro de 2011 13:55
    • Não Sugerido como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 14:10
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 13:11
  • Não deu certo, ele nem acha este comando, server, aparece: "Error 1 'Server' is not declared. It may be inaccessible due to its protection level. D:\Praticas VB10\Feitos por mim\Cópia de DEMEPEPORIS\Form2.vb 19 37 DEMEPEPORIS"

     

    Preciso apenas fixar o arquivo de texto após a instalação em algum lugar e poder acessá-lo (localização), sendo que o usuário só precise instalar o programa e fique tudo certo, rodando numa boa..


    Neo-_-
    1. Dim f As String =Resources.abc.txt
    2. Dim sr As StreamReader
    3. sr = File.OpenText(f)
    4. Dim strAllTheText = sr.ReadToEnd()

    Just Be Humble Malange!
    terça-feira, 15 de fevereiro de 2011 14:21
    Moderador
  • Pelo que disse no segundo post, o você adicionou na pasta diretamente, porém não está associado com os arquivos do Projeto.

    Você tem que clicar com o botão direito sobre o seu projeto e ir em Properties.

    do lado esquerdo Resources.

    O primeiro botão superior da tela que irá abrir está marcado Images, Clique na setinha ao lado e altere para Files.

    É ai que você deve adicionar o seu arquivo texto.


    []s.

    Alan Cossari.

    Twitter Facebook
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 16:59
  • @Neo, fiz um pequeno exemplo para você.

    Criei um Formulário Form1 Fiz o que descrevi no post acima para adicionar o arquivo Texto no Resources. Em seguinda inclui uma label que receberá o conteúdo do Arquivo Texto

    Agora para Ler utilize o seguinte código:

    Imports System.IO
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Pegando seu Assembly.
        Dim executing_assembly As System.Reflection.Assembly = Reflection.Assembly.GetEntryAssembly()
    
        ' Pegando seu NameSpace.
        Dim my_namespace As String = executing_assembly.GetName().Name.ToString()
    
        ' Carregando o arquivo texto.
        Dim text_stream As Stream = executing_assembly.GetManifestResourceStream(my_namespace _
          + ".Teste.txt")
        If Not (text_stream Is Nothing) Then
          Dim stream_reader As New StreamReader(text_stream)
          Label1.Text = stream_reader.ReadToEnd()
          stream_reader.Close()
        End If
    
      End Sub
    
    End Class
    

    Você terá que alterar uma propriedade para que isto funcione.

    Note que na Solution Explorer foi criada uma pasta chamada Resources.

    Expanda o nó e você verá todos os arquivos que ela contém.

    Selecione o seu arquivo texto e abra a Janela Properties.

    Nesta janela a primeira propriedade é Build Action Altere para Embedded Resource e Pronto.

    Funcionou perfeitamente.

    Espero que ajude.


    []s.

    Alan Cossari.

    Twitter Facebook
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 18:14

Todas as Respostas

  • Olá Neo, é bem simples:

     picturebox1.image = My.Resources.image1


    []s.

    Alan Cossari.

    Twitter Facebook
    • Sugerido como Resposta Alan Cossari terça-feira, 15 de fevereiro de 2011 13:55
    • Não Sugerido como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 14:10
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 13:11
  • Obrigado, a imagem deu certo, e como faço para acessar o arquivo de texto?

    O arquivo de texto eu apenas salvei manualmente nesta pasta.


    Neo-_-
    terça-feira, 15 de fevereiro de 2011 13:43
  • Obrigado, a imagem deu certo, e como faço para acessar o arquivo de texto?

    O arquivo de texto eu apenas salvei manualmente nesta pasta.


    Neo-_-
    http://www.vbforums.com/showthread.php?t=396129
    Just Be Humble Malange!
    • Sugerido como Resposta Alan Cossari terça-feira, 15 de fevereiro de 2011 13:55
    • Não Sugerido como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 14:10
    terça-feira, 15 de fevereiro de 2011 13:54
    Moderador
  • Não deu certo, ele nem acha este comando, server, aparece: "Error 1 'Server' is not declared. It may be inaccessible due to its protection level. D:\Praticas VB10\Feitos por mim\Cópia de DEMEPEPORIS\Form2.vb 19 37 DEMEPEPORIS"

     

    Preciso apenas fixar o arquivo de texto após a instalação em algum lugar e poder acessá-lo (localização), sendo que o usuário só precise instalar o programa e fique tudo certo, rodando numa boa..


    Neo-_-
    • Editado Neo-_- terça-feira, 15 de fevereiro de 2011 14:10 Acrescentar informação
    terça-feira, 15 de fevereiro de 2011 14:06
  • @Neo

    No seu caso seria o caminho em que esta o ficheiro texto e nao server.

     


    Just Be Humble Malange!
    terça-feira, 15 de fevereiro de 2011 14:20
    Moderador
  • Não deu certo, ele nem acha este comando, server, aparece: "Error 1 'Server' is not declared. It may be inaccessible due to its protection level. D:\Praticas VB10\Feitos por mim\Cópia de DEMEPEPORIS\Form2.vb 19 37 DEMEPEPORIS"

     

    Preciso apenas fixar o arquivo de texto após a instalação em algum lugar e poder acessá-lo (localização), sendo que o usuário só precise instalar o programa e fique tudo certo, rodando numa boa..


    Neo-_-
    1. Dim f As String =Resources.abc.txt
    2. Dim sr As StreamReader
    3. sr = File.OpenText(f)
    4. Dim strAllTheText = sr.ReadToEnd()

    Just Be Humble Malange!
    terça-feira, 15 de fevereiro de 2011 14:21
    Moderador
  • Apareceu isto:  "Error    1    'Texto' is not a member of 'Resources'. "

    ler o arquivo de arquivo de texto eu sei, o que quero é apenas armazená-lo em meu projeto, de forma que após a publicação o mesmo já seja instalado e eu possa importá-lo para o meu projeto, através de seu caminho. Para que o usuário apenas precise instalar o programa para que o mesmo funcione corretamente.

    Grato pela ajuda.


    Neo-_-
    terça-feira, 15 de fevereiro de 2011 16:40
  • Pelo que disse no segundo post, o você adicionou na pasta diretamente, porém não está associado com os arquivos do Projeto.

    Você tem que clicar com o botão direito sobre o seu projeto e ir em Properties.

    do lado esquerdo Resources.

    O primeiro botão superior da tela que irá abrir está marcado Images, Clique na setinha ao lado e altere para Files.

    É ai que você deve adicionar o seu arquivo texto.


    []s.

    Alan Cossari.

    Twitter Facebook
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 16:59
  • Entendi, Obrigado. Agora deu certo.

    Porém este comando não é bem localização, ele já está retornando o conteudo do arquivo de texto.

    Dim Texto As String = My.Resources.Texto 'Aqui ele não está armazenando um caminho e sim o conteúdo, da para mim fazer uma adaptação, mas o que eu estava precisando agora era do caminho, para mim utilizar em outras funções e não o conteúdo. O que devo fazer?
    ?


    Neo-_-
    terça-feira, 15 de fevereiro de 2011 17:24
  • @Neo, fiz um pequeno exemplo para você.

    Criei um Formulário Form1 Fiz o que descrevi no post acima para adicionar o arquivo Texto no Resources. Em seguinda inclui uma label que receberá o conteúdo do Arquivo Texto

    Agora para Ler utilize o seguinte código:

    Imports System.IO
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Pegando seu Assembly.
        Dim executing_assembly As System.Reflection.Assembly = Reflection.Assembly.GetEntryAssembly()
    
        ' Pegando seu NameSpace.
        Dim my_namespace As String = executing_assembly.GetName().Name.ToString()
    
        ' Carregando o arquivo texto.
        Dim text_stream As Stream = executing_assembly.GetManifestResourceStream(my_namespace _
          + ".Teste.txt")
        If Not (text_stream Is Nothing) Then
          Dim stream_reader As New StreamReader(text_stream)
          Label1.Text = stream_reader.ReadToEnd()
          stream_reader.Close()
        End If
    
      End Sub
    
    End Class
    

    Você terá que alterar uma propriedade para que isto funcione.

    Note que na Solution Explorer foi criada uma pasta chamada Resources.

    Expanda o nó e você verá todos os arquivos que ela contém.

    Selecione o seu arquivo texto e abra a Janela Properties.

    Nesta janela a primeira propriedade é Build Action Altere para Embedded Resource e Pronto.

    Funcionou perfeitamente.

    Espero que ajude.


    []s.

    Alan Cossari.

    Twitter Facebook
    • Marcado como Resposta Neo-_- terça-feira, 15 de fevereiro de 2011 19:24
    terça-feira, 15 de fevereiro de 2011 18:14
  • Era exatamente isto que eu queria, muito obrigado pela ajuda.

    A minha intenção aqui é aprender, se não for encomodo, será que você poderia me explicar o que cada linha e/ou comando está fazendo (quais são suas funções, para que serve)?


    Neo-_-
    • Editado Neo-_- terça-feira, 15 de fevereiro de 2011 19:23 Erro de escrita
    terça-feira, 15 de fevereiro de 2011 19:22