Entwickler-Ecke
Basistechnologien - Werte dem Objekt übergeben?
M-Cha - Mi 16.12.09 10:33
Titel: Werte dem Objekt übergeben?
Da mein Programm über mehrere Klassen verfügt zeige ich euch meine beiden wichtigsten!
Mein Problem ist, ich habe ein Klasse "XmlClass" und meine MainForm! Darüber hinaus gibt es noch andere Klassen. In der XmlClass werde Werte an die String übergeben und beim Debug mit BReakpoints sehe ich diese auch in der MEthode "toXML".
In der MainForm sollen dann in der "textBox1" die Werte aus der XmlClass angezeigt werden. Wie bekomme ich das hin?
Wenn ich ein neues Objekt erstelle, und es mit Werten fülle (test = new TableClass("test","test",false);) geht es. Aber er soll die Were nehmen, die in der XmlClass gelesen werden.
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:
| namespace VisioIF { class XmlClass { public String name = ""; public String permission; public Boolean tempTable = false;
public XmlClass( String name, String permission, Boolean tempTable) { this.name = name; this.permission = permission; toXML(); }
protected void init() { }
public String toXML() { String xml = "<TABLE>\n"; xml = xml + "<Name> =" + '"' + this.name + '"' + "</Name>\n"; xml = xml + "<Permission> =" + '"' + this.permission + '"' + "</Permission>\n"; xml = xml + "</TABLE>";
return xml; } } } |
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:
| public partial class MainForm : Form {
XmlClass test = null; public MainForm() { InitializeComponent();
this.Invalidate();
}
private void button1_Click(object sender, EventArgs e) { string pfad = @"C:\Dokumente und Einstellungen\Harry\Desktop\test.txt";
Program include = new Program(); include.ReadProcedure(pfad);
test = new XmlClass("test","test",false); textBox1.Text = test.toXML(); } |
danielf - Mi 16.12.09 10:54
Hallo,
ich verstehe dein Problem nicht. Was meinst du mit:
| Zitat: |
| Aber er soll die Were nehmen, die in der XmlClass gelesen werden. |
In der XmlClass wird ja gar nichts gelesen? :gruebel:
Gruß Daniel
PS: Im Konstruktor von XmlClass wird der Parameter tempTable nicht der Klassenmember zugewiesen und der Aufruf von toXML() bringt nichts außer Rechenzeit zu verbraten.
Die toXML-Methode verbrät auch eine Menge an Rechenzeit, den die Klasse String ist immutable so dass er bei jedem + join ein neues Objekt anlegen muss.
Besser wäre ein StringBuilder. In deinem Fall würde ich sogar string.Format nehmen
C#-Quelltext
1: 2: 3: 4:
| public string toXml() { return string.Format("<TABLE>\n<Name>{0}</Name>\n<Permission>{1}</Permission>\n</TABLE>", this.name, this.permission); } |
M-Cha - Mi 16.12.09 11:15
Danke schon mal werde es dann umändern.
Habe ja geschrieben es gibt noch mehrere Klassen, doch diese möchte ich nciht alle auflisten. Fasse es eben zusammen soweit es geht.
In der Mainformn rufe ich ja folgendes auf:
C#-Quelltext
1: 2: 3: 4: 5:
| string pfad = @"C:\Dokumente und Einstellungen\Harry\Desktop\test.txt";
Program include = new Program();
include.ReadProcedure(pfad); |
In der Klasse wird die Datei geöffnet und bearbeitet.
Sie gibt dann Werte an die Klasse
Function weiter.
Die Klasse function bearbeitet sie weiter und ibt am Ende folgendes aus:
C#-Quelltext
1:
| tables.Add( new XmlClass( tablename , ReadOnly(fd[i].Value))); |
In der Klasse "XmlClass" sind dann die Werte vorhanden und bei einem Debug mit Breakpoints sehe ich das sich in der MEthode toXml die Werte hinter den jeweiligen Variablen (this.name usw.) verbergen.
Jetzt möchte ich das er mir das dann in der MainForm ausgibt wenn ich:
textBox1.Text = test.toXML(); angebe.
Leider funktioniert es nicht mit den Werten die gelesen wurden.
Ich muss immer selber welche definieren wie hier:
C#-Quelltext
1:
| test = new XmlClass("test","test"); |
danielf - Mi 16.12.09 11:43
Wie greifst du den auf deine XmlClass zu?
Wenn du die XmlClass dem Container tables hinzufügst, musst du die Daten auch wieder aus diesem lesen.
textBox1.Text = tables[0].toXML(); oder so ;)
PS: Eine Klasse mit dem Namen function ist mal richtig übel. Irgend ein Sinn muss sie doch haben und dementsprechend auch einen geeigneteren Namen!
M-Cha - Mi 16.12.09 14:49
Ja soll ja erstmal so eißen später bekommen sie alle geeignete Namen. Kommt vielleicht falsch rüber (mal wieder) meine Frage.
Ich erkläre mal alle Klassen die ich habe es ausführlicher!
Class Programm = Textdatei wird gelsen und Strings werden in
C#-Quelltext
1:
| functions.Add( new FunctionClass( content )); |
gespeichert.
Class FunctionClass = Strings werden verarbeitet und Tabellen und Rechte werden in
C#-Quelltext
1:
| tables.Add( new XmlClass( tablename , ReadOnly(fd[i].Value) )); |
gespeichert.
Class XmlClass = Die Tabellen und Rechte werden dem XML String übergeben!
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:
| class XmlClass { public String name = ""; public String permission; public Boolean tempTable = false;
public XmlClass( String name, String permission, Boolean tempTable) { this.name = name; this.permission = permission; this.tempTable = tempTable; toXML(); }
public String toXML() { String xml = "<TABLE>\n"; xml = xml + "<Name> =" + '"' + this.name + '"' + "</Name>\n"; xml = xml + "<Permission> =" + '"' + this.permission + '"' + "</Permission>\n"; xml = xml + "<tempTable> =" + '"' + this.tempTable + '"' + "</tempTable>\n"; xml = xml + "</TABLE>";
return xml; } } |
In der MainForm steht der Pfad für die Class "Programm" damit sie überhaupt eine Datei zum verarbeiten hat.
Und jetzt wollte ich in der der MainForm sowas bauen, das er mir alle Tabellen und Rechte mit der toXML() Struktur ausgibt. Erstmal in der Textbox später in einer Datei.
Die Methode toXML wird auch mit den richtigen Werten gefühlt. Bis dahin stimmt alles super. Nur wie sage ich jetzt in der MainForm, das er die Struktur der Methode toXML nehmen soll und die variablen mit den richtigen werten füllen soll?
Da hänge ich leider! Das funktioniert leider nicht gant bei mir > textBox1.Text = tables[0].toXML();
Bin schon alles am durchforsten nur jetzt ist der Hänger wieder drin. Danke im voraus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!