Jump to content

My.Settings e Application.StartupPath


Ivo Pereira
 Share

Recommended Posts

Boas pessoal,

é o seguinte, precisava de guardar o seguinte registo num Setting:

Application.StartupPath & "\screens" (ufolderscreens - nome da setting | PS: tá guardado como String)

Guardar, guardo facilmente, agora por exemplo se o for ler com isto:

        txt_folderscreens.Text = My.Settings.ufolderscreens

Vai-me aparecer exactamente o que está acima, não retornando o valor imposto pelo Application.StartupPath.

Gostaria de saber o que tenho de alterar para que tal apareça. O tipo como guardo, não sei.

Agradeço ajuda 😄 abraço  😛

Link to comment
Share on other sites

Mostra o código. Acho que deve ser assim para funcionar:

My.Settings.ufolderscreens = Application.StartupPath & "\screens"

O problema é que provavelmente o valor do ufolderscreens vai ser alterado, por isso não tem lógica estar a pôr isso no código, porque assim sempre que fosse executado ele alteraria o valor.

Link to comment
Share on other sites

Bom, vou-me tentar explicar.

Imagina, tens um programa que vai gravar certas imagens por defeito numa pasta, correcto?

O programa sempre que iniciar, vai verificar uma Setting, para preencher um campo, onde podes alterar o caminho actual onde vais guardar as imagens (e que nesse campo mostra o actual).

Como tal, é preciso que o campo, na primeira vez que inicie, deixe que o valor default seja Application.StartupPath & "\screens", mas posteriormente poder ser alterado.

Percebeste agora ? 😛

Link to comment
Share on other sites

Hmm...se queres um valor Default, então podes criá-lo quando crias o setting, nas propriedades da aplicação. Se reparares existe uma caixa de texto na tabela dos settings...são os valores Default.

Uma vez alterado o setting, é criado um ficheiro de configuração com os novos settings e o valor Default vai à vida.

"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Link to comment
Share on other sites

Eu acho que percebi.

Tu estás literalmente a meter Application.StartupPath & "\screens" na setting não estás?

Em primeiro lugar, podes fazer o que pretendes, deixando a setting vazia bastando depois fazeres um teste no arranque do tipo:

If My.Settings.ufolderscreens=String.Empty Then
    txt_folderscreens.Text = My.Application.StartupPath & "\screens"
Else
    txt_folderscreens.Text = My.Settings.ufolderscreens
End If

A lógica é empregar o caminho "default" caso a setting não contenha valor.

Depois de lhe ser atribuído um valor, já não volta para a "default".

Em segundo lugar, quando dizes que determinada cadeia de caracteres são uma String, não é efectuado qualquer parsing no que está entre as aspas.

Uma String que contenha Application.StartupPath & "\screens" tem a mesma validade que teres uma label com o texto Application.StartupPath & "\screens"... É texto.

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"

Link to comment
Share on other sites

Hmm...se queres um valor Default, então podes criá-lo quando crias o setting, nas propriedades da aplicação. Se reparares existe uma caixa de texto na tabela dos settings...são os valores Default.

Uma vez alterado o setting, é criado um ficheiro de configuração com os novos settings e o valor Default vai à vida.

A minha pergunta não era bem essa 😄

porque é exatamente isso que eu tenho, o problema é que como o que tenho lá dentro é Application.StartupPath & "/screens", no código, se eu for ler a setting que o contém, vai-me ler como string, e não me vai retornar o startuppath.

ribeiro55, chegaste lá 🙂 vou experimentar como disseste, mas sim é essa a lógica 😛 já digo algo.

Link to comment
Share on other sites

Eu acho que percebi.

Tu estás literalmente a meter Application.StartupPath & "\screens" na setting não estás?

Agora já percebi o problema.

A sugestão do ribeiro55 é uma boa sugestão e talvez a ideal, uma vez que previne que sempre que não seja encontrado o ficheiro de configuração a aplicação tenha sempre um path default para escolher.

"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Link to comment
Share on other sites

Agora já percebi o problema.

A sugestão do ribeiro55 é uma boa sugestão e talvez a ideal, uma vez que previne que sempre que não seja encontrado o ficheiro de configuração a aplicação tenha sempre um path default para escolher.

Ok, funcionou às mil maravilhas 😛 fiquei com o código assim:

        If My.Settings.uscreensfolder = String.Empty Then
            txt_folderscreens.Text = Application.StartupPath & "\screens"
            My.Settings.uscreensfolder = Application.StartupPath & "\screens"
        Else
            txt_folderscreens.Text = My.Settings.uscreensfolder
        End If

Abraço e obrigado 😄

Link to comment
Share on other sites

E mais.

Deverias, no arranque, determinar se esse caminho ainda se encontra válido.

FileIO.FileSystem.DirectoryExists(caminho) devolve-te um boolean.

BTW, marca o tópico como solved. Não se esqueçam!

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"

Link to comment
Share on other sites

Arranjas código mais simples e limpo? 😛

Isso é subjectivo... Mas na minha opinião, a minha biblioteca permite um código muito mais limpo e simples de ler do que utilizar esses ifs para cada setting. Claro, que se só tens de fazer isso uma vez, tudo bem, mas pessoalmente continuo a preferir a minha solução que acho muito melhor organizada.

@MilitisChristus

Lê uns posts atrás...

Link to comment
Share on other sites

Isso é subjectivo... Mas na minha opinião, a minha biblioteca permite um código muito mais limpo e simples de ler do que utilizar esses ifs para cada setting. Claro, que se só tens de fazer isso uma vez, tudo bem, mas pessoalmente continuo a preferir a minha solução que acho muito melhor organizada.

@MilitisChristus

Lê uns posts atrás...

Eu estava a par do tópico.

Mas no fundo a tua biblioteca faz o que foi feito aqui...o código está lá na mesma. É só por uma questão de organização e clareza.

Cumps

"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Link to comment
Share on other sites

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
 Share

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