myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Foreach-Schleife mit Zufallswert funktioniert im Debugger-Einzelschritt, sonst aber nicht?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Foreach-Schleife mit Zufallswert funktioniert im Debugger-Einzelschritt, sonst aber nicht?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
nash128
myCSharp.de-Mitglied

Dabei seit: 20.02.2019
Beiträge: 3
Entwicklungsumgebung: VS 2017 Express


nash128 ist offline

Foreach-Schleife mit Zufallswert funktioniert im Debugger-Einzelschritt, sonst aber nicht?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo liebe Forengemeinde,

ich habe (als C#-Anfänger) die Aufgabe ein kleines simples Programm zu schreiben, welches Datenzeilen aus einer TXT-Datei ausliest, dann in ein Array ablegt und aus diesem eine bestimmte Anzahl zufälliger Werte zieht, diese dann in ein zweites Array speichert, um sie schließlich in eine neue TXT-Datei zu schreiben und zu speichern.
Dabei sollten keine doppelten Werte in der finalen Datei stehen. An der Dopplungsvermeidung bin ich allerdings noch nicht dran, jedoch für Tipps dankbar.. ;-)

Der Grund dieses Threads, der mich zum verzweifeln bringt ist, dass der Code, wenn ich ihn im Debugging-Modus im Einzelschritt durchgehe, funktioniert. Die Daten können eingelesen werden, die Arrays werden befüllt, die Auswahl klappt und die Textdatei wird Zeile für Zeile korrekt mit unterschiedlichen Werten beschrieben. Jetzt kommts:
Wenn ich allerdings keine Haltepunkte setze und das Programm einfach laufen lasse, schreibt er die gewünschte Anzahl an Einträgen in die finale TXT-Datei, jedoch immer den gleichen Wert.

Bsp.: Sourcedatei enthält Zeilen von 1 bis 400 und es sollen 20 Werte ausgesucht werden.

Bei Debugger im Einzelschritt ist das Ergebnis 21, 75, 24, 98, ... .
Bei normalem Ablauf ist das Ergebnis 19, 19, 19, 19, 19, ... .

Da stehe ich vor einem Rätsel :(

Hier mein Code:

C#-Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

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

        public string[] datapool; //Hier werden die Werte der Source-Datei reingelesen
        public string sourcepath;
        public string destinationpath;

        private void button3_Click(object sender, EventArgs e) //Sourcedatei auswählen
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "TXT-Datei (*.txt)|*.txt";
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                this.pathlabel.Text = openFileDialog1.FileName;
                sourcepath = openFileDialog1.FileName;
            }
        }

        private void button4_Click(object sender, EventArgs e) //Sourcedaten einlesen
        {
            if (File.Exists(sourcepath))
            {
                datapool = File.ReadAllLines(sourcepath, Encoding.UTF8);
                string datalength = datapool.Length.ToString();
                lbl_datacount.Text = datalength + " Datensätze erfolgreich eingelesen.";
            }
        }

        private void button2_Click(object sender, EventArgs e) //Zieldatei auswählen
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.FileName = "Stichprobenliste.txt";
            saveFileDialog1.Filter = "TXT-Datei|*.txt";

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.destpathlabel.Text = saveFileDialog1.FileName;
                destinationpath = saveFileDialog1.FileName;
            }
        }

        private void button1_Click(object sender, EventArgs e) //Anstoß zum Generieren
        {
            int choosemax; //Benutzereingabe für Anzahl Werteauswahl


            if (int.TryParse(textBox2.Text, out choosemax))
            {
                string[] selection = new string[choosemax];

                for (int i = 0; i < choosemax; i++)
                {
                    Random rnd = new Random(); //Zufallsauswahl aus Array
                    string export = datapool[rnd.Next(0, datapool.Length)];
                    selection[i] = export; //Schreiben in Zielarray
                }

                StreamWriter sr = new StreamWriter(destinationpath, true);
                foreach (string doc in selection) //Schreiben aus Zielarray in TXT
                {
                    sr.WriteLine(doc);
                }
                sr.Close();

            }

        }
    }
}

Ich hoffe, dass ich im Forum keinen Hilfreichen Hinweis zu meinem Problem übersehen habe. Wenn doch, bitte ich um Entschuldigung.

Vielen Dank im Voraus für Eure Hilfe!

lg nash

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nash128 am 20.02.2019 21:17.

20.02.2019 21:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.214
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

20.02.2019 22:43 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Monate.
Der letzte Beitrag ist älter als 8 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 14.11.2019 21:58