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

iagb

Vector de strings para guardar num ficheiro .txt

15 mensagens neste tópico

Preciso de criar um vector de strings que me permita guardar texto num ficheiro de texto, em visual basic 2005.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes começar por criar uma Lista de Strings e adicionar as strings que queres.

Depois para guardar no ficheiro txt tens várias opções:

- escreves em modo de texto uma a uma.

- serializas em modo binário, mas depois n fica um txt legivel fora da aplicação .net

Para a mim, a melhor solução para o caso seria n guardar num txt, mas sim num xml.

Utilizando XmlSerialization.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigada mas, assim como devo fazer fazer????? XmlSerialization???????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Preciso de criar um vector de strings que me permita guardar texto num ficheiro de texto, em visual basic 2005.

Não percebi a pergunta. Queres um vector que te permita guardar texto num ficheiro? Ou queres guardar o texto que se encontra no vector num ficheiro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu estou a criar um bloco de notas, e quero guardar as minhas notas num ficheiro de texto, e pensei que seria melhor guardá-las num vector de strings, mas não sei se é a melhor opção.

O que achas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existem várias maneiras de guardar dados. Uma delas é gravar em texto.

Para guardares um vector de strings num ficheiro é bastante simples.

Dá uma olhadela ao seguinte método: File.WriteAllLines (Se o usares não te esqueças de incluir o "System.IO").

Quanto à questão se é a melhor opção ou não, depende daquilo que queres fazer.

Pessoalmente guardo bastantes dados em formato de texto, uma vez que é prático e simples.

Claro que existem outros métodos, mais práticos e úteis, como XML. É uma questão de analisares o problema e escolher uma opção.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oki. E obrigada... Vou tentar, mas não está muito fácil....

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Passo a explicar: estou a criar um bloco de notas, ou seja, um editor de text, no qual se tomam notas e se guardam para se poderem consultar outra seja no mesmo formulário.

O formulário em Visual Basic tem dois paineis, um que permite o registo de notas em tempo real e outro onde aparecem apenas as notas que existem.

Para guardar as notas que tenho quero usar um vector de strings, mas não sei bem como....

Não sei o que fazer. Bloqueio total

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então mas qual é o problema mesmo?

Supondo, por exemplo, que introduzes o texto numa RichTextBox, basta aceders à propriedade .Text para obteres o texto introduzido. Podes fazer isto cada vez que é adicionada uma nota.

Se o texto for muito longo convém usares uma StringBuilder para guardar o mesmo, em vez de um vector de strings. Aliás, não estou a ver muito bem qual a vantagem de usar um vector aqui.

Posteriormente só tens que guardar o texto, por exemplo, através do método File.WriteAllText, isto supondo que queres gravar num ficheiro de texto. Depois podes usar apenas um ou vários ficheiros de texto para as várias notas, isso depende de como queres gerir os teus dados.

Para ler uma nota é fazeres o processo inverso, isto é, lês do ficheiro para uma StringBuilder (File.ReadAllText) e colocas na RichTextBox (ou onde quiseres).

Será mais ou menos isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim percebi o que queres dizer, mas eu tenho dois panel: um no qual registo as notas e outro onde tenhos apenas as notas. O panel é que me está a bloquear....

Será que podes esclarecer-me?! E mais uma vez obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas não estou a perceber...qual é o teu problema afinal?

Em baixo está uma simples aplicação que mostra texto numa label em 4 painéis diferentes.

Design:

capturelh.png

Código (C#):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "Painel 1\nNotas 1";
            label2.Text = "Painel 2\nNotas 2";
            label3.Text = "Painel 3\nNotas 3";
            label4.Text = "Painel 4\nNotas 4";
        }
    }
}

Resultado final:

capturemd.png

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quase que ajuda, porque o que se pretende e pegando no exemplo que me deu, é agora eu clicar por exemplo em "Notas 1" e aparecer uma nota (uma frase) associada a essa nota, como se fosse um link, por exemplo.

Percebes? E mais uma vez obrigado pela ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem...aqui vai uma mini aplicação com as operações simples que queres (acho eu):

Design:

91313150.png

Código (C#):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Carregar notas
            string[] notas = { "Nota 1", "Nota 2", "Nota 3", "Nota 4" };
            comboBox1.Items.AddRange(notas);
            comboBox1.SelectedIndex = 0;

            //Actualizar ultima nota
            ActualizarUltimaNota();
        }

        //Actualizar ultima nota
        private void ActualizarUltimaNota()
        {
            Label_Ultima.Text = (string) comboBox1.Items[comboBox1.Items.Count - 1];
        }

        //Mostrar nota
        private void Label_Mostra_Click(object sender, EventArgs e)
        {
            string nota = (string) comboBox1.SelectedItem;
            MessageBox.Show(nota);
        }

        //Adicionar nota
        private void Label_Nova_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                comboBox1.Items.Add(textBox1.Text);
                textBox1.Clear();
            }

            ActualizarUltimaNota();
        }
    }
}

Resultado final:

70640932.png

Podes sacar também o projecto se quiseres. Vai em C# 2010.

Download projecto (C# 2010)

Cumps

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