Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
29.08.12, 12:21
|
#1
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
Variable einem Textdokument hinzufügen C#
Hoi,
ich möchte den Inhalt verschiedener RichTextBoxen unter einander in ein Textdokument speichern (das ganz in der Sprache C#). Bis jetzt wird die erste Zeile des Dokuments immer von der nächsten Variable überschrieben. Es gibt doch 100% irgent wo in der Sprache oder Visual Studio irgent eine Funktion oder sonst was wo man mit angeben kann ob diese Variable nun dem Dokument hinzugefügt werden soll oder nicht? Sowas "suche" ich zumindest und verspreche mir das jemand hier vom Board die nötige Ahnung davon hat
MfG döner
|
|
|
29.08.12, 12:31
|
#2
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Ohne dass ich jetzt irgendeine Ahnung von C# habe, aber zumindest kann ich Docs lesen ...
Quelle: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Zitat:
Security
This example creates a new file, if one does not already exist. If the file already exists, the application will overwrite it.
In order to append an existing file, set the Boolean parameter to true, as follows:
Code:
System.IO.StreamWriter file =
new System.IO.StreamWriter("c:\\test.txt", true);
|
Weiß jetzt nicht ob du dazu diese Klasse verwendest, aber das hast du ja auch nicht dazu gesagt. Jedenfalls sollte "true" an der richtigen dein Problem beheben (wenn du diese Klasse verwendest).
|
|
|
29.08.12, 16:52
|
#3
|
Banned
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
|
Boah Döner, Deine Beschreibung ist echt nicht zu lesen bzw. zu verstehen.
Erläutere das ganze mal ordentlich und verwende ein Beispiel, dann kann ich Dir auch sagen, wie Du Dein "Problem" lösen kannst.
|
|
|
29.08.12, 17:45
|
#4
|
Anfänger
Registriert seit: Feb 2008
Beiträge: 18
Bedankt: 2
|
Code:
string txtBox = [RichTextBoxName].Text;
string txtBox1 = [RichTextBoxName1].Text;
string txtBox2 = [RichTextBoxName2].Text;
StreamWriter file = new StreamWriter([Pfad TextDokument]);
file.WriteLine(txtBox);
file.WriteLine(txtBox1);
file.WriteLine(txtBox2);
file.Close();
Hast du etwa so was gemeint?
|
|
|
30.08.12, 08:32
|
#5
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
@slahn u. @Kaito
bei der Zeile:
Code:
StreamWriter file = new StreamWriter("C:\temp\test.txt", true);
hängt er sich immer auf, wenn ich das programm gestartet habe und den button drücke.
Fehlermeldung:
Zitat:
ArgumentException wurde nicht behandelt.
Illegales Zeichen im Pfad.
|
@ProgMaster
Ich fand es war nun nicht so schwierig zu verstehen und ich muss sogar gestehen das ich beim erstellen des Thread s an dich gedacht hatte und mir dann sogar etwas Mühe gegeben hatte, auch mal was GROß zu schreiben damit ich mir zumindest das nicht emhr anhören muss
aber gut dann will ich es nocheinmal erklären.
Es soll ein kleines Programm entstehen, welches aus 5 textboxen oder richtextboxen besteht dazu zwei buttons. Das Programm soll dafür sorgen, dass eine Textdatei erstellt wird, welche hinterher zb bei Thunderbird als Signatur dient. dem entsprechend gibt man meinetwegen name, telefonnummer,faxnummer,e-mail-adresse, und anschrift des betriebs an und geht danch auf einenn button namens "anlegen" dann soll die Signaturvorlage erstellt werden und in iein verzeichnis geschoben werden.
[IMG] [/IMG]
Ich hofee du verstehst es jetzt
MfG döner
|
|
|
30.08.12, 10:04
|
#6
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Ich glaube ProgMaster ging es eher darum, wie der Code aussieht. So weiß man leichter woran es scheitert und was du dazu für Klassen und Funktionen verwendest (so wie du es ja auch jetzt gemacht hast).
Wenn du dir meinen Auszug von MSDN ansiehst, wirst du erkennen, dass die Pfadangabe bei denen anders ist ... du hast ganz einfach vergessen, [\] zu escapen. Z.B. wirst du ja wissen dass '\n' für ein [Carriage Return] steht. Ein '\t' (wie in einem deiner Fälle) steht für [Tab]. Für ein [\] musst du ganz einfach ein '\\' verwenden.
Somit sollte die Zeile ganz einfach auf:
Code:
StreamWriter file = new StreamWriter("C:\\temp\\test.txt", true);
geändert werden ...
|
|
|
30.08.12, 11:36
|
#7
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
|
Oder einfach ein @ davor, macht es meiner Meinung nach besser lesbar.
|
|
|
30.08.12, 12:38
|
#8
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Zitat:
Zitat von Thelvan
Oder einfach ein @ davor, macht es meiner Meinung nach besser lesbar.
|
Jop, deine Lösung ist wesentlich besser. In C++ kennt man so was nicht
|
|
|
30.08.12, 14:29
|
#9
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
@ slahn
das ist natürlich richitg und es funktioniert jetzt auch
ich muss aber gestehen das ich mir deinen link angesehen hatte nur wie du schon sagtest hätte ich doch etwas besser als ich nach dem fehler gesucht habe hingucken können.
nun tut sich bei mir ejodch schon eine neue Farge auf ^^
Ich will das der nutzer sich ein bild von seiner platte aus wählen kann und dieses in einer picturebox angezeigt wird, gedacht ahtte ich mir, dass ich mit dem auswählen des files den pfad in eine variable schreibe und anschließend die picturBox mit picturebox1.load("pfad"); fülle (bin zur zeit noch am googlen
döner
|
|
|
30.08.12, 14:44
|
#10
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Wie wäre es mit dem [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] zum suchen des Bildes?
|
|
|
30.08.12, 19:35
|
#11
|
Anfänger
Registriert seit: Mar 2012
Beiträge: 35
Bedankt: 40
|
Hi döner123,
ich nehme an du willst eine Art Programm schreiben, in dem du Daten von Personen mit Bild abspeicherst.
Deine Zeile oben hat in C# nicht funktioniert, da du mit dem \ Backslash eine Escape Seqenz einleitest, z.B. \n für eine neue Zeile. Soll der Backslash nicht interpretiert werden, dann musst du eintweder einen \\, doppelten Backslash machen(dann wird das Sonderzeichen nach dem ersten Backslash angedruckt oder vor dem ganzen string ein @ machen, so wie es schon beschrieben wurde damit in der ganzen Zeile der Backslash nicht interpretiert wird.
Wegen der Bildanzeige. Habe ich vor ca. einem Jahr so gemacht, wie slahn schon geschrieben hat am besten mit einem OpenFileDialog:
Code:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openfiledia = new OpenFileDialog();
if (openfiledia.ShowDialog() == DialogResult.OK)
{
//Die nächste Zeile ist dafür, dass das Bild an die PicBox größe angepasst
//wird!
mypicbox.SizeMode = PictureBoxSizeMode.StretchImage;
//Hier wird die Auswahl von dem OpenFileDialog Path der PicBox gegeben
mypicbox.ImageLocation = openfiledia.FileName;
//Hier kannst du gleich noch den Path vom Bild in eine Variable ablegen
string path = openfiledia.FileName;
}
}
Dabei musst du einfach nur eine PicBox auf deiner WinForm, mit dem Namen mypicbox angelegt haben. Beim Klick auf Button 1 wird der OpenfileDialog geöffnet und der User kann das Bild auswählen, du kannst beim OpenfileDialog noch einstellen, dass wie in einem richtigem Programm nur die richtigen Dateien hierfür z.B. nur .jpg Dateien angezeigt werden.
Viele Grüße,
|
|
|
31.08.12, 11:02
|
#12
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
hoi 3n1x_NX
danke für die erklärung, die war besser verständlich als die andere. sry slahn
es soll ein programm werden mit dem einfach ein e-mail signatur erstellt wird.
mit bild auswählen und anderem schnick schnack.
Was ich nun haben will ist, dass wenn ich ein bild in die picturebox lade und es kleiner ist als die Pbox selbst, dann soll diese sich per autosize an das bild anpassen, wenn jetzt jedoch die pbox sich per autosize an das bild angleicht und die pbox nun dadurch größer wird als die eigentliche standart größe, soll das bild gestreched werden. Das regt mich schon einige zeit heute auf da ich es nicht hinbekomme
Da hat doch bestimmt jemand eine ahnung wi eman das hinbekommt ? ^^
döner
|
|
|
03.09.12, 14:25
|
#13
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
Ich habe mich nun entschieden den PictureBoxSizeMode auf Zoom zu "stellen" vond aher habt sich obieger punkt erledigt..
@slahn
kannst du mir vllt sagen was nun an dieser zeile falsch ist?
döner
|
|
|
03.09.12, 17:40
|
#14
|
Banned
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
|
Umgebungsvariablen (C:\\Dokumente und Einstellungen\" + username + @"\Anwendungsdaten\Thunderbird) solltest Du niemals als absoluten Pfad aufrufen. Dazu gibt es entsprechende Konstanten in .NET.
|
|
|
05.10.12, 12:21
|
#15
|
Erfahrener Newbie
Registriert seit: Sep 2010
Beiträge: 143
Bedankt: 20
|
Ich hatte das Programm nun ne zeit lang in die ecke geworfen, bin nun aber wieder darauf zurück gekommen und hätte wieder ein paar Fragen:
Ich will nun bestimmte einträge in der config datei von Thunderbird löschen und danach die einträge der datei wieder hinzufügen (nur mit anderen werten). das funktioniert auch "wunderschön" (bei einem eintrag) jedoch wenn ich mehrere Einträge habe, welche aus der datei "gelöscht" werden sollen... nicht
Code:
while ((zeile = prefsread.ReadLine()) != null)
{
if (!zeile.StartsWith(@"user_pref(""mail.identity.id1.sig_file"))
{
prefswrite.WriteLine(zeile);
}
/* if (!zeile.StartsWith(@"user_pref(""mail.identity.id1.attach_signature"))
{
prefswrite.WriteLine(zeile);
} */
}
Wenn ich die zweite verzweigung nutze wird der inhalt der config datei logischerweise verdoppelt und die zusuchenden einträge werden auch nicht ebachtet aus der dort angegebene.
würde sich jemand dazu bereit erklären mir zu sagen wie man es denn anders lösen könnte?
Döner
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
().
|