Autor Beitrag
spitzname
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: So 27.06.10 14:00 
Hallo, ich möchte zwei Klassen schreiben die daten von Personen verwalten und würde mich über Tipps freuen.

Die Erste klasse heisst Person.

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:
class Person
    {

        private string nachname;
        private string vorname;
        private long ID;

        public Person(string name, string v_nahme, long ID)
        {
            nachname = name;
            vorname = v_nahme;
            this.ID = ID;
        }


        public string Nachname
        {
            get { return nachname; }
            set
            {
                this.nachname = value;             
            }
        }


        public string Vorname
        {
            get { return vorname; }
            set
            {
                this.vorname = value;
            }
        }


        public long ID_Nummer
        {
            get { return ID; }
            set
            {
                this.ID = value;
            }
        }
    }


Die Daten einer Person werden in einer Instanz der Klasse person gespeichert.
Für den Zugriff auf die Elementvariablen werden die entsprechenden Accessoren verwendet.



Nun möchte ich Zur Verwaltung von mehreren Personen eine Klasse PersonenGruppe schreiben.
Diese soll eine ArrayList-Instanz mit Elementen vom Typ Person beinhalten.

ab hier komme ich nicht voran und würde mich über jede Hilfe freuen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
class PersonenGruppe
    {
        //generische Liste für den Typ Person instanzieren
        List<Person> personListe = new List<Person>();

    }



gruß spitzname

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Zuletzt bearbeitet von spitzname am So 27.06.10 14:05, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 27.06.10 14:03 
Du müsstest dann aber schon noch schreiben, warum Du nicht weiter kommst :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: So 27.06.10 14:11 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Du müsstest dann aber schon noch schreiben, warum Du nicht weiter kommst :-)



Ok, ich habe leider noch keinen richtigen Ansatz. Sollte ich auch hier mit einem Konstruktor und Accesoren arbeiten also so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
private Person person

 public PersonenGruppe(Peron p)
        {
            Person = p;
        }


        
        public Person pers
        {
            get { return personen; }
            set
            {
                this.personen = value;
            }
        }


aber wie soll ich die ArrayList-Instanz hier miteinbinden?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Toeffi
Hält's aus hier
Beiträge: 4
Erhaltene Danke: 3



BeitragVerfasst: So 27.06.10 14:38 
Genauso wie du es auch mit anderen Properties machst.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class PersonenGruppe
{
    public List<Person> Personen{get;private set;}

    public PersonGruppe()
    {
        this.Personen = new List<Person>();
    }

}

Schon kannst du Personen in deiner Personengruppe verwalten, indem du sie über

ausblenden C#-Quelltext
1:
2:
PersonGruppe gruppe = new PersonGruppe();
gruppe.Personen.Add(new Person(...));

hinzufügst.

Für diesen Beitrag haben gedankt: spitzname
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 27.06.10 14:46 
Oder suchst du vielleicht einen Index für die Klasse (da fehlt natürlich noch die Behandlung eines falschen Index)?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
    public Person this[int index]
    {
        get { return personListe[index]; }
        set { personListe[index] = value; }
    }
Dann kannst du direkt einen Index hinter die Klasse setzen.
ausblenden C#-Quelltext
1:
2:
PersonenGruppe Hallo = new ...
Hallo[0]...

Für diesen Beitrag haben gedankt: spitzname
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: So 27.06.10 20:25 
Danke, für die Antworten die haben mir weitergeholfen!

Ich habe noch folgende Frage zu dem obigen Thema:

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:
 public partial class FrmPersonVerwaltung : Form
    {

        public FrmPersonVerwaltung()
        {
            InitializeComponent();
        }

private void btnAdd_Click(object sender, EventArgs e)
        {
            
           //FrmDaten mit drei Eingabefeldern(Name,Vorname,Id)
           FrmDaten daten = new FrmDaten();

           DialogResult dlgAntwort;
           Person p = new Person();
           PersonGruppe gruppe = new PersonGruppe();

           dlgAntwort = daten.ShowDialog();

           if (dlgAntwort == DialogResult.OK)
           {
               p.Nachname = daten.txtNachname.Text;
               p.Vorname = daten.txtVorname.Text;
               p.ID = Convert.ToInt64(daten.ID.Text);

               gruppe.Person.Add(new Person(p.Nachname, p.Vorname, p.ID));
               txtEingabe.AppendText(gruppe.Person[0] + Environment.NewLine);
               daten.Close();               
           }                      
        }
    }


Mit dem Code füge ich mit einem Click auf OK einem Formular in eine TextBox, die in diesem Fall txtEingabe heisst, Personen daten(p.Nachname, p.Vorname, p.ID) hinzu.



Nun zu meiner Frage: Wie kann man einen bestimmten Datensatz einer Person jetzt löschen?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 private void btnClear_Click(object sender, EventArgs e)
         {
            

           FrmDaten daten = new FrmDaten();
           DialogResult dlgAntwort;
           Person p = new Person();
           PersonGruppe gruppe = new PersonGruppe();
           dlgAntwort = daten.ShowDialog();

           if (dlgAntwort == DialogResult.OK)
           {
              ................?      
           }                      
                               
        }


würde mich über Tipps freuen


gruß spitzname

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Toeffi
Hält's aus hier
Beiträge: 4
Erhaltene Danke: 3



BeitragVerfasst: So 27.06.10 20:32 
Naja erstmal was anderes.
Das hier:
ausblenden C#-Quelltext
1:
gruppe.Person.Add(new Person(p.Nachname, p.Vorname, p.ID));					

brauchst du nicht machen, denn du hast doch vorher schon ein Person objekt erstellt, welchem du die ganzen sachen zugewiesen hast.
Da reicht es wenn du
ausblenden C#-Quelltext
1:
gruppe.Person.Add(p);					

machst.
Zum löschen Thema könntest du mit Extension Methods arbeiten und wie folgt löschen.

ausblenden C#-Quelltext
1:
2:
3:
Person p = gruppe.Person.Where(person => person.ID == 100).SingleOrDefault();
if(p != null)
  gruppe.Person.Remove(p);


Die 100 als ID ist jetzt ersponnen die musst du natürlich aus deinem Forumlar irgendwie ziehen.Da wo du das eben speicherst oder so.

Für diesen Beitrag haben gedankt: spitzname
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 27.06.10 21:54 
Hallo,

also das was Toeffi so schreibt finde ich sehr umständlich. Schau dir den Ansatz von Sebastian (jaenicke) an... Mit einer Collection und direkten Zugriff per Index macht das mehr Sinn.

Allerdings macht der Accessor/Index über die pure Liste meines erachtens weniger Sinn, sondern an der Stelle sollte man die Id verwenden.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
public Person this[int index]    {        
get { return personListe.Where(person => person.Id == index).First(); }
set { 
try
{
this.Remove(this[index]);
this.Add(value);
catch { }    
}


In deiner Form Klasse brauchst du dann eine Klassenmember vom Typ PersonenGruppe... Ansonsten sind die hinzugefügten Personen wieder weg(wenn du eine neue Instanz anlegst).

Löschen würde dann so aussehn (wenn du die ID hast):
ausblenden C#-Quelltext
1:
personenGruppe.Remove(personenGruppe[100]);					


bzw. wenn du gleich das Objekt hast (was wahrscheinlicher ist):
ausblenden C#-Quelltext
1:
personenGruppe.Remove(person);					


Das sieht doch logischer aus ? ;)

Gruß

Für diesen Beitrag haben gedankt: spitzname
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 27.06.10 22:09 
Indexer, Lambdas, leere Catch-Blöcke (:shock:)... ich weiß nicht, ob das hier so wirklich angemessen ist. Wie wäre es mit folgendem Code für den Anfang?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
class PersonenGruppe
{
  ...

  public Person FindPersonByID(int id)
  {
    foreach (Person p in ...)
      if (p...) ...    
  }

  public void RemovePersonByID(int id)
  {
    Personen.Remove(FindPersonByID(id));
  }
}

Bitte entsprechend ergänzen ;) .

Und nichtsdestotrotz hat Daniel mit
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
In deiner Form Klasse brauchst du dann eine Klassenmember vom Typ PersonenGruppe... Ansonsten sind die hinzugefügten Personen wieder weg(wenn du eine neue Instanz anlegst).
natürlich vollkommen recht :) .

_________________
>λ=

Für diesen Beitrag haben gedankt: spitzname
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 27.06.10 22:15 
Ich denke Indexer sind schon angebracht genau so wie Linq Ausdrücke.

Aus dem leeren Catch Block kann man natürlich auch davor abfragen, ob die gewünschte Id schon besteht... Performanter wäre aber der try catch :o Ach seh grad.. das Add natürlich dahinter... Fußball war lang heute Mittag :D :D

Aber darüber soll er glaub selbst entscheiden :D
Angenehmer fürs erste ist sicherlich eine foreach-Schleife ... dennoch würde ich den Index als "Pflicht" sehen.. ansonsten ist der Code "verwirrend".

Gruß

Für diesen Beitrag haben gedankt: spitzname
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 27.06.10 22:36 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Ich denke Indexer sind schon angebracht genau so wie Linq Ausdrücke.
Ich will jemanden, der noch mit der OOP kämpft, einfach ungern direkt mit dem nächsten Paradigma erschlagen :nixweiss: .

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Aus dem leeren Catch Block kann man natürlich auch davor abfragen, ob die gewünschte Id schon besteht... Performanter wäre aber der try catch :o
Das bezweifle ich doch stark (auf der unmethodischen Performance-Skala dürfte hinter Exceptions höchstens noch Reflection stehen), aber sollte hier ja nichts zur Sache tun. Bitte, bitte dann aber wenigstens immer den Exception-Typ angeben - weswegen wir wohl im Getter eine ArgumentOutOfRangeException werfen sollten und äh... geben wir vielleicht doch lieber einfach null zurück ;) ?

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Fußball war lang heute Mittag :D :D
Na zum Glück nicht noch länger, das war schon schweißtreibend genug :mrgreen: .

_________________
>λ=

Für diesen Beitrag haben gedankt: spitzname
Toeffi
Hält's aus hier
Beiträge: 4
Erhaltene Danke: 3



BeitragVerfasst: Mo 28.06.10 07:24 
Ok da habt ihr natürlich recht, da habe ich wohl mit Kanonen auf Spatzen geschossen und ganz vergessen das er gerade mit OOP anfängt. Die Idee mit dem Indexer ist wirklich gut. Gut dann kann sich der Threadersteller die Lösung ja mal anschauen wenn er weiter ist :) Danke für die Ergänzungen.

Für diesen Beitrag haben gedankt: spitzname
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 28.06.10 09:07 
Also ich bin im getter-Teil dafür, dass eine Exception geschmissen wird. Sonst muss man ja später in jedem Code Abschnitt überprüfen ob die Person wirklich existiert. Ich gehe ja davon aus, dass wenn ich eine ID habe diese Person tatsälich exitisert.

Den Set-Teil würde ich ganz weg lassen, dafür gibt es ja Add.

Ach da fällt mir auf, dass ich von einer anderen Definitino der PersonenGruppe-Klasse ausgegangen bin (und keiner hat gemeckert ;) ).

Ich würde die PersonenGruppe von einer generischen Liste der Klasse Person erben lassen, um auf sämtliche Methoden der Collection direkt zugreifen zu können (vgl. mein Code). Dann sind später auch andere Abfragemöglichkeiten drin ohne jedes mal eine eigne Methode anzulegen.

Also nochmal zusammenfassend:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// Eine PersonenGruppe als Liste von Personen deklarieren
publc class PersonenGruppe : List<Person>

// getter index für Person by ID überschreiben (evtl. wäre hier Doc angebracht :D)
public Person this[int] {
   get { return personListe.Where(person => person.Id == index).First(); }
 }
}


Die Verwendung der Klasse würde dann so aussehen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
PersonenGruppe gruppe = new PersonenGruppe();
gruppe.Add(new Person { Name = "Mustermann", Vorname = "Max" });
gruppe.Add(new Person { Name = "Mustermann", Vorname = "Moritz" });
Person eva = new Person { Name = "Musterfrau", Vorname = "Eva" };
gruppe.Add(eva);

// eine Person anhand der id löschen
int id = 5;
gruppe.Remove(gruppe[id]);

// eine Person anhand des Objekts löschen
gruppe.Remove(eva);


Hoffe das veranschaulicht nochamls was ich gemeint hab.

Gruß

Für diesen Beitrag haben gedankt: spitzname
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 28.06.10 14:08 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Indexer, Lambdas, leere Catch-Blöcke (:shock:)... ich weiß nicht, ob das hier so wirklich angemessen ist. Wie wäre es mit folgendem Code für den Anfang?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
class PersonenGruppe
{
  ...

  public Person FindPersonByID(int id)
  {
    foreach (Person p in ...)
      if (p...) ...    
  }

  public void RemovePersonByID(int id)
  {
    Personen.Remove(FindPersonByID(id));
  }
}

Bitte entsprechend ergänzen ;) .

Und nichtsdestotrotz hat Daniel mit
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
In deiner Form Klasse brauchst du dann eine Klassenmember vom Typ PersonenGruppe... Ansonsten sind die hinzugefügten Personen wieder weg(wenn du eine neue Instanz anlegst).
natürlich vollkommen recht :) .




Danke euch für die vielen Vorschläge! :D

ich habe es erstmal mit dem Vorschlag von Kha und Toeffi versucht, es klappt aber noch nicht ganz wo liegt mein Fehler?

also die Klsasse PersonenGruppe:

ausblenden 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:
 
    class PersonenGruppe 
    {     

    public List<Person> Personen{get;private set;}

    public PersonenGruppe()
    {
        this.Personen = new List<Person>();
    }


    public Person FindPersonByID(long id)
  {
        foreach (Person p in Personen) 
        {
            if (p.ID.Equals(id)) return st;
        }
        
    }

    public void RemovePersonByID(long id)
    {
        Personen.Remove(FindPersonByID(id));
    }

    }



Und damit die hinzugefügten Personen nicht wieder verschwinden wenn eine neue Instanz angelegt wird sollte ich einen Klassenmebmer von Typ PersonenGruppe in der Form Klasse anlegen, ist das so richtig(siehe code rot markiert) ?

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:
 public partial class FrmPersonVerwaltung : Form
    {
        //Klassenmember
        private PersonenGruppe speicher;

        public FrmPersonVerwaltung()
        {
            InitializeComponent();
        }

private void btnAdd_Click(object sender, EventArgs e)
        {
            
           //FrmDaten mit drei Eingabefeldern(Name,Vorname,Id)
           FrmDaten daten = new FrmDaten();

           DialogResult dlgAntwort;
           Person p = new Person();
           PersonGruppe gruppe = new PersonGruppe();

           dlgAntwort = daten.ShowDialog();

           if (dlgAntwort == DialogResult.OK)
           {
               p.Nachname = daten.txtNachname.Text;
               p.Vorname = daten.txtVorname.Text;
               p.ID = Convert.ToInt64(daten.ID.Text);

               gruppe.Person.Add(new Person(p.Nachname, p.Vorname, p.ID));
               speicher = gruppe;
      
               txtEingabe.AppendText(gruppe.Person[0] + Environment.NewLine);
               daten.Close();               
           }                      
        }
    }


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 28.06.10 14:21 
zu 2) das ist so korrekt. Nun musst du aber noch auf den speicher zugreifen, anstatt wieder (zeile 19.) eine neue Gruppe zu erstellen. Das kannst du austauschen indem du die Zeile löscht und sie anstat speicher gruppe benennst. Die Instanziierung kannst du gleich in Zeile 4 machen (private PersonenGruppe speicher = new Personengruppe(););

zu 1) wenn du die Fehlermeldung mitliefster wäre es für uns einfacher ;) Aber ich denke der Fehler liegt daran, dass du in der Methode FindPersonByID unter umständen (wenn nicht existiert) keine Person zurück gibst. Du kannst nun entweder return null; in Zeile 19 zurückgeben oder in Zeile 19. eine ArgumentException werfen (Siehe Diskussion kha und mir).

Gruß

Für diesen Beitrag haben gedankt: spitzname
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 28.06.10 15:44 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
zu 2) das ist so korrekt. Nun musst du aber noch auf den speicher zugreifen, anstatt wieder (zeile 19.) eine neue Gruppe zu erstellen. Das kannst du austauschen indem du die Zeile löscht und sie anstat speicher gruppe benennst. Die Instanziierung kannst du gleich in Zeile 4 machen (private PersonenGruppe speicher = new Personengruppe(););

zu 1) wenn du die Fehlermeldung mitliefster wäre es für uns einfacher ;) Aber ich denke der Fehler liegt daran, dass du in der Methode FindPersonByID unter umständen (wenn nicht existiert) keine Person zurück gibst. Du kannst nun entweder return null; in Zeile 19 zurückgeben oder in Zeile 19. eine ArgumentException werfen (Siehe Diskussion kha und mir).

Gruß



Vielen dank nochmal, hat alles geklappt! :D :D :D

An danielf, die oben genannten Fehler wurden von dir richtig benannt, nach der Korrektur funktioniert das Programm. :zustimm:



gruß
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Fr 02.07.10 13:08 
Hallo nochmal,

ich habe zu diesem Thema noch eine folgende Frage:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
 private void btnLoad_Click(object sender, EventArgs e)
        {
            
            DialogResult dlgAntwort;
            dlgAntwort = dlgLoad.ShowDialog();

            if (dlgAntwort == DialogResult.Cancel)
                return;
            try
            {
                StreamReader src = new StreamReader(dlgLoad.FileName);

                txtEingabe.Text = src.ReadToEnd();
                src.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Fehler 1 " + ex.Message);
            }
        }


mit diser Funktion kann man eine Textdatei in die Textbox("txtEingabe") aufnehmen. Die Textbox("txtEingabe") und die Textdatei hat fogenden Aufbau:

-->Beispiel:

Zeile-------- Dateiinhalt------------logische Bedeutung

1-------------Petersen---------------Nachname
2-------------Peter------------------Vorname
3-------------1234-------------------ID
4------------------------------------Leerzeile
5-------------Martinsen--------------Nachname
6-------------Martin-----------------Vorname
7-------------4321-------------------ID
8------------------------------------Leerzeile

wie kann man aus dieser Textdatei die z.B. diese obengenannten Daten enthält jede einzelne Person in die PersonenGruppe (ArrayList) aufnehmen.


würde mich über Tipps freuen

gruß
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 02.07.10 13:33 
Das Thema hat nichts mehr mit dem Urspürnglichen Problem zu tun, wobei der Thread-Titel auch alles Möglich zu läßt. Mach also nächstes mal ein neues Thema auf für eine andere Frage und wähle den Titel passend zum Problem.

Du musst die Informationen aus der Datei herausparsen und dann ein neues Personen-Objekt erstellen. Für string-Verarbeitung gibt es sehr viele Methoden (siehe Klasse string). Dazu kommen Reguläre Ausdrücke. Was du genau nimmst ist abhängig davon, wie die Daten aufgebaut sind und wie du dich auskennst.

Du hast den Aufbau, zumindest für mich, nicht genau beschrieben. Sind das wirklich Striche oder repräsentieren diese Leerzeichen? Ist die Zeilennummber bzw. die logische Bedeutung immer dabei?

Am besten du gehst Zeilenweise durch die DAtei:
Mit der statischen methode ReadAllLines der Klasse File bekommst du den Inhalt einer Datei zeilenweise: File.ReadAllLines("file")

Je nach "Trennlogik" musst du dann die entsprechenden Zeilen zerlegen.

Gruß
spitzname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Fr 02.07.10 14:57 
Danke für die Antwort, dann werde ich am besten ein neues Thema starten um weitere Fragen stellen zukönnen.