Autor |
Beitrag |
karomue
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 09:29
Hallo,
ich bin ganz neu hier und in der Altersgruppe "Rentner" Außerdem versuche ich (immer mal wieder) mich in Programmiersprachen, so momentan rel. verzweifelt in C#.
Was ich für den Anfang mal wissen sollte, wie lese ich ein Textfile ein. Z.B.:
$GPGGA,125714,4652.527935,N,00711.315423,E,1,,,538.0,M,,M,,*77
$GPVTG,66,T,,M,3.37,N,6.24,K,A*24
$GPRMC,125719,A,4652.528320,N,00711.310287,E,2.54,96,020110,,,A*6A
$GPGGA,125719,4652.528320,N,00711.310287,E,1,,,538.0,M,,M,,*76
$GPVTG,96,T,,M,2.54,N,4.71,K,A*2D
$GPRMC,125724,A,4652.529664,N,00711.306688,E,2.02,119,020110,,,A*59
$GPGGA,125724,4652.529664,N,00711.306688,E,1,,,538.0,M,,M,,*70
$GPVTG,119,T,,M,2.02,N,3.74,K,A*1A
$GPRMC,125729,A,4652.530624,N,00711.303999,E,1.49,118,020110,,,A*5F
$GPGGA,125729,4652.530624,N,00711.303999,E,1,,,539.0,M,,M,,*7A
wobei dann ja nach 1. Feld ($PG...) die anderen ausgewertet werden sollen.
Bitte nur mal das "Gerüst", zunächst ohne irgendwelche besonderen Prüfungen, ich muss irgendwo mit dem Verständnis anfangen.
Und sorry, nein, die Suche habe ich noch nicht bemüht.
Ist diese Frage überhaupt hier im Forum "erlaubt" oder im Niveau zu tief?
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 12.04.10 09:42
Hallo und  ,
Fragen für Hilfestellungen sind hier genau richtig. Wir sehen es nur nicht gern, wenn jemand ohne eigen Initiative kompletten Code will.
Für Dateioperationen gibt es im .NET-Framework die Klasse File (NS: System.IO). Methoden und Properties bieten dir entweder Visual Studio oder die MSDN Dokumentation. Da findet man oft intuitiv die Richtigen Funktionen. In deinem Fall sind wohl die ReadX-Methoden die Richtigen.
Wenn du nun die Strings verarbeiten willst Hilft dir die Klasse String (NS: System.String). Dort kannst du nach einem bestimmten String Anfang suchen oder Inhalt. Eine weitere Alternative ist die Klasse Regex, welche es dir erlaubt, auf einen String reguläre Ausdrücke zu verwenden. Damit gibst du einen Struktur und Inhalt eines Strings vor und kannst dann auf dessen Zugreifen. Zum Beispiel:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| string input = "Mein Alter ist 27 Jahre." string pattern = "Mein Alter ist \d+ Jahre." Match match = Regex.Match(input, pattern);
if (match.Success) { Console.WriteLine(match.Value); } |
Ich denke damit hast du die grundlegenden Klassen um die Aufgabe zu bewältigen. Falls noch Fragen aufdrehten kannst du diese gerne hier wieder Stelle.
Viel Erfolg & Gruß
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 10:04
Hallo Daniel,
zunächst vielen Dank für die Begrüßung.
Ja, Code wäre was schönes... Weil, ich stehe mit den modernen Sprachen gewaltig auf dem Kriegsfuß. Konnte vor Jahren - das war so um Mitte 1990 der Fall - noch mit Turbopascal leidlich umgehen, aber die Kurve zur sog. objektorientierten Programmierung habe ich nicht wirklich mitbekommen. So kann ich für den Hausgebrauch etwas Excel-VB, aber bereits mit Visual-VB hapert es wieder. Auch kann ich ein wenig C++, dort hat mir ein netter Mensch die Einleseroutine gegeben. Aber bereits hier fehlt das tiefere Verständnis dafür, was wirklich passiert. So habe ich auch von einem weiteren netten Menschen ein kleines C#-Prog das eine gewisse Auswertung des angeschnittenen Problems erledigt, aber bei der Fileeinleserei (der nette Mensch ist Profiprogrammierer mit eigener SW-Fa.) sind so viele Prüfungen auf Gott und die Welt eingefügt (Unterprogramme würde ich sagen, o.k., die haben einen anderen "Namen"), dass es mir schier nicht möglich ist auch im Debug-Mode zu erkennen, was wirklich geschieht.
Ich vermute mal, dass das Einlesen von Textfiles einfach ist - wenn mans kann. Getreu dem netten Spruch, Kunst kommt von können, wenn mans kann ist es keine Kunst mehr.
Nun denn, ich werde mich mal auf die Suche nach den Dingen machen, die Du mir aufgezeigt hast. Vielleicht fällt der Groschen ja mal.
Und ja, es gibt ja einiges was man so über C# auch finden kann, Hilfe, Tutorial.. Nur setzen diese leider meist soviel voraus, dass es mir nicht gelingt solches nachzuempfinden. Irgendwie drängt sich mir der Eindruck auf, dass heutige "Menschen" ein Grundwissen haben, das mir einfach irgendwie fehlt. Äußert sich auch in Gesprächen mit meinem Sohn, der auch nicht verstehen kann wo bei mir der Knoten liegt.
Na gut, schaun mer mal...
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 10:24
Nachtrag:
sehe gerade, Du bist Informatiker.
Das ist einerseits jemand, der mir helfen könnte, wenn - andererseits - ich einigermaßen die gleiche Sprache sprechen würde. Und da hapert es bereits. Kannst Du mein Problem wenigstens im Ansatz erkennen?
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 12.04.10 12:50
*g* ehrlich gesagt, Nein.Aber ich weiß, dass wenn man ohne "reale" Unterstützung an einem Problem verzweifeln kann und wenn jemand einem über die Schulter schaut und kleine Hilfestellung gibt es flutscht.
Ich nehme an, du verwendest irgendeine Version von Visual Studio (VS). Wenn du ein Projekt anlegst (zum Beispiel ein Consolen-Projekt) erzeugt VS alle benötigten Dateien und Konfiguriert das Projekt dementsprechend. Es erzeugt auch eine Datei Programm.cs mit der Methode Main, welche als Einstiegspunkt für dein Programm dient.
An dieser Stelle könntest du gleich deinen Code einreschreiben und er wird ausgeführt sobald das Programm gestartet wird. Ist die Aufgaben steller komplexer oder will man wiederverwendbaren Code schreiben, bieten sich meist deine sogenannten "Unterprogemm" bzw. in C# Methoden an. Diese können je nach Zuordnung wiederum in Klassen gepackt werden.
Soweit zur Grundlage eines Projekts.
Als Übung kannst du alles zuerst in der Main schreiben.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| string[] lines = Files.ReadAllLines("deinpfad");
foreach(string line in lines) { Console.WriteLine(line);
string pattern = @"\$(?<name>.+?),.*)"; Match match = Regex.Match(line, pattern);
if (match.Success) { Console.WriteLine("Identifier: " + match.Groups["name"].Value); } } |
Ich hoffe ich hab mich verständlich ausgedrückt...
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 13:06
O.K., und danke.
Jetzt kommt erst mal Arbeit auf mich zu. Das kann - wieder - eine Weile dauern.
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 13:24
Hallo Daniel, Nachtrag.
Ich muss C# neu "aktivieren", denn seit der letzten Akivität ist fast 1 Jahr verstrichen. Ich verwende übrigens VS2008.
Versuche mal einen Dateianhang, hoffentlich mit allen notwendigen Fieles (Form1.cs und Bwegliche Feiertage.exe) nur mal so als Beispiel für meine "Kenntnisse".
Wichtig wäre eben, wie lese ich ein Textfile ein, wie bearbeite ich es sequenziell - alle $GPGGA, darunter alle Felder der Reihe nach - und wie kann ich ein File a la Darteiexplorer dafür auswählen. Das sind so die Grund-"Unterprogramme" die mir einfach fehlen.
Aber ich muss mich dazu erstmal wieder n C# "einlesen", denn die letzte Aktivität dazu ist wohl doch schon zu lange her um jetzt ad hock weiter zu machen.
Aber der Sommer mit den Terassennachmittagen kommt - hoffentlich - ja.
Einloggen, um Attachments anzusehen!
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 13:26
Das mit den Dateianhängen klappt noch nicht wirklich. Hier das Forms1.cs.
Einloggen, um Attachments anzusehen!
|
|
karomue 
      
Beiträge: 18
Win XP, Vista, Win 7
Visual C# 2008 Expreß
|
Verfasst: Mo 12.04.10 13:31
Ein weiteres Problem ist der "Umgang" hier im Forum. Das wird aber im Laufe der Zeit zu schaffen sein.
Sollte ich jetzt nicht alle Files angehängt haben die einen kurzen Überblick über meine "Kenntnisse" geben können, sagt mir einfach welches ich anhängen soll. Für das gesamte Projekt ist es ein anderes, zumindest soviel weiß ich noch momentan.
Sorry, aller Anfang - auch Wiedereinstieg - ist schwer.
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mo 12.04.10 16:53
Hallo und noch
Für den Einstieg in die Struktur eines Programms kann ich dich noch auf Wikibooks verweisen. Ich stehe zwar noch sehr am Anfang, und es sieht nach Durcheinander aus. Aber unter Allgemeines/Entwicklungsumgebungen gibt es ein paar Hinweise, wie ein Programm erstellt wird, und unter C#-Lehrbuch steht ein Programm zum Einstieg.
Außerdem möchte ich Daniels Hinweise ergänzen: Du solltest dir angewöhnen, in der SDK-Doku/MSDN/Hilfe zu blättern, z.B. in der File-Klasse (wie vorgeschlagen). Zu den ReadXxx-Methoden gibt es Erläuterungen und Beispiele.
Zum Aufteilen einer Zeile gibt es die String.Split-Methode.
Gruß Jürgen
PS. Ich gehöre auch zur Generation 60+.
PS 2. Mehrere Beiträge kurz hintereinander sind nicht nötig; mit dem Schere-Button kannst du einen Beitrag ändern (vor allem, wenn es noch keine Reaktion darauf gab).
PS 3. Ich mag es nicht, Code herunterladen zu müssen, sondern lese ihn lieber direkt. Aber das mag Geschmackssache sein.
|
|
|