Autor Beitrag
DevInet
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Mo 31.05.10 15:05 
Hallo alle miteinander.

Folgendes "Konstrukt" ist meine Ausgangssituation:

2xCSV-Datei

Die eine enthält die Namen, Kürzel, Tel.-Nr., etc der Mitarbeiter.
Die andere enthält die Namen incl. Datum von Veranstaltungen.
Die dritte Datei enthält ein Grundgerüst mit Platzhaltern.
Die Daten aus den beiden CSV-Dateien sollen nun an die Stelle der Platzhalter geschrieben werden.
Aus der dritten Datei soll ein Mail-Footer für den Mitarbeiter generiert werden.
Da ich diese Prozedur nicht von Hand und auch nicht für jeden Mitarbeiter einzeln machen will, habe ich mir überlegt, über Arrays und eine For-Schleife das ganze zu generieren. Einlesen der Dateien, schreiben des Inhalts in die Arrays und splitten des Arrays mit den Daten der Mitarbeitern ist kein Problem. Das Problem kommt erst beim einfügen der Daten, bzw ersetzen der Platzhalter. Hier fügt er nur bis zum dritten Footer die Daten korrekt ein, danach setzt er zum Teil Leerzeilen und "falsche" Inhalt ein.

Jemand ne Ahnung, woran das liegen kann? Oder wie ich das ganze besser und übersichtlicher mache?

Vielen Dank im vorraus.

Mfg DevInet

PS: Ich möchte mir die fertige Datei in einer Art Vorschaufenster anzeigen lassen. Wie kann ich das machen?
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 31.05.10 15:18 
user profile iconDevInet hat folgendes geschrieben Zum zitierten Posting springen:
Jemand ne Ahnung, woran das liegen kann?

Wenn du uns verrätst, wie du es bisher versuchst, gibt es vielleicht sinnvolle Antworten. Im Moment sagt meine Glaskugel, dass Indizes falsch sind.

user profile iconDevInet hat folgendes geschrieben Zum zitierten Posting springen:
Oder wie ich das ganze besser und übersichtlicher mache?

Normalerweise empfehle ich das typisierte Verfahren mit DataTable anstelle eines String-Arrays. Aber das muss nicht unbedingt sein, lässt sich aber ohne den bisherigen Code ebensowenig beantworten.

user profile iconDevInet hat folgendes geschrieben Zum zitierten Posting springen:
PS: Ich möchte mir die fertige Datei in einer Art Vorschaufenster anzeigen lassen. Wie kann ich das machen?

Dazu gibt es passende Controls; das ist aber eine Frage, die nichts mit dem Unterforum oder der Überschrift zu tun hat, sondern in eine neue Diskussion gehört. Deshalb darf es dazu hier keine Antwort geben.

Jürgen
DevInet Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
BeitragVerfasst: Mo 14.06.10 11:16 
So, habe versucht das ganze nochmal neu zu schreiben und nun siehts im Rohbau so aus.
Zwar nicht sauber programmiert aber für den Anfang recht einfach gehalten, da ich nicht der C#-Profi bin und ich sonst nichts mehr verstehe:


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
namespace Mail_Footer_Frontend
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
        }

        

        private void btn1_Click(object sender, EventArgs e)
        {
            
            StreamReader tempread = new StreamReader("templ-aalen.txt", System.Text.Encoding.UTF7, true);
            {
                string line;
                //Überprüfung auf Leerzeilen
                while ((line = tempread.ReadLine()) != null)
                {
                    //Ausgabe der Liste in der ListBox
                    fBox.Items.Add(line);
                }

            }
            tempread.Close();
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            StreamReader mread = new StreamReader("mitarbeiter.csv", System.Text.Encoding.UTF7, true);
            {
                string line2;

                while ((line2 = mread.ReadLine()) != null)
                {
                    mBox.Items.Add(line2);
                }
            }
            mread.Close();

            string name = mBox.Text;
            string[] zeile = name.Split('\n');
            string[] spalten = zeile.Split(':');

            StreamWriter mwrite = new StreamWriter("mmit.txt"true);
        }
    }
}



Bei den rot markierten stellen bekomme ich die Fehlermeldungen:

Fehler 15 "System.Array" enthält keine Definition für "Split", und es konnte keine Erweiterungsmethode "Split" gefunden werden, die ein erstes Argument vom Typ "System.Array" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Dokumente und Einstellungen\hes\Eigene Dateien\Visual Studio 2010\Projects\Mail-Footer-Frontend\Mail-Footer-Frontend\Form4.cs 64 38 Mail-Footer-Frontend

und

Fehler 14 "System.Windows.Forms.RichTextBox" enthält keine Definition für "Items", und es konnte keine Erweiterungsmethode "Items" gefunden werden, die ein erstes Argument vom Typ "System.Windows.Forms.RichTextBox" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Dokumente und Einstellungen\hes\Eigene Dateien\Visual Studio 2010\Projects\Mail-Footer-Frontend\Mail-Footer-Frontend\Form4.cs 57 26 Mail-Footer-Frontend


Frage lautet nun, wieso er diese Fehler ausgibt. In Referenz-Dateien, welche wir von unserem AWE-Lehrer bekommen haben stehts auch so drin. Bin langsam echt am verzweifeln. Falls diese Frage hier falsch ist, bitte einfach sagen, wo ich nen neuen Thread aufmachen soll.

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 25.06.10 18:03 
ausblenden C#-Quelltext
1:
2:
3:
mBox.Items.Add(line2); 
string[] zeile = name.Split('\n');
string[] spalten = zeile.Split(':');

Also, ich nehme mal an, dass mBox eine RichtextBox ist (aufgrund der Fehlermeldung). Und es gibt dabei keine Items. Und dass Zeile.Split nicht klappt, liegt daran, dass zeile ein string[] ist. Und Split kannst Du nur auf ein String anwenden. Also, wenn Du dort irgendwas splitten willst, müsstest Du Zeile für Zeile von "zeile" durchgehen, also z.B. so:

ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (string z in zeile)
{
  string[] spalten =  z.Split(':');   
}


Hoffe, ich konnte Dir ein bisschen weiterhelfen. Aber ansonsten würde ich es wohl ganz anders machen, aber dass ist, ohne den Inhalt bzw. mal eine Zeile der Dateien zu sehen, nicht so einfach zu sagen.

Gruss, Marko