Autor |
Beitrag |
Kleinohr
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 21:41
Guten Nabend Zusammen
Nach einer 3 stündigen suche im Netz wende bzw. nerve ich mich mal wieder euch. Habe folgendes Problem. Habe mir mehrere CSV-Dateien erstellt die Spaltenanzahl und Spaltenüberschriften sind in allen Dateien gleich. Das einzige was sich ändert ist der Inhalt der einzelnen Zeilen. Dies überschneiden sich jedoch auch nicht. Jetzt will ich die Dateien zusammenfassen wie im folgenden Beispiel
Datei 1
Spalte A SpalteB SpalteC
NR. x[m] y[m]
1001 5 4
1002 4 4
Datei2
Spalte A SpalteB SpalteC
NR. x[m] y[m]
11001 5 4
11002 4 4
zusammengefasste Datei
Spalte A SpalteB SpalteC
NR. x[m] y[m]
1001 5 4
1002 4 4
11001 5 4
11002 4 4
Könnt Ihr mir da weiter helfen wie ich es am besten anstelle. Vielleicht auch mit einem Codeschnipsel.
mfg
Kleinohr Moderiert von Christian S.: Topic aus C# - Die Sprache verschoben am Mo 17.05.2010 um 21:51
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 17.05.10 21:51
Hallo!
Was hast Du denn bisher probiert und wo kommst Du nicht weiter? Du musst doch nur die Dateien nach einander auslesen und die Zeilen jeweils in eine (einzige) andere Datei schreiben.
Je nach Ansatz wären hier die File-Klasse sinnvoll oder auch die StreamWriter und StreamReader-Klassen.
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kleinohr 
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 21:59
mir felht gerade ein Ansatz. Hatte mir die File-Klasse schon angenguckt und was probiert funzte aber nicht.
Am liebsten möchte ich meine 8 CSV-Dateien ganz einfach zu einer neunten zusammenfassen.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 17.05.10 22:11
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kleinohr 
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 22:48
muss erstmal neu überlegen habe es gelöscht. habe gerade noch einen tipp bekommen.
Eingabedateien zum lesen öffnen, die erste zwei Zeilen überlesen. In Zieldatei zum schreiben öffnen die ersten zwei Zeilen anlegen, dann die Inhalte aus den Eingabedateien zeilenweise reinschreiben.
Muss mich jetzt damit erstmal auseinandersetzen welche befehle es dafür gibt. und wie ich sie verwende.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 17.05.10 22:55
Kleinohr hat folgendes geschrieben : | Muss mich jetzt damit erstmal auseinandersetzen welche befehle es dafür gibt. und wie ich sie verwende. |
Dafür sollten die oben genannten Klassen ausreichen!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kleinohr 
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 22:56
weiß nur nicht wie man die ersten zwei Zeilen überlesen kann.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 17.05.10 22:59
Also entweder, Du liest mit File.ReadAllLines alle Zeilen einer Datei in Array und liest das erst ab Index 2 (also der dritten Zeile).
Oder Du liest die Datei Zeilenweise, z.B mit dem StreamReader. Dann liest Du die ersten zwei Zeilen zwar ein, ignorierst aber einfach, was Du da einliest. Erst ab Zeile 3 schreibst Du dann mit dem StreamWriter in die zu erzeugende Datei.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kleinohr 
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 23:26
boah ich raffe es einfach nicht. gibt es einen guten link für ein tutorial oder beispiel.
vielleicht sollte ich auch ne nacht drüber schlafen.
besten dank aber für die viele tipps
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 17.05.10 23:34
Zeig doch einfach mal, was Du versuchst und wo es hakt!
Für Dein spezifisches Problem wird es sicherlich kein Tutorial geben. Allerdings kann man das nur schwer sagen, weil ich nicht weiß, wo Du nicht weiter kommst!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kleinohr 
      
Beiträge: 20
|
Verfasst: Mo 17.05.10 23:38
verschieben wir auf morgen wenn es geht.
gehe jetzt erstmal schlafen und dabei überlegen.
tschöö
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Di 18.05.10 07:55
Hallo,
was machst du den später mit den erstellen Datei? Solltest du vlt. die Datei nicht gleich strukturierter (als CSV, wie zum Beispiel Xml) erzeugen?
Ansonsten gilt der Ansatz von Christian. Öffne eine Ausgabe Datei und danach jede einzelne Eingabedatei. Übertrage nur bei der ersten die Zeile 1+2, bei den anderen ignorieren.
Dennoch gilt desto mehr Background-Wissen wir haben desto gezielter können wir dir helfen. Die Eingabedateien hast du ja schon kurz vorgestellt. Dein Code wäre nun interessant. Was mich noch interessiert ist eben was du später mit der Datei machen willst. Ob es wirklich sinnvoll ist eine neue Datei zu erstellen und welches Format und ...
bis später
Gruß
|
|
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: Di 18.05.10 08:49
Die Tipps sind doch mehr als ausreichend (zumal die SDK-Doku/MSDN/Hilfe viele Beispiele enthält). Und dort hat er die gleichen Vorschläge mit anderer Formulierung nochmal bekommen. Das sollte genügen. Jürgen
|
|
DevInet
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Do 27.05.10 15:45
Hi.
Bin zwar neu hier aber ich geb auch mal meinen Senf dazu.
Am einfachsten machste es dir, wenn du mit streamreader und streamwriter, in kombination mit ner listbox arbeitest. musst nur zwei buttons ins frontend packen. mit dem einen liest du den Inhalt der csv-dateien in die Listbox ein und mit dem anderen schreibst du den kompletten listbox-inhalt in die neue datei.
mfg DevInet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 27.05.10 17:12
Und wieso braucht man dafür eine grafische Komponente wie die Listbox? Die ist dazu schlicht nicht da und es ist falsch, sie in dem Zusammenhang so zu verwenden.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
DevInet
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Fr 28.05.10 11:13
Und wieso ist es falsch? Ist doch wohl seine Sache, ob er das über nen frontend oder nen Shellscript macht. Ausserdem kann er so die daten auf die richtige anordnung kontrollieren. Klar kann man das auch als Shellscript machen. Ich kann dir dazu auch nen Perlscript basteln, aber für den Anfang ist denk ich ne grafische Oberfläche besser geeignet.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 28.05.10 11:18
Er will eine grafische Komponente zur (temporären) Datenhaltung benutzen. Das ist falsch. Dazu gibt es List<T> o. ä.. Die GUI ist nun mal nur zur Anzeige von Daten da und zu nix anderem.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
DevInet
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Fr 28.05.10 11:59
Wenn man die Daten nur temporär vorhalten will und nichts grafisch darstellen will, dann braucht man "überhaupt keine" gui(grafische Komponente). Dann kann man das auch einfach in nen shellscript verbannen. Ausserdem kann er die Listbox auch einfach verstecken.
PS: Wenn du unbedingt willst, dass er List "o.ä" nutzt dann schreib ihm doch gleich nen schönes kleines shellscript. Da braucht er dann gar keine GUI mehr.
Nur weil du es nicht so machst, heisst es nicht das alle anderen es so machen müssen wie du.
Mfg DevInet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 28.05.10 12:19
DevInet hat folgendes geschrieben : | Wenn man die Daten nur temporär vorhalten will und nichts grafisch darstellen will, dann braucht man "überhaupt keine" gui(grafische Komponente). Dann kann man das auch einfach in nen shellscript verbannen. |
Richtig. Aber es geht hier nicht drum, ob er die Daten anzeigen will oder nicht.
DevInet hat folgendes geschrieben : | Ausserdem kann er die Listbox auch einfach verstecken. |
Nicht Dein ernst, oder? Anstatt also die Klassen zu benutzen, die dafür gemacht sind und wesentlich weniger Ressourcen verbrauchen, nimmt man eine grafische Komponente, die noch dazu nicht typensicher speichert, und versteckt die dann? Klar, das ist echt super
DevInet hat folgendes geschrieben : | PS: Wenn du unbedingt willst, dass er List "o.ä" nutzt dann schreib ihm doch gleich nen schönes kleines shellscript. Da braucht er dann gar keine GUI mehr. |
Ich habe nicht gesagt, dass er keine GUI braucht. Eine Trennung von Datenhaltung und Datenanzeige ist das, worauf ich hinaus will.
DevInet hat folgendes geschrieben : | Nur weil du es nicht so machst, heisst es nicht das alle anderen es so machen müssen wie du. |
Eine saubere Trennung von Programmlogik und Anzeige ist keine Geschmackssache.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
DevInet
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Mo 31.05.10 11:46
@Christian S.: Sorry das ich dich so angegangen bin. Hab dich ehrlich gesagt vorher nicht ganz verstanden. Jetzt ist mir dabei einiges klarer geworden.
Mfg DevInet
|
|