Chegamos ao final deste minicurso de C#. Para encerrá-lo, vamos continuar trabalhando no formulário frmSobre apenas por uma questão prática. O objetivo aqui será deixar que o usuário personalize a imagem que será exibida na PictureBox e claro que um programa comercial não permitiria tal operação, mas apenas para que aprendamos como gerar e ler arquivos texto, o exemplo neste formulário será propício. Faremos, também, com que o sistema carregue automaticamete a imagem escolhida sempre que este formulário for aberto. Para isso teremos que salvar o nome do arquivo que contém a foto, bem como o caminho até a pasta em que ele se encontra. Nós até poderíamos armazenar isso em um arquivo RTF, que já sabemos como criar, mas vamos aumentar nosso horizonte de conhecimentos! Agora vamos criar um arquivo TXT contendo essa informação, pois assim aprenderemos também a lidar com algumas ferramentas do Namespace System.IO.

Bem, como primeiro passo vamos inserir este Namespace em nossa aplicação, no formulário frmSobre, da seguinte forma:

Escrevendo e lendo arquivos texto C#

Feito isso vamos criar uma variável global, privada, que armazenará o caminho do arquivo, da seguinte forma:

Escrevendo e lendo arquivos texto C#

Agora vamos localizar o melhor ponto para obtermos o nome do arquivo de imagem selecionado pelo usuário, que é o indicado pela imagem abaixo:

Escrevendo e lendo arquivos texto C#

O ponto é o indicado pela flecha, no método FileOk da ferramenta OpenFileDialog. Bem, mas por que eu escolhi este ponto e não outro qualquer? Acontece que neste ponto podemos facilmente obter o caminho do arquivo através do método FileName do "ofdLogo", presente no comando logo acima. Para conseguir isso faremos a seguinte inserção:

Escrevendo e lendo arquivos texto C#

Com isso teremos, na variável strCaminhoArquivo, o caminho do arquivo selecionado pelo usuário. Na sequência faremos alterações no código referente ao botão "Salvar" do frmSobre. O primeiro passo será remover o código que faz o salvamento do RichTextBox, afinal de contas agora ele já está gerado e é somente leitura. Portanto, as linhas a serem removidas são:

Escrevendo e lendo arquivos texto C#

O código a ser inserido é:

Escrevendo e lendo arquivos texto C#

Comentando-o, teremos:

Escrevendo e lendo arquivos texto C#

Aqui vale uma importante observação: claro que verificar se um arquivo existe, apagá-lo e cria-lo novamente apenas para armazenarmos uma pequena informação de configuração não é a estratégia mais profissional, no entanto o objetivo aqui foi, “pegando carona” no tópico anterior sobre a geração de arquivos RTF, fazer uma pequena demonstração de como gerar arquivos TXT também. Em C# existem classes e dezenas de métodos para manipulação de dados em arquivos que nos permitiriam fazer de tudo o que imaginássemos com os dados, evitando essa exclusão desnecessária, no entanto a parte de manipulação de arquivos daria um minicurso, então não coloquemos foco nisso agora. Quis fazer este comentário apenas para que não fique a impressão de que essa estratégia utilizada é a única que temos. Repito que não é e ela sequer é boa, mas eu a utilizei para demonstrar a criação de um arquivo TXT que, para o nosso exemplo, apenas fará o armazenamento do endereço da imagem selecionada pelo usuário com o logotipo da aplicação.

Bem, mas vamos continuar...

Vou definir como logotipo um arquivo que tenho na minha área de trabalho, chamado Logo.png.

Escrevendo e lendo arquivos texto C#

Agora vou abrir o arquivo c:\CB\Config.txt

Escrevendo e lendo arquivos texto C#

Aí está o correto endereço do arquivo selecionado como logotipo, no entanto ele ainda não é carregado automaticamente, assim como acontece com o conteúdo do RichTextBox.

Vamos criar o código para isso. Para efetuarmos a leitura de um arquivo texto, devemos fazer uso da classe StreamReader(ou TextReader). Através dela poderemos ler um arquivo e gerar uma sequência de caracteres, que pode ser armazenada em uma variável do tipo string.

A forma de utilização é bastante simples. Como queremos que a ação de leitura e preenchimento da PictureBox aconteça quando o formulário for carregado, vamos inserir, no método Load do mesmo, o seguinte comando:

Escrevendo e lendo arquivos texto C#

Comentando-o, teremos:

Escrevendo e lendo arquivos texto C#

Agora vamos executar a aplicação e abrir o formulário de “Sobre o Programa” para ver o que acontece...

Escrevendo e lendo arquivos texto C#

Aí está o nosso logotipo automaticamente carregado!

No entanto, vamos tentar alterar a imagem e salva-la, apenas para testar mais uma vez e termos a certeza de que tudo funciona bem. Vejamos o que acontece quando eu tento selecionar outra imagem qualquer e clico no botão "Salvar"...

Escrevendo e lendo arquivos texto C#

Ooops! Não funcionou! Pois é, mas isso já era esperado. Vejam que a mensagem que o Visual C# nos retorna é que o arquivo Config.txt não pode ser acessado por já estar aberto. Isso acontece porque no método Load do formulário estamos usando o objReader para efetuar a leitura do arquivo Config.txt e ele permanece “lendo” o arquivo, ou seja, permanece aberto e vinculado ao objReader, por isso quando tentamos fazer a alteração do conteúdo, não é possível. Isso é extremamente fácil de resolver! A classe StreamReader possui um método camado Dispose, que é responsável por liberar os recursos utilizados pelo objeto, que no nosso exemplo é o objReader, e outro chamado Close, que fecha o objeto.

Vamos inseri-los após a colocação do endereço na variável strTemp, como ilustra a imagem abaixo:

Escrevendo e lendo arquivos texto C#

Com essa pequena alteração podemos evitar aquele erro, já que o arquivo Config.txt estará liberado pela aplicação após a leitura e o formulário funcionará corretamente!

Agora, para evitar que o usuário tente salvar um endereço vazio, vamos alterar a propriedade Enabled do botão btnSalvar para "False", e habilitá-la para "True" somente quando uma foto for selecionada, no seguinte trecho de código:

Escrevendo e lendo arquivos texto C#

Fazendo isso, o botão "Salvar" somente estará habilitado após o usuário ter selecionado um arquivo de imagem para a PictureBox.

Com isso encerramos o minicurso de C#. Vocês encontrarão outros tópicos em seções como a "Dicas/Tutoriais", que são totalmente aleatórios, apenas envolvendo assuntos que achei interessantes. Recomendo que vocês os leiam também e, para encerrar por completo, acessem a página de Comentários, que é o tópico seguinte.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.


Considerando todas as adaptações de jogos de videogame para o cinema, a mais bem sucedida foi Lara Croft: Tomb Raider, lançado em 2001 e que faturou 274 milhões de dólares. Ele foi dirigido por Simon West e estrelado pela bela Angelina Jolie.


Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.


A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


Utilizar seu notebook em camas, sofás ou qualquer superfície macia pode obstruir as entradas e saídas de ar, elevando a temperatura e provocando danos a diversos componentes. Utilize-o sempre sobre uma superfície rígida. Saiba mais aqui.


O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.


O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.


Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.


O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.


O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.


A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.