- Registriert
- Apr. 2008
- Beiträge
- 12.711
Hi, ich denke der Titel sagt schon grob, woran ich gerade scheitere.
Ich bin ein ziemlicher Programmier Noob....ich habe keine echte Informatikvorlesung besucht, sondern nur einen Crashkurs für C++.
Ich kann .csv Dateiein mit speziell formatierten Daten einlesen....die Daten verarbeiten und sie wieder in csv/txt Dateien abspeichern.
Ich arbeite fast ausschließlich mit arrays und globalen Variablen...und gigantischen Monstern aus while Schleifen und if/else Verkettungen.
Bis jetzt bin ich damit zurechtgekommen und ich habe ein sehr längliches Programm zum Auswerten von Frametimemessungen.
Ich bin froh, dass das alles so funktioniert, und auch wenn ich daran arbeite den Quellcode zu entschlacken(vieles unnötig und umständlich weil es durch ausprobieren "gewachsen" ist), so möchte ich bei C++ und Visual Studio 2017 bleiben weil ich die Arbeit nicht nochmal machen möchte.
Situation :
...................
Mein Plan ist jetzt, dass ich die Frametimemessungen weiterhin in Ordner verschiebe und ich noch mehr darauf achte, dass die Ordner auch eine eindeutige Bezeichnung haben.......dann gehe ich in den Ordner und kopiere mir die Adresse aus der Adresszeile.....starte mein Programm und es bittet mich den Pfad einzugeben........und dann soll das Programm den Ordner nach files durchsuchen.....nur die .csv files merken, zählen und dann dem Alter nach sortieren....und die Dateinamen in ein Array mit 16 Einträgen einsortieren....sind es mehr Dateien, werden Überzählige ignoriert, aber ich möchte wissen, ob es zu viele sind, so dass ich einen Hinweis im Programm ausgeben kann der darauf hinweist.
Ich habe mir inzwischen angeeignet, wie ich den Pfad einlese und nach \ zerlege....so komme ich an den Namen des Ordners, den ich für die spätere Benennung der Ergebnisfiles brauche und ich habe den Pfad um die Dateien im Ordner anzusprechen und direkt einzulesen.....Ergebnisse direkt in diesen Ordner zu speichern usw.
Aber ich finde keinen Anfang dazu, wie ich an die Files im Ordner komme....Ich habe einiges gefunden, dass "FindFirstFile" und "FindNextFile" nutzt, aber ich verstehe die Synthax nicht und es arbeitet mit Sachen wie "FILE_ATTRIBUTE_DIRECTORY" und irgendwie fehlt mir da das Wissen um den Diskussionen zu folgen.....auch bin ich gar nicht vertraut mit pointern....
Ich habe hier auch etwas gefunden, dass eventuell nützlich sein könnte:
http://www.cplusplus.com/reference/stl/
aber auch da fehlt mir der Ansatz um anfangen zu können.
Mein Plan war es, mit irgendeiner Funktion die files im eingegebenen Dateipfad einzulesen und eventuell in so einen container zu speichern....mit name und timestamp.
Dann würde ich den container sortieren(ich hoffe das funktioniert so einfach und ich muss nicht irgendwie mit Datum und Urzeit hantieren) und dann den sortierten container nach .csv dateien durchsuchen .......ich dachte ich könnte die Dateinamen nach "." trennen und als letzten Eintrag sollte ich ja dann "csv"(oder was anderes) finden....und nur wenn da "csv" steht, wird der Dateiname in ein array[16] gespeichert...dabei die Anzahl gezählt....und wenn das array voll ist, dann suche und zähle ich zwar weiter, bis ich alle Einträge des containers durch habe, aber ich höre auf, die in das array zu speichern............ab da sollte ich selbst zurecht kommen.
Könnt ihr mir mit einfachen Worten helfen zu verstehen, wie ich das anstelle?
Ich bin ein ziemlicher Programmier Noob....ich habe keine echte Informatikvorlesung besucht, sondern nur einen Crashkurs für C++.
Ich kann .csv Dateiein mit speziell formatierten Daten einlesen....die Daten verarbeiten und sie wieder in csv/txt Dateien abspeichern.
Ich arbeite fast ausschließlich mit arrays und globalen Variablen...und gigantischen Monstern aus while Schleifen und if/else Verkettungen.
Bis jetzt bin ich damit zurechtgekommen und ich habe ein sehr längliches Programm zum Auswerten von Frametimemessungen.
Ich bin froh, dass das alles so funktioniert, und auch wenn ich daran arbeite den Quellcode zu entschlacken(vieles unnötig und umständlich weil es durch ausprobieren "gewachsen" ist), so möchte ich bei C++ und Visual Studio 2017 bleiben weil ich die Arbeit nicht nochmal machen möchte.
Situation :
Allerdings möchte ich bald eine weitere Benchmarkreihe machen und dafür sehr viele Messungen verarbeiten....mit meiner jetzigen Methode ist das langwierig und ich muss mich super konzentrieren um keine Fehler zu machen.
Mein Programm liest bis zu 10 Datensätze ein, allerdings aus festgelegten Dateien im Programmordner....und schreibt die Ergebnisse in fest benannte Dateien.
Ich habe also z.B. 10 Messungen mit Fraps oder OCAT/CapFramX gemacht und die in den passenden Ordner "C:\Users\Bhaal\Desktop\2700x bench\RotTR 1440 custom 4,2 4+4on 4x8 2800 cl14haupt auto subtimings RVII UVOC" geschoben.....dann würde ich jetzt die Dateien im Ordner nach dem Alter ordnen.....die älteste Datei öffnen, STRG+ a und c drücken....schließen und im Programmordner die Dateien Framtime1.csv öffnen und STRG+ a und v und s drücken...schließen und das für alle Dateien wiederholen, bis alles Inhalte rüberkopiert sind...das C++ programm ausführen und mit einer "4" auswählen, dass ich nicht eine, 3 oder 5 Dateien auswerten möchte sondern alle 10....dann erhalte ich mehrere Dateien mit Ergebnissen, die ich dann in den Ordner mit den Originaldaten verschiebe und ich mich an den nächten Ordner machen kann.
Auch später die Daten in OriginPro einzufügen um sie darzustellen ist nervig, da die Ergebnisdateien alle die gleichen Bezeichnungen haben und ich sie nach dem Ascii einlesen erst noch passend umbenennen muss....hätten die Ergebnissdateien bereits einen passenden namer wie der Ordner, wäre das alles viel einfacher.
Jetzt möchte ich auch noch die Möglichkeit haben bis zu 16 Dateien einzulesen.......und vor allem möchte ich das manuelle kopieren ersetzen und auch die Beschriftung automatisieren.....automatisch auswählen, wie viele Dateien bentuzt werden usw.
Mein Programm liest bis zu 10 Datensätze ein, allerdings aus festgelegten Dateien im Programmordner....und schreibt die Ergebnisse in fest benannte Dateien.
Ich habe also z.B. 10 Messungen mit Fraps oder OCAT/CapFramX gemacht und die in den passenden Ordner "C:\Users\Bhaal\Desktop\2700x bench\RotTR 1440 custom 4,2 4+4on 4x8 2800 cl14haupt auto subtimings RVII UVOC" geschoben.....dann würde ich jetzt die Dateien im Ordner nach dem Alter ordnen.....die älteste Datei öffnen, STRG+ a und c drücken....schließen und im Programmordner die Dateien Framtime1.csv öffnen und STRG+ a und v und s drücken...schließen und das für alle Dateien wiederholen, bis alles Inhalte rüberkopiert sind...das C++ programm ausführen und mit einer "4" auswählen, dass ich nicht eine, 3 oder 5 Dateien auswerten möchte sondern alle 10....dann erhalte ich mehrere Dateien mit Ergebnissen, die ich dann in den Ordner mit den Originaldaten verschiebe und ich mich an den nächten Ordner machen kann.
Auch später die Daten in OriginPro einzufügen um sie darzustellen ist nervig, da die Ergebnisdateien alle die gleichen Bezeichnungen haben und ich sie nach dem Ascii einlesen erst noch passend umbenennen muss....hätten die Ergebnissdateien bereits einen passenden namer wie der Ordner, wäre das alles viel einfacher.
Jetzt möchte ich auch noch die Möglichkeit haben bis zu 16 Dateien einzulesen.......und vor allem möchte ich das manuelle kopieren ersetzen und auch die Beschriftung automatisieren.....automatisch auswählen, wie viele Dateien bentuzt werden usw.
Mein Plan ist jetzt, dass ich die Frametimemessungen weiterhin in Ordner verschiebe und ich noch mehr darauf achte, dass die Ordner auch eine eindeutige Bezeichnung haben.......dann gehe ich in den Ordner und kopiere mir die Adresse aus der Adresszeile.....starte mein Programm und es bittet mich den Pfad einzugeben........und dann soll das Programm den Ordner nach files durchsuchen.....nur die .csv files merken, zählen und dann dem Alter nach sortieren....und die Dateinamen in ein Array mit 16 Einträgen einsortieren....sind es mehr Dateien, werden Überzählige ignoriert, aber ich möchte wissen, ob es zu viele sind, so dass ich einen Hinweis im Programm ausgeben kann der darauf hinweist.
Ich habe mir inzwischen angeeignet, wie ich den Pfad einlese und nach \ zerlege....so komme ich an den Namen des Ordners, den ich für die spätere Benennung der Ergebnisfiles brauche und ich habe den Pfad um die Dateien im Ordner anzusprechen und direkt einzulesen.....Ergebnisse direkt in diesen Ordner zu speichern usw.
Aber ich finde keinen Anfang dazu, wie ich an die Files im Ordner komme....Ich habe einiges gefunden, dass "FindFirstFile" und "FindNextFile" nutzt, aber ich verstehe die Synthax nicht und es arbeitet mit Sachen wie "FILE_ATTRIBUTE_DIRECTORY" und irgendwie fehlt mir da das Wissen um den Diskussionen zu folgen.....auch bin ich gar nicht vertraut mit pointern....
Ich habe hier auch etwas gefunden, dass eventuell nützlich sein könnte:
http://www.cplusplus.com/reference/stl/
aber auch da fehlt mir der Ansatz um anfangen zu können.
Mein Plan war es, mit irgendeiner Funktion die files im eingegebenen Dateipfad einzulesen und eventuell in so einen container zu speichern....mit name und timestamp.
Dann würde ich den container sortieren(ich hoffe das funktioniert so einfach und ich muss nicht irgendwie mit Datum und Urzeit hantieren) und dann den sortierten container nach .csv dateien durchsuchen .......ich dachte ich könnte die Dateinamen nach "." trennen und als letzten Eintrag sollte ich ja dann "csv"(oder was anderes) finden....und nur wenn da "csv" steht, wird der Dateiname in ein array[16] gespeichert...dabei die Anzahl gezählt....und wenn das array voll ist, dann suche und zähle ich zwar weiter, bis ich alle Einträge des containers durch habe, aber ich höre auf, die in das array zu speichern............ab da sollte ich selbst zurecht kommen.
Könnt ihr mir mit einfachen Worten helfen zu verstehen, wie ich das anstelle?