Autor Beitrag
aschbacher
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 05.12.07 19:15 
c#.NET - Adressverwaltung

Dieses Programm soll Personendaten aufnehmen, speichern , laden, löschen ändern können, nun speichern und laden kann es schon löschen funktioniert noch nciht und für ändern habe ich noch nicht so die C# idee, habe es zwar schon einige male in anderen sprachen gemacht allerdings erweist sich c#.net komplizierter als gedacht.

ich hoffe jemand von euch kann mir helfen.
(fehler+ beschreibung sihe eunten)

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:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string eingabe = "";
            bool schalter = true;
            
            while(schalter ==true)
            {

                Console.Clear();

            Console.CursorTop = 5;
            Console.CursorLeft = 5;
            Console.WriteLine("Programmfuktion waehlen ==>>   (1) EINGABE   ");
            Console.CursorTop = 6;
            Console.CursorLeft = 5;
            Console.WriteLine("                               (2) ABFRAGE");
            Console.CursorTop = 7;
            Console.CursorLeft = 5;
            Console.WriteLine("                               (3) LOESCHEN");
            Console.CursorTop = 9;
            Console.CursorLeft = 5;
            Console.WriteLine("                               (E) ENDE");


            Console.CursorTop = 22;
            Console.CursorLeft = 15;
            Console.Write("");
            eingabe = Convert.ToString(Console.ReadLine());

            if (eingabe == "1") erfassung();
            if (eingabe == "2") abfrage();
            if (eingabe == "3") loeschen();
            if (eingabe == "E")
            {
                ende();
                break;
            }

            }
        }
        static string erfassung()
        {
            Console.Clear();

            Console.WriteLine("UP ERFASSUNG");

            StreamWriter writer = File.AppendText("d:\\adressen.txt");
            string vorname = "";
            string nachname = "";
            string strasse = "";
            string plz = "";
            string ort = "";
            string record = "";

            int c = 1;

            while (c==1)
            {
                Console.Clear();
                Console.CursorTop = 5;
                Console.CursorLeft = 5;
                Console.Write("Vorname: ");
                Console.CursorTop = 5;
                Console.CursorLeft = 15;
                vorname = Convert.ToString(Console.ReadLine());
                if (vorname == "")
                {
                    break;

                }
                Console.CursorTop = 7;
                Console.CursorLeft = 5;
                Console.Write("Nachname: ");
                Console.CursorTop = 7;
                Console.CursorLeft = 15;
                nachname = Convert.ToString(Console.ReadLine());
                Console.CursorTop = 9;
                Console.CursorLeft = 5;
                Console.Write("Strasse: ");
              
                Console.CursorTop = 9;
                Console.CursorLeft = 15;
                strasse = Convert.ToString(Console.ReadLine());
                Console.CursorTop = 11;
                Console.CursorLeft = 5;
                 Console.Write("PLZ: ");
                Console.CursorTop = 11;
                Console.CursorLeft = 15;
                 plz = Convert.ToString(Console.ReadLine());
                Console.CursorTop = 13;
                Console.CursorLeft = 5;
                Console.Write("Ort: ");
                Console.CursorTop = 13;
                Console.CursorLeft = 15;
                ort = Convert.ToString(Console.ReadLine());
                

                record = vorname + ";" + nachname + ";" + strasse + ";" + plz + ";" + ort;

                writer.WriteLine(record);

                writer.Close();

                Console.CursorTop = 20;
                Console.CursorLeft = 10;
                Console.WriteLine("Erfolgreich erfasst!");

                Console.ReadLine();

                }
                return "x";
        }

        static string abfrage()
        {
            string snachname = "";

            Console.Clear();
            Console.WriteLine("UP ABFRAGE");
            StreamReader reader = new StreamReader("d:\\adressen.txt");

            Console.CursorTop = 10;
            Console.CursorLeft = 15;
            Console.Write("Suchbegriff (Nachname): ");
            snachname = Convert.ToString(Console.ReadLine());

                do
                {
                    string[] zeile = reader.ReadLine().Split(';');
                    string nnnachname = zeile[1];
                    string vname = zeile[0];
                    string sstrasse = zeile[2];
                     string pplz = zeile[3];
                    string oort = zeile[4];
                    if (snachname == nnnachname)
                    {
                        Console.Clear();


                        Console.CursorTop = 5;
                        Console.CursorLeft = 10;  
                  
                        Console.WriteLine("Vorname: " + vname );
                        Console.CursorTop = 7;
                        Console.CursorLeft = 10;
                        Console.WriteLine(" Nachname: " + nnnachname);
                        Console.CursorTop = 9;
                        Console.CursorLeft = 10;
                        Console.WriteLine(" Straße: " + sstrasse );
                        Console.CursorTop = 11;
                        Console.CursorLeft = 10;
                        Console.WriteLine(" PLZ: " + pplz );
                        Console.CursorTop = 13;
                        Console.CursorLeft = 10;
                        Console.WriteLine(" Ort: " + oort);
                    }
                    else
                    {
                        if (reader.Peek() == -1) fehler();
                    }
                } while (reader.Peek() != -1);

                reader.Close();
                Console.CursorTop = 24;
                Console.CursorLeft = 15;
                Console.WriteLine("DS von:  " + snachname + " vollständig ausgegeben");
                Console.ReadLine();

            return "x";
        }

        static string ende()
        {
            Console.WriteLine("UP ENDE");
            Console.Clear();
            return "x";
        }

        static string loeschen()
        {
            string lname = "";
            string record = "";
            string name = "";
            string nname = "";
            string strasse = "";
            string plz = "";
            string ort = "";
          

            bool b= false;

            Console.Clear();
            Console.WriteLine("UP LÖSCHEN");
            
            StreamReader reader = new StreamReader("d:\\adressen.txt");

            Console.CursorTop = 10;
            Console.CursorLeft = 15;
            Console.Write("Suchbegriff (Nachname): ");
            lname = Convert.ToString(Console.ReadLine());

            do
            {
                string[] zeile2 = reader.ReadLine().Split(';');
                string n1 = zeile2[1];

                if (n1 == lname)
                {
                    b = true;
                }

            } while (reader.Peek() != -1);

            if (b = false) fehler();

            if (b = true)
            {
                do
                {
                    string[] zeile = reader.ReadLine().Split(';');
                    name = zeile[0];
                    nname = zeile[1];
                    strasse = zeile[2];
                    ort = zeile[3];
                    plz = zeile[4];

                    if (lname != nname)
                    {
                        record = name + ";" + nname + ";" + strasse + ";" + plz + ";" + ort;
                        StreamWriter writer = File.AppendText("d:\\adressen1.txt");
                        writer.WriteLine(record);
                        writer.Close();
                    }
                } while (reader.Peek() != -1);

                reader.Close();

                File.Delete("d:\\adressen.txt");
                StreamWriter ka2 = File.AppendText("d:\\adressen.txt");
                StreamReader ka3 = new StreamReader("d:\\adressen1.txt");

                do
                {
                    string[] zeile2 = ka3.ReadLine().Split(';');
                    name = zeile2[0];
                    nname = zeile2[1];
                    strasse = zeile2[2];
                    plz = zeile2[3];
                    ort = zeile2[4];
                    

                    record = name + ";" + nname + ";" + strasse + ";" + plz + ";" + ort;
                    ka2.WriteLine(record);

                } while (ka3.Peek() != -1);
                ka2.Close();
                ka3.Close();
                File.Delete("d:\\adressen1.txt");
                Console.CursorTop = 20;
                Console.CursorLeft = 10;
                Console.WriteLine("erfolgreich gelöscht ");
            }
            Console.ReadLine();
            return "x";
        }
        static string fehler()
        {
            Console.Clear();
            Console.CursorTop = 15;
            Console.CursorLeft = 10;
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("FATAL ERROR: 'Record nicht vorhanden'");
            Console.ForegroundColor = ConsoleColor.White;
            return "x";
        }
    }
}



bei folgendem code, im up loeschen :

ausblenden C#-Quelltext
1:
string[] zeile = reader.ReadLine().Split(';');					



erhalte ich diese Fehlermeldung:
Der Objektverweis wrude nciht auf eine Objektinstanz festgelegt.


danke schon mal für jede hilfe :-)

mfg

herbert.

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
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: Mi 05.12.07 21:52 
Hallo,

in der vorhergehenden Schleife wurde der StreamReader vermutlich vollständig abgearbeitet. Damit liefert offensichtlich in Zeile 224 reader.ReadLine() einen null-String zurück; die Split-Methode führt dann zu der Fehlermeldung.

Übrigens gibt es mit NET viel schönere Methoden für Dein Vorgehen: Mit File.ReadAllText oder ReadAllLines kannst Du viel einfacher lesen und mit AppendText, AppendAllText, WriteAllText, WriteAllLines schreiben. Mit List<string> kannst Du alle Adressen viel einfacher verarbeiten. Mit Dictionary<int, string> kannst Du auch eine eindeutige Adressennummer einbauen und direkt danach suchen. Das einzig Ärgerliche daran ist, dass ReadAllLines ein Array string[] liefert, das erst noch in ein List<string> konvertiert werden muss.

Gruß Jürgen