Jump to content
Sign in to follow this  
iagb

Vector de strings para guardar num ficheiro .txt

Recommended Posts

iagb

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

Share this post


Link to post
Share on other sites
bruno1234

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.


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Share this post


Link to post
Share on other sites
Ziwdon

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?


"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)

Share this post


Link to post
Share on other sites
iagb

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?

Share this post


Link to post
Share on other sites
Ziwdon

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.


"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)

Share this post


Link to post
Share on other sites
iagb

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

Share this post


Link to post
Share on other sites
Ziwdon

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?


"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)

Share this post


Link to post
Share on other sites
iagb

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.

Share this post


Link to post
Share on other sites
Ziwdon

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


"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)

Share this post


Link to post
Share on other sites
iagb

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.

Share this post


Link to post
Share on other sites
Ziwdon

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


"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)

Share this post


Link to post
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
Sign in to follow this  

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