Firefighter schrieb:
Th69 schrieb:
Setze doch einfach die DataGridViewColumn.Visble-Eigenschaft auf 'false'...
Respekt, das du da rausgelesen hast was er will.
Ich habe jetzt erst, nach bestimmt zehnmaligem lesen, verstanden was er wollte.
scheint sich erledigt zu haben. Ich muss wohl explizit angeben wenn ich einen Private Key generieren will
cspParams.KeyNumber = (int)KeyNumber.Signature;
muss also noch mit rein.
Ein Konstruktor kann nichts zurückgeben, er stellt jediglich ein neues Objekt. Du könntest in der Klasse eine neue Eigenschaft anlegen, die den Dateinamen enthält.
public class KundenTabelle
{
//...
public string Dateiname { get; private set; }
public KundenTabelle()
{
this.Dateiname = "datei.txt";
}
}
In der Main kannst du dann darauf zugreifen.
static void Main()
{
KundenTabelle tabelle = new KundenTabelle();
string datei = tabelle.Dateiname;
}
Der Dateiname kann außerhalb der Klasse aber nicht verändert werden.
Übrigens musst du nicht überall, wo KundenTabelle steht, per Hand ein neuen Namen ersetzen. Du kannst bei Visual Studio auf den Klassennamen rechtsklicken und "Umbennen" auswählen. Überall in deinem Code wird der Klassennamen, oder auch Methodennamen und sonstiges, durch das Neueingegebene ersetzt.
ja die richtige antowrt sende ich auch aber beim nächsten schleifen durchlauf bleibt der bei read stehen und wartet bis der client WIEDER sendet.Nur das tut der CLient irgendwie net.
Hallo Dravere,
danke für die schnelle Antwort.
Dein erster Vorschlag funktioniert:
XmlAttribute attr = XML_Datei.CreateAttribute("xsi", "noNamespaceSchemaLocation", "http://www.w3.org/2001");
attr.Value = "http://www.bla.de";
Knoten.Attributes.Append(attr);
Der Knoten sieht jetzt so aus:
<root xsi:noNamespaceSchemaLocation="http://www.bla.de" xmlns:xsi="http://www.w3.org/2001">
Im Vergleich zu
<root xmlns:xsi="http://www.w3.org/2001" xsi:noNamespaceSchemaLocation="http://www.bla.de">
Aber ich denke die Reihenfolge der Namespaceattribute dürfte keine Rolle spielen
PKn schrieb:
Würde das zuweißen passen wenn ich Hallo überschreiben will?
http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx
MSDN schrieb:
Return Value
Type: System.Xml.XmlNode
The first XmlNode that matches the XPath query or null if no matching node is found. The XmlNode should not be expected to be connected "live" to the XML document. That is, changes that appear in the XML document may not appear in the XmlNode, and vice versa.
Diese Methode ist somit in erster Linie zur Abfrage gemacht und mehr nicht. Du kannst nicht davon ausgehen, dass du damit etwas im DOM Tree überschreibst.
PKn schrieb:
Muss ich das file nochmal "rausschreiben"?
Wenn du den DOM Tree veränderst, musst du natürlich diesen wieder ins File schreiben. Du tätigst deine Änderungen nicht direkt am File sondern an einer Struktur, welche aus dem File in deinem Arbeitsspeicher erstellt wurde.
Du solltest dir zudem vielleicht System.Xml.Linq anschauen. Dort kannst du mit XPath Knoten selektieren und erhälst auch wirklich den Knoten in der Struktur. Kannst somit "live" Änderungen durchführen. Natürlich musst du dann trotzdem das File mit deiner veränderten Struktur überschreiben.
Grüssli
foreach(string wort in zaehler.Keys)
{
Console.WriteLine("{0} {1}", wort, zaehler[wort].Anzahl);
}
wort sollte klar sein. Mit zaehler[wort] kriegst du aus dem Dictionary ein WortElement-Objekt zurück, woraufhin du auf die Eigenschaft Anzahl aus der Klasse zugreifen kannst.
Servus,
du hast bestimmt google mit dem Falschen gefüttert. Davon gehe ich jetzt mal aus
google: visual studio 2010 express class diagram
Erster Link: http://stackoverflow.com/questions/1661685/visual-studio-express-free-class-diagram-tool
Viele Antworten
gruß
Hellsgore
Merk gerade das ich die Aufgabenstellung falsch verstand, ich dachte es geht nur darum die Worte zu zählen und doppelte weg zu lassen, aber das war ja nicht gefragt ^^
@Oli_1977
Dein letzter Code hat mehrere Probleme:
1. i ist nur im schleifen scope
2. zaehler[wort] = 0; wird knallen weil der Eintrag noch nicht vorhanden ist, du musst ihn noch hinzufügen
3. Wenn es ein Wort nur einmal gibt steht als Value 0, aber 0x stimmt doch nicht, es muss doch 1 sein
4. +1 kannst du immer sagen, ob es nach ersten add war oder bei allen weiteren (Siehe meine Lösung)
[5. Verwende lieber using for den stream reader]
[6. Definiere eine Variable erst kurz vor der verwendung (line)]
[7. Teile den Code weiter auf, das erhöht die Sauberkeit, ergibt ein besseres Gesamtbild und fördert wie wiederverwendbarkeit. Einfacher zu maintainen ist es dann ebenso]
(5, 6 und 7 sind nur zwecks Sauberkeit und Übersicht)
Hier meine Lösung:
static void Main(string[] args)
{
var text = ReadText("d:\\heinemann\\Kurzgeschichte.txt");
var results = CountWords(text);
foreach (var result in results)
Console.WriteLine("Wort: {0} = {1}x", result.Key, result.Value);
Console.ReadLine();
}
private static string ReadText(string filePath)
{
string text = "";
using (var reader = new StreamReader(filePath))
text = reader.ReadToEnd();
return text;
}
private static Dictionary<string, int> CountWords(string text)
{
var countedWords = new Dictionary<string, int>();
var matches = Regex.Matches(text, @"\w+"); // fals Regex nicht erlaubt ist kannst du hier auch dein Split verwenden
foreach (Match match in matches)
{
var word = match.Value;
if (!countedWords.ContainsKey(word))
countedWords.Add(word, 0);
++countedWords[word];
}
return countedWords;
}