Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

JCQS

Preencher ComboBox - Distribuição do programa

Mensagens Recomendadas

JCQS    0
JCQS

Necessito de preencher uma ComboBox com parte de um ficheiro de texto :

Extracto de Código:

======================================================================================================

Public Class Form1
  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim W0 As String = "" : Dim W1 As String = ""
    Dim UNIDADE As String = Microsoft.VisualBasic.Left(CurDir(), 1) & ":" 'Teoricamente a unidade em que o programa irá ser instalado
    '------------------- VERSÃO 1 ----------------------------------------------------------------------
    'FileOpen(1,"\VBG10\DIV\VENDED.TXT", OpenMode.Input)
    'Do Until EOF(1)
    'Input(1, W0) : Input(1, W1) : Input(1, W0) : Input(1, W0)
    'ComboBox1.Items.Add(W1)
    'Loop
    'FileClose(1)
    '-------------------- VERSÃO 2 ---------------------------------------------------------------------
    FileOpen(1, "D:\VBG10\DIV\VENDED.TXT", OpenMode.Input)
    Do Until EOF(1)
      Input(1, W0) : Input(1, W1) : Input(1, W0) : Input(1, W0)
      ComboBox1.Items.Add(W1)
    Loop
    FileClose(1)
    '--------------------- VERSÃO 3 --------------------------------------------------------------------
    'FileOpen(1, UNIDADE & "\VBG10\DIV\VENDED.TXT", OpenMode.Input)
    'Do Until EOF(1)
    'Input(1, W0) : Input(1, W1) : Input(1, W0) : Input(1, W0)
    'ComboBox1.Items.Add(W1)
    'Loop
    'FileClose(1)
    '-----------------------------------------------------------------------------------------
  End Sub
End Class

===========================================================================================================

As três versões funcionam dentro do VB 2010.

Porém quando faço «PUBLISH» e instalo noutro computador só a "VERSÃO 2" funciona. A «VERSÃO 1» e a «VERSÃO 3» dão erro (O ficheiro «VENDED.TXT» não é encontrado !!!)

Ora isso é muito limitativo pois quem instalar o programa poderá não o querer fazer no disco «D:»

Haverá maneira de ultrapassar esta limitação ?

====«VENDED.TXT»=================================================

1,"JOSÉ GOMES                                        ",0,"JG ARTES GRÁFICAS              "

2,"ANTÓNIO GIRÃO                                    ",0,"JG ARTES GRÁFICAS              "

4,"SECÇÃO ORÇAMENTOS                                ",0,"JG ARTES GRÁFICAS              "

================================================================

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

A limitação é apenas tua :(

FileOpen(1, My.Application.Info.DirectoryPath & "\DIV\VENDED.TXT", OpenMode.Input)

Partindo do início que DIV é uma pasta na raiz da aplicação.

Já existem inúmeros posts a tratar exactamente disto.

Procura utilizar a pesquisa sempre que possível.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JCQS    0
JCQS

Talvez não me tenha explicado bem ...

O meu problema não é preencher a ComboBox

O que desejava e não consigo é :

Entregar a pasta «Application Files»  e os ficheiros «Programa.application» «setup.exe» criados pelo «Publish» do VB 2010, a alguém (possivelmente com ainda menos conhecimentos informáticos que eu)  para ser instalado em qualquer unidade de disco ou até numa Pen

E sobre esse assunto, francamente não encontrei nada publicado ...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

A solução que te dei nada tem a haver com o preenchimento da ComboBox.

Tu explicaste bem: precisas que, independentemente de onde a aplicação está instalada, consigas aceder ao ficheiro VENDED.TXT.

Pois bem, a  minha solução mantém-se.

My.Application.Info.DirectoryPath é substituído por o caminho absoluto, desde a raíz até à pasta da aplicação.

Não interessa se instalas no D: ou no Z: ou numa hierarquia de 100 pastas.

Só tens de garantir que o tal ficheiro existe no restante caminho, neste caso, ao colocar:

My.Application.Info.DirectoryPath & "\DIV\VENDED.TXT"

E se tivesse a tua aplicação instalada em D:\Coisas\Cenas\Ceninhas

Quando essa linha fosse executada ficaria automaticamente:

"D:\Coisas\Cenas\Ceninhas" & "\DIV\VENDED.TXT"

Que no final fica um caminho absoluto para o teu ficheiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JCQS    0
JCQS

Quando estou a programar, o ficheiro está em «D:\VBG10\DIV\VENDED.TXT»  e qualquer das versões funciona bem.

Quando copio («Application Files»  «Programa.application» «setup.exe» e «\VBG10\DIV\VENDED.TXT)  para outro computador e executo, acontece o seguinte:

Se colocar na unidade D: 

FileOpen(1, "\VBG10\DIV\VENDED.TXT", OpenMode.Input)  -->    ERRO

FileOpen(1, "D:\VBG10\DIV\VENDED.TXT", OpenMode.Input)  --> OK

FileOpen(1,  UNIDADE &"\VBG10\DIV\VENDED.TXT", OpenMode.Input)  --> ERRO   (UNIDADE = Microsoft.VisualBasic.Left(CurDir(), 1) & ":" )

Se colocar na unidade K: 

FileOpen(1, "\VBG10\DIV\VENDED.TXT", OpenMode.Input)  -->    ERRO

FileOpen(1, "D:\VBG10\DIV\VENDED.TXT", OpenMode.Input)  --> ERRO

FileOpen(1, "K:\VBG10\DIV\VENDED.TXT", OpenMode.Input)  --> OK

FileOpen(1,  UNIDADE &"\VBG10\DIV\VENDED.TXT", OpenMode.Input)  --> ERRO   (UNIDADE = Microsoft.VisualBasic.Left(CurDir(), 1) & ":" )

Como não se sabe em que unidade o utilizador final instala ou virá a instalar o programa, o indicar a «unidade de disco» no código do programa não parece ser solução viável.

Poder-se-ia obrigar a colocação de «VENDED,TXT»  em «C:\VENDED.TXT» por exemplo, mas gostaria mais de uma solução que quando se executasse o programa numa Pen , não ficasse o ficheiro no computador ...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade