Autor |
Beitrag |
SSC streezer
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Di 10.06.08 16:09
Hallo Leute,
ich hab ja in meinem Post ( www.c-sharp-forum.de...+anzeigen_83868.html) das Problem gehabt ein Textfile strukturiert einzulesen - das funzt jetzt Problem los.
jetzt ist mein weiteres Ziel, das File wieder zu speichern, und zwar dass die einzeelnen Zeilen wieder hergestellt werden und es wieder ein Zeilen-für-Zeile txt File wird.
wie kann ich den Treeview einlesen ? muss ich dazu ganz normal einen filestream und reader machen?
denke mal da eignet sich die Tag Eigenschaft sehr gut...
wenn ich folgendes mache:
C#-Quelltext 1:
| fileNode.Tag = fileNode; |
soltle das Tag ja eigentlich den Namen vom FileNode bekommen - tut es aber nicht :s
gruss,
streezer
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Di 10.06.08 16:27
SSC streezer hat folgendes geschrieben: | wie kann ich den Treeview einlesen ? muss ich dazu ganz normal einen filestream und reader machen? |
treeView.Nodes
node.Name / node.Text
so kannst du alle Nodes durcharbeiten (bzw deine Struktur) das kannst du dann jeweils per Textwriter oder Streamwriter in ein TextFile schreiben.
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 11.06.08 08:42
ok hab das jetzt so:
treefile.tag wird oben beim erstellen des treeview instanziert.
jetzt - so wie der code steht - erhält der tag den Wert 989 :s böööö - deshalb hab ich Convert.ToString hingeschrieben und gehofft dass dies das Problem behebt =).. klappt leider nicht...
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:
| FileStream fs = new FileStream(m_path + "/SAVE.txt", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter m_streamWriter = new StreamWriter(fs);
if (treeFile.Nodes.Count > 0) { try { m_streamWriter.WriteLine(Convert.ToString(treeFile.Tag)); } catch { MessageBox.Show("Ein Fehler ist aufgetreten während des Speicherns. Änderungen nicht gespeichert", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { MessageBox.Show("Änderungen gespeichert", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("keine Zeilen vorhanden. Bitte ein File einlesen.", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); } m_streamWriter.Flush(); m_streamWriter.Close(); fs.Close(); |
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 11.06.08 08:58
ich glaube du hast mich missverstanden
Du musst selbst aus den Nodes wieder die Textform machen die du haben willst.
Also quasi so wie du sie eingelesen hast nur umgekehrt.
Du kannst nicht einfach das ganze Objekt in einen Streamwriter schmeissen und hoffen das es die passende Form hat.
Du könntest natürlich beim einlesen schon den treenode in irgendeiner eigenschaft (seis nun name, text oder sonst was) den entsprechenden text zuweisen den es später beim speichern haben soll oder du machst es halt erst beim speichern.
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 11.06.08 10:12
ich versteh nur bahnhof :s *seufz*
mir ist schon klar dass ich die funktion die ich fürs einlesen geschrieben hab einfach umkehren muss... aber was ist das gegenteil von der funktion "split"? diese umdenkung bereitet mir einfach enorme kopfschmerzen...
hier der code der das ganze einliest:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| StreamReader sr = null; try { sr = new StreamReader(filename); while (!sr.EndOfStream) { string line = sr.ReadLine(); List<string> elements = line.Split(".".ToCharArray()).ToList(); ParseLineAndInsertNodesInTree(elements, nodes); } } finally { sr.Close(); } |
_________________ >> Swiss Soldiers Clan << visit us
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 11.06.08 10:42
SSC streezer hat folgendes geschrieben: | aber was ist das gegenteil von der funktion "split"? |
string.Join
oder der Stringbuilder oder sonstige arten um strings zu verketten
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 11.06.08 11:01
_________________ >> Swiss Soldiers Clan << visit us
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 11.06.08 11:10
SSC streezer hat folgendes geschrieben: | C#-Quelltext 1: 2: 3: 4: 5: 6:
| while (treeFile.Nodes.Count > 0) { string line = sw.WriteLine(); List<string> elements = string.Join(".".ToCharArray()).ToList(); sw.WriteLine(line); } | |
ehrlich gesagt erkenne ich in diesem Code-Schnippsel keinen Sinn.
Und wenn du nicht ein bischen darüber nachdenkst wie der string am Ende aussehen soll und woher du die Nötigen Teile dazu bekommst, wirst du es wohl auch nicht hinkriegen.
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 02.07.08 08:23
habs nicht geschafft -.- echt sch..... es gibt kein join bei c# :s
_________________ >> Swiss Soldiers Clan << visit us
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 02.07.08 08:43
SSC streezer hat folgendes geschrieben: | es gibt kein join bei c# |
doch gibt es
C#-Quelltext 1: 2:
| string.Join(string separator, string[] value); string.Join(string separator, string[] value, int startIndex, int count); |
Es gibt aber auch Stringbuilder usw.
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 02.07.08 08:59
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| StreamReader sr = null; try { sr = new StreamReader(filename); while (!sr.EndOfStream) { string line = sr.ReadLine(); List<string> elements = line.Split(".".ToCharArray()).ToList(); ParseLineAndInsertNodesInTree(elements, nodes); }
MessageBox.Show("Änderungen gespeichert", "", MessageBoxButtons.OK, MessageBoxIcon.Information); } |
wenn ja die variable "line" splitte ist das ja das gegenteil - aber wenn ich da z.b. "line.stringbuilder" oder "line.join" machen will, geht das nicht - das attribut hab ich nicht zur verfügung :S
_________________ >> Swiss Soldiers Clan << visit us
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 02.07.08 09:21
kann es sein dass es so etwas ist:
C#-Quelltext 1:
| List<string> elements = string.Concat(line); |
_________________ >> Swiss Soldiers Clan << visit us
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 02.07.08 09:41
|
|
SSC streezer 
      
Beiträge: 110
WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
|
Verfasst: Mi 02.07.08 11:05
hm ok hat geklappt vielen dank ! 
_________________ >> Swiss Soldiers Clan << visit us
|
|