Jump to content

Recommended Posts

Posted

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              "

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

Posted

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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

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 ...

Posted

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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

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 ...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.