Autor Beitrag
WSS-130
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 22.01.13 17:43 
Hallo ;-)

ich habe in meiner GUI eine taste die eiene Liste von Listen erstellen soll.

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:
class Form
{
  List<datenbank> daten = new List<datenbank>();
  
  private void button_press(....)
  {
     string kanal = "das ist meine kanal";
     ??????????????
  }
}

class datenbank
{
  List<string> kanal = new List<string>();

  public datenbank(List<string> kanal)
  {
    this.kanal=kanal;
  }

  public List<string> callKanal
  {
    get { return kanal; }
    set {kanal = value; }
  }
}


So und nun mächte ich nach drücken der Taste button_press den kanal in die Liste daten schreiben....

Das sollte doch eigentlic hmit einem Befehl bei den ????????????? wie
ausblenden C#-Quelltext
1:
daten.Add(callKanal)					

gehen, oder?

Viele Grüße udn schonmal danke für die Hilfe :-)


Zuletzt bearbeitet von WSS-130 am Mi 23.01.13 10:09, insgesamt 1-mal bearbeitet
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 22.01.13 17:53 
Der set-Accessor ist ein Teil einer Eigenschaft und eine Eigenschaft ist seinerseits wieder Teil eines Objektes.
Du kannst die Eigenschaft nur verwenden, wenn du auch ein Objekt hast, dessen Eigenschaft du abrufen kannst.

ausblenden C#-Quelltext
1:
2:
datenbank dbank = new datenbank(kanal);
daten.Add(dbank);



Ach und sei so gut, füge doch bitte die fehlenden Klammern ein, denn so, wie du das da geschrieben hast, wirst du nie auf einen grünen Zweig kommen. ^^
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 22.01.13 17:59 
Der solltest insbesondere das Beachten was die der Compiler als Fehler rauswirft. Der wird dir bei der Zeile

daten.Add(callKanal)

gesagt haben das eine List<string> ein anderer Typ ist als datenbank. Und deine daten Liste verwaltet nun mal datenbank Objekte und nicht List<string> was du versuchst der Liste hinzuzufügen.
WSS-130 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mi 23.01.13 11:09 
@Palladin007 du hast natürlich recht. Ich habe den Code hier kurz von Hand reingeschrieben und einige Klammern vergessen. Hab das mal verbessert.

Und auch dein einwand hat mir weitergeholfen. Klar muss ich das Objekt erstellen bevor ich "Daten" darin setzen kann.


Ich hab jetzt mal das Programm angehängt. Das Programm soll aus einer Liste "paths" (Liste mit Dateipfaden) die Dateien sortieren und in eine Liste sortieren in der nur diese Dateitypen enthalten sind.
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:
class Form
{  
    List<string> paths = new List<string>();
    List<dataset> data = new List<dataset>();  

    private void button_add_Click(object sender, EventArgs e)
  {
                string filename = "Test";

    foreach (string path in paths)
    {
      List<string> pathTxt = new List<string>();

      dataset dataTxt = new dataset(pstname, pathTxt);

      if (path.EndsWith(".txt"))
      {
        dataTxt.callPathTxt.Add(path);
      }
    }
                dataMap.callFilename = filename;
                data.Add(dataTxt);
    paths.Clear();
  }
}

public class dataset
{
  string filename;
  List<string> pathTxt = new List<string>();

  public dataset(string filename, List<string> pathTxt)
  {
    this.filename = filename;
    this.pathTxt = pathTxt;
  }
  public string callFilename
  {
    get { return filename; }
    set { filename = value; }
  }
  public List<string> callPathTxt
  {
    get { return pathTxt; }
    set { pathTxt = value; }
  }
}


Das Hinzufügen funktioniert soweit ich das mit dem Debugger nachvollziehen kann... Allerdings bleibt die Liste "data" leer.
Und ich kann mit dem Debugger den "set" nicht verfolgen. Heißt, der Befehl "dataTxt.callPathTxt.Add(path);" wird zwar wohl ausgführt ich komme aber dann nicht mit dem Debugger in meine Klasse dataset?

in ich auf dem richtigen Weg? Oder was mache ich denn falsch?


Zuletzt bearbeitet von WSS-130 am Mi 23.01.13 12:16, insgesamt 4-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 23.01.13 11:51 
Zitat:
Allerdings bleibt die Liste "data" leer.


Im gezeigten Code wird data auch nur erzeugt aber nie benutzt. Dein Code sieht auch immer noch merkwürdig oder unvollständig aus. Einen else Befehl ohne dazugehörenden if gibt es nicht. Wolltest du im Code noch irgendwo dataTxt der data Liste hinzufügen? So wie dein Code jetzt ist wird ein dataTxt bei jedem Schleifendurchlauf erzeugt, gefüllt und am Ende des Durchlaufs zerstört ohne das da was mit passiert.

Zitat:
Und ich kann mit dem Debugger den "set" nicht verfolgen


Standardmäßig überspringt VS Properties beim debuggen. Das Verhalten kannst du in 'Tools/Options/Debugging/Step over Properties and Operators' ändern.

Für diesen Beitrag haben gedankt: WSS-130
WSS-130 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mi 23.01.13 12:14 
Zitat:
Im gezeigten Code wird data auch nur erzeugt aber nie benutzt. ... Wolltest du im Code noch irgendwo dataTxt der data Liste hinzufügen? So wie dein Code jetzt ist wird ein dataTxt bei jedem Schleifendurchlauf erzeugt, gefüllt und am Ende des Durchlaufs zerstört ohne das da was mit passiert.


Danke Ralf!!! :-D Und ich wunder mich warum nie was in data geschreiben wird :-D... klar wird das nicht ohne Add.

Die anderen "Kleinigkeiten" die du angesprochen hast sind reine copy paste Fehler... Die Probleme hatee ich im Compiler nicht.
Ich hab das jetzt alles mal im Code meines letzten Posts editiert.

Zitat:
Zitat:
Und ich kann mit dem Debugger den "set" nicht verfolgen


Standardmäßig überspringt VS Properties beim debuggen. Das Verhalten kannst du in 'Tools/Options/Debugging/Step over Properties and Operators' ändern.


Okay das versuch ich gleich mal!