• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

My.Settings e Application.StartupPath

23 mensagens neste tópico

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 :D abraço  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também não percebi. Mas não tem nada de mais. Gravas o que queres, e lês o que gravaste.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 ? :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não quero ser chato, mas com a minha biblioteca Easy Settings fazes isso facilmente :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :D

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 :P já digo algo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :P 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 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Acrescentado :P

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

Já tinha marcado :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tanto código para uma cena tão simples :X

Arranjas código mais simples e limpo? :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Arranjas código mais simples e limpo? :P

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas foi precisamente isso que eu critiquei. Eu nunca disse que a minha biblioteca fazia mais, apenas que fazia com código mais limpo e mais simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sinceramente só não utilizo a biblioteca pois tenho medo de sobrecarregar o programa com bibliotecas que apenas me vão simplificar o trabalho por um pouquinho, porque acho que é um desperdício de recursos. Mas se calhar até não é, pois não sou grande mestre nessa matéria eheh.

Nazgulled, podes dizer-me se valeria a pena neste caso, e se gastaria muitos recursos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não te sei dizer se valeria a pena ou não, isso és tu que sabes...

Agora, acho que tens é os conceitos um bocado trocados. Lá por ser uma biblioteca não gasta mais nem menos recursos que o teu código, é uma biblioteca porque está compilada num .dll. Mas é open-source, podes sacar o código e incluir na tua aplicação (conforme as regras da licença) e usar como se apenas incluísses o .dll, vai dar ao mesmo.

O código da mesma não faz nada de mais para gastar recursos a mais ou desnecessários e mesmo que tenha alguma diferença em relação ao teu código, será uma coisa mínima que por mais fraco que seja o teu sistema, nunca vais reparar a diferença entre a minha biblioteca e o teu código (salvo algum bug ainda por descobrir que provoque alta memory leak :D)

Eu fiz a biblioteca para simplificar todo o processo de utilização de settings em aplicações, principalmente para meu próprio uso. Que na minha opinião, não existia sistema tão versátil e de fácil utilização para guardar as definições em formato XML (não estou a dizer que é perfeito).

Mas a decisão é tua... Vê a documentação de ajuda que tem exemplos de como usar a biblioteca e vê se a simplicidade com que a usas te cativa, se não, continua com o teu código :)

0

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