Help visual C# doet raar.

  • Onderwerp starter Onderwerp starter Agap
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Agap

Gebruiker
Lid geworden
1 nov 2010
Berichten
40
Allereerst wat er fout gaat:

1: Doormiddel van vak opslaan heb ik 3 vakken toegevoegd:
c052e4c9a516bf891edd75fb427d79ff.png

De inhoud van de listboxVakken wordt ook in een .txt opgeslagen:
ecd82b30bd726ec2cbfc7ce632ac866c.png


2: Doormidel van vak opslaan een nieuwe vak "Biologie" toegevoegd, dit gaat prima:
9481ea691ece0b285d89670843a03e7f.png

adb36f130fcef7b8eb0d051c260d88db.png


3: Doormidel van verwijderen heb ik Wiskunde verwijderd
18b54a60e284f9d55ec07af75ad2a60d.png

e209f1ba250354d774480c54648f37ec.png


4: Als ik nu doormiddel van vak opslaan een nieuwe vak "CKV " toevoeg, krijg ik dit als output:
8ce12bebad2e94e5c9c91f0832b80d17.png

11253e512081d198417e94519e4c598c.png


Zoals u ziet, wordt er van CKV alleen maar de C weergegeven in de listBoxVakken, en in de .txt bestand wordt er na iedere letter een spatie toegevoegd.

Ik ben hier de hele dag mee bezig, maar kom maar niet mee uit. Waar gaat het fout?
probleem is waarschijnlijk dat er spaties tussen de letters komen, maar als ik in mijn code kijk, dan zie ik dat echt nergens in terug komen.

Kan iemand mij vertellen waar de fout zit?

Alvast bedankt,

Mijn code:
Code:
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;
using System.IO;
using System;
using System.Text.RegularExpressions;

namespace CijfersV4
{
    public partial class Form1 : Form
    {
        bool bestaat;
        string line, linee;//lijnen voor vakken en cijfers;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            lezen();
            lezenCijfers();
            StreamWriter sw = new StreamWriter("Vakken.txt", true, Encoding.Unicode);
            StreamWriter sw2 = new StreamWriter("Cijfers.txt", true, Encoding.Unicode);
            sw.Write("");
            sw2.Write("");
            sw.Close();
            sw2.Close();
        }

        //Opslaan Vakken!!!
        private void opslaan_Click(object sender, EventArgs e)
        {
            checkBestaat();
            listBoxLegenVak();

            try
            {

                StreamWriter sw = new StreamWriter("Vakken.txt", true, Encoding.Unicode);
                if (textBoxVak.Text == "")
                {
                    label7.Text = "Geen vak ingevoerd!";
                    sw.Close();
                }
                else if (bestaat == true)
                {
                    label7.Text = "Deze vak bestaat al";
                    sw.Close();
                }
                else if (bestaat == false)
                {
                    string vak = textBoxVak.Text;
                    sw.WriteLine(vak);
                    sw.Close();

                }
                lezen();
            }

            catch (Exception ee)
            {
                label7.Text = "Exception: " + ee.Message;
                Console.WriteLine("Exception: " + ee.Message);
            }
        }
        //Opslaan cijfer
        private void CijferOpslaan_Click(object sender, EventArgs e)
        {

            listBoxLegenCijf();//eerst listbox legen
            string vak = "";
            if (listBoxVakken.SelectedItem != null)
            {
                vak = listBoxVakken.SelectedItem.ToString();// geselecteerde vak voor cijfer plakken
            }
            try
            {

                StreamWriter sw = new StreamWriter("Cijfers.txt", true, Encoding.Unicode);
                if (textBoxCijf.Text == "")
                {
                    label7.Text = "Geen cijfer ingevoerd!";
                    sw.Close();
                }
                else if (vak == "" && textBoxVak.Text == "")
                {
                    label7.Text = "Selecteer eerst een vak uit de vakken lijst, of vul een nieuwe vak in bij vak";
                    sw.Close();
                }
                else if (textBoxVak.Text != "")
                {
                    label7.Text = "";
                    sw.WriteLine(textBoxVak.Text + " " + textBoxCijf.Text);
                    textBoxVak.Text = "";
                    textBoxCijf.Text = "";
                    sw.Close();
                }
                else
                {
                    label7.Text = "";
                    sw.WriteLine(vak + " " + textBoxCijf.Text);
                    textBoxCijf.Text = "";
                    sw.Close();
                }
                sw.Close();
                lezenCijfers();
            }

            catch (Exception ee)
            {
                label7.Text = "Exception: " + ee.Message;
                Console.WriteLine("Exception: " + ee.Message);
            }
        }

        //Vakken lezen!!!
        public void lezen()
        {
            try
            {
                TextReader sr = new StreamReader("Vakken.txt");
                line = sr.ReadLine();

                while (line != null)
                {

                    listBoxVakken.Items.Add(line);
                    line = sr.ReadLine();

                }
                sr.Close();
            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }

        }

        public void lezenCijfers()
        {
            try
            {

                TextReader sr2 = new StreamReader("Cijfers.txt");
                linee = sr2.ReadLine();

                while (linee != null)
                {

                    listBoxCijfers.Items.Add(linee);
                    linee = sr2.ReadLine();

                }
                sr2.Close();
            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }
        }

        public void listBoxLegenVak()
        {
            listBoxVakken.Items.Clear();

        }
        public void listBoxLegenCijf()
        {
            listBoxCijfers.Items.Clear();

        }

        public bool checkBestaat()
        {
            try
            {
                TextReader sr = new StreamReader("Vakken.txt");
                TextReader sr2 = new StreamReader("Cijfers.txt");
                line = sr.ReadLine();
                linee = sr2.ReadLine();

                while (line != null)
                {
                    if (line != textBoxVak.Text)
                    {

                        bestaat = false;
                    }
                    else
                    {
                        bestaat = true;
                        break;

                    }
                    line = sr.ReadLine();
                    linee = sr2.ReadLine();

                }

                sr.Close();
                sr2.Close();

            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }
            return bestaat;
        }

        private void verwijderButton_Click(object sender, EventArgs e)//Verwijderen van geselecteerde vak
        {
            
            string list = "";
            if (listBoxVakken.SelectedIndex != -1)
            {
                list = listBoxVakken.SelectedItem.ToString();
                listBoxVakken.Items.RemoveAt(listBoxVakken.SelectedIndex);//Verwijderen uit de listBoxVakken
            }
            
            string tempFile = Path.GetTempFileName();
            StreamReader  sr = new StreamReader("Vakken.txt");
            StreamWriter  sw = new StreamWriter(tempFile);
             
                    string line = sr.ReadLine();
                    while (line != null)
                    {
                        if (line != list)//list de te verwijderen vak
                            sw.WriteLine(line);
                        line = sr.ReadLine();
                    }
                    sr.Close();
                    sw.Close();
                   File.Delete("Vakken.txt");
                   File.Move(tempFile, "Vakken.txt");
  

        }

    }
}
 
Laatst bewerkt:
Als je een System.IO.StreamWriter declareert, moet je een pad daarin zetten. Dus bijvoorbeeld:

Code:
TextWriter sw = new StreamWriter("C:\Users\Agap\Desktop\Vakken.txt", true, Encoding.Unicode);
 
Dat hoe niet toch? Want nu slaat hij het gewoon op in dezelfde locatie als het .jar file zelf.
 
Laatst bewerkt door een moderator:
Sorry, dan heb ik je vraag verkeerd gelezen.

Ik snap het niet helemaal, het is nogal onduidelijk. Wil je het even stap voor stap iets duidelijker uitleggen?
 
Sorry, dan heb ik je vraag verkeerd gelezen.

Ik snap het niet helemaal, het is nogal onduidelijk. Wil je het even stap voor stap iets duidelijker uitleggen?

Als bestaat true is, dan wil ik dat hij alleen sw2.WriteLine((textBox3.Text) + " " + (textBox6.Text) + " " + (textBox4.Text)); uitvoert, maar dit gebeurt niet, als bestaat true is dan voert hij helemaal niets uit.

Code:
Code:
if (bestaat == true)//bestaat wordt geretourneert door checkBestaat(), true betekent dat een vak al bestaat(in de .txt)
                {
                    sw2.WriteLine((textBox3.Text) + " " + (textBox6.Text) + " " + (textBox4.Text));// tB 3, 6 en 4 zijn voor cijfer invoeren. Dus als er een vak ingevoerd wordt die bestaat, dan moet alsnog de ingevoerde cijfers geregistreerd worden.
                    sw2.Close();
                    sw.Close();
                    lezen();//lezen ververst de texboxen waarin de informatie komt.
                }

2de vraag is:
als bestaat false is, dan moet sowieso sw.WriteLine....... uitgevoerd worden, en sw2.WriteLine moet alleen uitgevoerd worden als textbox4 niet leeg is, maar als ook al is textbox4 leeg, sw2.writeline.... wordt alsnog uitgevoerd, en slaat hij gegevens op die ik niet ingevoerd heb/of eerder al ingevoerd had.

sw.WriteLine(textBox3.Text);// als bestaat false is, dan moet de ingevoerde vak opgeslagen worden

Code:
  if (textBox4.Text != null)// cijfer moet alleen opgeslagen worden als de textboxen niet leeg zijn.
                    {
                        sw2.WriteLine((textBox3.Text) + " " + (textBox6.Text) + " " + (textBox4.Text));

                    }

Ik hoop dat ik het zo duidelijker uitgelegd heb, het is namelijk best wel moeilijk om zo een vraag goed te formuleren :P
 
Laatst bewerkt:
Zou je dan niet beter als CheckBestaat(); 'bestaat' retourneert dit doen:

Code:
if (CheckBestaat() == true)
{
}
 
Zou je dan niet beter als CheckBestaat(); 'bestaat' retourneert dit doen:

Code:
if (CheckBestaat() == true)
{
}

Ja in eerste instantie was CheckBestaat void, dus dan controleerde ik gewoon of attribuut bestaat true of false is(dat werd bepaald door CheckBestaat). Later heb ik CheckBestaat een boolean gemaakt die bestaat retourneert, maar ben vergeten om de rest van mijn code aan te passen.

Maar dat maakt opzich niet uit voor mijn probleem toch?
 
Je kan het in ieder geval proberen...


Dit werkt in ieder geval wel:
Code:
 if (textBox4.Text != "")
{
}
 
Update: Voorgaande problemen zijn opgelost, echter heb ik nu een andere probleem:

Allereerst wat er fout gaat:

1: Doormiddel van vak opslaan heb ik 3 vakken toegevoegd:
c052e4c9a516bf891edd75fb427d79ff.png

De inhoud van de listboxVakken wordt ook in een .txt opgeslagen:
ecd82b30bd726ec2cbfc7ce632ac866c.png


2: Doormidel van vak opslaan een nieuwe vak "Biologie" toegevoegd, dit gaat prima:
9481ea691ece0b285d89670843a03e7f.png

adb36f130fcef7b8eb0d051c260d88db.png


3: Doormidel van verwijderen heb ik Wiskunde verwijderd
18b54a60e284f9d55ec07af75ad2a60d.png

e209f1ba250354d774480c54648f37ec.png


4: Als ik nu doormiddel van vak opslaan een nieuwe vak "CKV " toevoeg, krijg ik dit als output:
8ce12bebad2e94e5c9c91f0832b80d17.png

11253e512081d198417e94519e4c598c.png


Zoals u ziet, wordt er van CKV alleen maar de C weergegeven in de listBoxVakken, en in de .txt bestand wordt er na iedere letter een spatie toegevoegd.

Ik ben hier de hele dag mee bezig, maar kom maar niet mee uit. Waar gaat het fout?
probleem is waarschijnlijk dat er spaties tussen de letters komen, maar als ik in mijn code kijk, dan zie ik dat echt nergens in terug komen.

Kan iemand mij vertellen waar de fout zit?

Alvast bedankt,

Mijn code:
Code:
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;
using System.IO;
using System;
using System.Text.RegularExpressions;

namespace CijfersV4
{
    public partial class Form1 : Form
    {
        bool bestaat;
        string line, linee;//lijnen voor vakken en cijfers;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            lezen();
            lezenCijfers();
            StreamWriter sw = new StreamWriter("Vakken.txt", true, Encoding.Unicode);
            StreamWriter sw2 = new StreamWriter("Cijfers.txt", true, Encoding.Unicode);
            sw.Write("");
            sw2.Write("");
            sw.Close();
            sw2.Close();
        }

        //Opslaan Vakken!!!
        private void opslaan_Click(object sender, EventArgs e)
        {
            checkBestaat();
            listBoxLegenVak();

            try
            {

                StreamWriter sw = new StreamWriter("Vakken.txt", true, Encoding.Unicode);
                if (textBoxVak.Text == "")
                {
                    label7.Text = "Geen vak ingevoerd!";
                    sw.Close();
                }
                else if (bestaat == true)
                {
                    label7.Text = "Deze vak bestaat al";
                    sw.Close();
                }
                else if (bestaat == false)
                {
                    string vak = textBoxVak.Text;
                    sw.WriteLine(vak);
                    sw.Close();

                }
                lezen();
            }

            catch (Exception ee)
            {
                label7.Text = "Exception: " + ee.Message;
                Console.WriteLine("Exception: " + ee.Message);
            }
        }
        //Opslaan cijfer
        private void CijferOpslaan_Click(object sender, EventArgs e)
        {

            listBoxLegenCijf();//eerst listbox legen
            string vak = "";
            if (listBoxVakken.SelectedItem != null)
            {
                vak = listBoxVakken.SelectedItem.ToString();// geselecteerde vak voor cijfer plakken
            }
            try
            {

                StreamWriter sw = new StreamWriter("Cijfers.txt", true, Encoding.Unicode);
                if (textBoxCijf.Text == "")
                {
                    label7.Text = "Geen cijfer ingevoerd!";
                    sw.Close();
                }
                else if (vak == "" && textBoxVak.Text == "")
                {
                    label7.Text = "Selecteer eerst een vak uit de vakken lijst, of vul een nieuwe vak in bij vak";
                    sw.Close();
                }
                else if (textBoxVak.Text != "")
                {
                    label7.Text = "";
                    sw.WriteLine(textBoxVak.Text + " " + textBoxCijf.Text);
                    textBoxVak.Text = "";
                    textBoxCijf.Text = "";
                    sw.Close();
                }
                else
                {
                    label7.Text = "";
                    sw.WriteLine(vak + " " + textBoxCijf.Text);
                    textBoxCijf.Text = "";
                    sw.Close();
                }
                sw.Close();
                lezenCijfers();
            }

            catch (Exception ee)
            {
                label7.Text = "Exception: " + ee.Message;
                Console.WriteLine("Exception: " + ee.Message);
            }
        }

        //Vakken lezen!!!
        public void lezen()
        {
            try
            {
                TextReader sr = new StreamReader("Vakken.txt");
                line = sr.ReadLine();

                while (line != null)
                {

                    listBoxVakken.Items.Add(line);
                    line = sr.ReadLine();

                }
                sr.Close();
            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }

        }

        public void lezenCijfers()
        {
            try
            {

                TextReader sr2 = new StreamReader("Cijfers.txt");
                linee = sr2.ReadLine();

                while (linee != null)
                {

                    listBoxCijfers.Items.Add(linee);
                    linee = sr2.ReadLine();

                }
                sr2.Close();
            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }
        }

        public void listBoxLegenVak()
        {
            listBoxVakken.Items.Clear();

        }
        public void listBoxLegenCijf()
        {
            listBoxCijfers.Items.Clear();

        }

        public bool checkBestaat()
        {
            try
            {
                TextReader sr = new StreamReader("Vakken.txt");
                TextReader sr2 = new StreamReader("Cijfers.txt");
                line = sr.ReadLine();
                linee = sr2.ReadLine();

                while (line != null)
                {
                    if (line != textBoxVak.Text)
                    {

                        bestaat = false;
                    }
                    else
                    {
                        bestaat = true;
                        break;

                    }
                    line = sr.ReadLine();
                    linee = sr2.ReadLine();

                }

                sr.Close();
                sr2.Close();

            }
            catch (Exception ee)
            {
                Console.WriteLine("fout");
            }
            return bestaat;
        }

        private void verwijderButton_Click(object sender, EventArgs e)//Verwijderen van geselecteerde vak
        {
            
            string list = "";
            if (listBoxVakken.SelectedIndex != -1)
            {
                list = listBoxVakken.SelectedItem.ToString();
                listBoxVakken.Items.RemoveAt(listBoxVakken.SelectedIndex);//Verwijderen uit de listBoxVakken
            }
            
            string tempFile = Path.GetTempFileName();
            StreamReader  sr = new StreamReader("Vakken.txt");
            StreamWriter  sw = new StreamWriter(tempFile);
             
                    string line = sr.ReadLine();
                    while (line != null)
                    {
                        if (line != list)//list de te verwijderen vak
                            sw.WriteLine(line);
                        line = sr.ReadLine();
                    }
                    sr.Close();
                    sw.Close();
                   File.Delete("Vakken.txt");
                   File.Move(tempFile, "Vakken.txt");
  

        }

    }
}
 
Laatst bewerkt:
Wat gebeurt er als je (even om te testen) dit doet (en dan CKV invult?):

Code:
listBoxVakken.Items.Add(textBoxVak.Text);


En het is 'dit vak' i.p.v. 'deze vak' :P.

Verder is het niet zo handig van je om je oorspronkelijke vraag te verwijderen en je nieuwe vraag twee keer te posten: Nu kunnen mensen met hetzelfde probleem deze thread niet meer vinden. :(
 
Wat gebeurt er als je (even om te testen) dit doet (en dan CKV invult?):

Code:
listBoxVakken.Items.Add(textBoxVak.Text);


En het is 'dit vak' i.p.v. 'deze vak' :P.

Verder is het niet zo handig van je om je oorspronkelijke vraag te verwijderen en je nieuwe vraag twee keer te posten: Nu kunnen mensen met hetzelfde probleem deze thread niet meer vinden. :(

Mijn huidige vraag is ook opgelost, het was een encodig probleem, ik moest voor elke streamwriter/reader zelfde encoding gebruiken.

En het is 'dit vak' i.p.v. 'deze vak' :P.
:o

Verder is het niet zo handig van je om je oorspronkelijke vraag te verwijderen en je nieuwe vraag twee keer te posten: Nu kunnen mensen met hetzelfde probleem deze thread niet meer vinden. :(

Zal ik onthouden voor de volgende keer!

Maar deze(dit) topic is dus opgelost!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan