myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Aus Text Datei lesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Aus Text Datei lesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Brainbug01
myCSharp.de-Mitglied

Dabei seit: 09.01.2020
Beiträge: 3


Brainbug01 ist offline

Aus Text Datei lesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Zusammen,

ich bin neu hier und ja ich bin schon länger in Foren unterwegs und weis wie es ist neu zu sein. Man stellt "dumme" Fragen und hofft innerhalb kurzer Zeit die Lösung sofort in der nächsten Antwort zu erhalten. Dem muss nicht so sein großes Grinsen
Ich bin seit gut 1 Woche dran C# zu lernen und meine zweite kleine Anwendung läuft soweit.
Eine Zahl wird aus einer Datei gelesen und in ein Textfeld eingetragen. Beim klick auf einen Button wird die Nummer um 1 erhöht, zurück in die Datei geschrieben und in die Zwischenablage kopiert. ( Erste Anwendung war Primzahlen ausgeben, funktioniert auch ). Ich versuche mich mit dem Thema zu beschäftigen uns lese viel um Netz und habe einen Video Kurs + Buch gekauft. Nun zu meinem Problem.

Die Nummer lese ich ein:

C#-Code:
public string path = @"C:\Temp\Nummer.txt";

Jetzt ist allerdings der Pfad zu Datei im Projekt fest verankert. Möchte jemand die Datei an einem anderen Ort haben geht dies momentan nur über das Projekt zu ändern. Deshalb die Idee den Pfad in der Art .ini abzulegen:

C#-Code:
// In der Pfad.ini wird als Text der Pfad zur .txt geschrieben in der die Nummer steht
// Inhalt der Pfad.ini:
// C:\Temp\Nummer.txt
public string PfadzurIni = @"C:\Temp\Pfad.ini";
// Und hier soll der Pfad, der in der Pfad.ini steht, genommen werden um die Nummer zulesen
public string PfadzurNummer = System.IO.File.ReadAllText(PfadzurIni);

Fehlermeldung:

Fehlermeldung:
Ein Feldinitialisierer kann nicht auf das nicht statische Feld bzw. die nicht statische Methode oder Eigenschaft "Form1.PfadzurIni" verweisen.

Natürlich habe ich schon einige versuche unternommen die Lösung im Netz zu finden. Leider ohne Erfolg.
Könnte mir jemand unter die Arme greifen und mich unterstützen?
11.01.2020 14:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.825
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Aaaabsolute Grundlagen vom Aufbau von C#. fröhlich
Aber jeder hat klein angefangen.

C#-Code:
public string PfadzurNummer = System.IO.File.ReadAllText(PfadzurIni);

Das geht nicht - ging nie, wird nie gehen.

Das muss in dieser Form innerhalb einer Methode oder Eigenschaft verwendet werden, da die Quelle (der Pfad) veränderlich ist.
Eine Quelle in der Feldinitialisierung muss unveränderlich sein.

zB (mit Syntaxzucker)

C#-Code:
public string PfadzurNummer {get;} => System.IO.File.ReadAllText(PfadzurIni);

zB (ohne Syntaxzucker)

C#-Code:
public string PfadzurNummer {get { return System.IO.File.ReadAllText(PfadzurIni); } }

PS: wenn es Dir möglich ist (und das nicht gerade eine Vorgabe oder Übung sein soll), dann verzichte auf Ini-Dateien. Die gehören in die Mottenkiste.
Verwende XML oder Json; die lassen sich validieren und auch direkt mit .NET Boardmitteln sauber verarbeiten (Ini nicht so wirklich).
11.01.2020 14:47 Beiträge des Benutzers | zu Buddylist hinzufügen
Brainbug01
myCSharp.de-Mitglied

Dabei seit: 09.01.2020
Beiträge: 3

Themenstarter Thema begonnen von Brainbug01

Brainbug01 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Abt
Danke erstmal.
Eine Vorgabe ist es schon aber ich kann ja argumentieren das .ini nicht gut ist, es gibt ja einen Grund. Den Grund muss ich natürlich selber noch nachlesen und verstehen. Deine Aussage zu nehmen ist mir zu einfach ich möchte es ja auch verstehen warum es so ist.
get und set kommen noch im Video Kurs sowie im Buch dran. Ich bin mit der Aufgabe wohl etwas zu früh oder habe die Grundlagen nicht verstanden.
11.01.2020 15:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.825
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Schau Dir den Unterschied von Feldern und Eigenschaften, sowie das Thema static, const etc in C# an.
Dann siehst Du, wieso Deine Zeile mit einem veränderlichen Feld nicht klappt / klappen kann.

Was aber technisch zumindest gehen würde wäre, wenn Du den Pfad als static oder const (als Konstante) definierst, und diese Variable dann in der Feldinitialisierung nutzt.

C#-Code:
public static string PfadzurIni = @"C:\Temp\Pfad.ini";
public string PfadzurNummer = System.IO.File.ReadAllText(PfadzurIni);

Dadurch ist der Pfad zur Ini nicht veränderbar und kann als Quelle für die Feld-Initialisierung verwendet werden.
11.01.2020 15:17 Beiträge des Benutzers | zu Buddylist hinzufügen
Brainbug01
myCSharp.de-Mitglied

Dabei seit: 09.01.2020
Beiträge: 3

Themenstarter Thema begonnen von Brainbug01

Brainbug01 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hilfe zur xml habe ich gerade hier gefunden:  [Tutorial] Dateioperationen: Alles über Dateien 2.2 Da steht schon sehr viel was ich probieren möchte.
11.01.2020 15:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Papst Papst ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.09.2014
Beiträge: 268
Entwicklungsumgebung: VS2017
Herkunft: Kassel


Papst ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das Tutorial wurde für .NET Framework 2.0 geschrieben.

Prinzipiell funktioniert das alles noch, aber gerade bei IO gibt es seit ein paar Jahren Nebenläufige Konzepte mit async & await, die sich in vielen der API's wieder finden.
Das ist vor allem dann praktisch, wenn du mit UI's arbeitest.
12.01.2020 13:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.584
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Statt direkt mit INI oder XML zu arbeiten, ist hier eher  [Tutorial] Konfigurationsmodell im .NET Framework zu bevorzugen (welches zwar auch auf XML basiert, aber die direkten Zugriffe auf einzelne Eigenschaften anbietet).

Edit: Leider wurden die Bilder im Artikel beim internen Umzug des Forums wohl nicht mitportiert (welche ich persönlich sehr hilfreich dort fand).

Edit2: In  App.Config: Basics and Best Practices (u.a. unter "Settings") gibt es aber ähnliche Bilder dazu, welche die UI im VS zeigen.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Th69 am 12.01.2020 13:45.

12.01.2020 13:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 31.05.2020 11:31