FileHandling mit irgendwelchen Dateien



  • Okay, ich verrate euch jetzt ein Geheimnis aber ihr dürft es nicht weitersagen!

    Schau dir mal "grep" an und es gibt sicher auch schon grafische Frontends dafür 💡



  • Auch dafür danke. Ich schau mir das Thema trotzdem mal weiter an weil's mich Interessiert 😉 Ich komme so schon relativ weit - ich melde mich wenns klemmt 😉



  • Hi There

    Okay - Ich bin jetzt soweit das ich es so halbwegs hinbekommen könnte einen Button zu benutzen und den Namen eines Aktuellen Knotens zu beschaffen.

    Allerdings: In der forms.cpp kann man schön drin rumwerkeln und alles mögliche Anstellen, nur in der Hauptdatei kann man diese nicht mehr benutzen. Was soll da dann noch rein auser der darstellung des Fensters?

    Wie bekomme ich einen Verzeichnisbaum in Treeview?

    Gibts da was online zu?

    Grüße



  • Asmodiel schrieb:

    Du kannst eine txt auch in eine *.fleisch umbenennen

    Ich glaub ich platze gleich vor lachen.
    Vielleicht sollte ich mal wirklich alle .txt Dateien so umbenennen. Wäre auf jeden Fall eine spaßige Sache.



  • Darum gehts hier nur nich 🙄



  • AmonNascaroth schrieb:

    Darum gehts hier nur nich 🙄

    Achja? Sondern es geht darum dass irgendwer ein Programm zusammenbasteln will der keine Ahnung hat und vom Forum hier erwartet dass er am Händchen genommen wird?



  • Ich weis nich wo dein Problem liegt - auser vielleicht darin das Tolleranz bei Leuten die zwar mit C++ erfahrung gesammelt haben, nur leider Online nichts finden um sich weiter zu Entwickeln, nicht vorhanden ist. Schade.

    Tut mir leid wenn ich nicht die Kohle hab 100€ für Bücher auszugeben bei denen ich 60% weis und mehr oder weniger gut Beherrsche und in den letzten 40% nicht viel neues steht - bzw nichts was mich weit vorran bringt.

    Das ist ein Forum - in einem Forum kann man Dinge die man nicht versteht/wissen möchte erfragen und bekommt idr. Hilfe. Dafür sind die Teile da. Geht hier nich darum sich gegenseitig zu Behaupten und zu zeigen "Hey ich kann das viel besser als du!" - oder hab ich was verpasst?

    Ich möchte mein Wissen in C++ schlicht weg weiter entwickeln, in richtung Oberflächenentwicklung und Filehandling auserhalb des Standarts der hier gepostet wurde (eben mit Verzeichnissen und TreeView etc.) und finde Online nichts und suche hier hilfe.

    Meine Hand bekommt wenn dann meine Freundin - und keiner Hier.



  • na mit was für nem framework hast du deien gui gemacht?



  • Wie meinen? An der Benutzeroberfläche klemmts ja gerade ... ich habe eine mit QT4 und eine mit VC++ Studio 2008 Prof.Ed. zusammen gefrickelt.

    Ich bin inzwischen soweit das ich einen Button habe mit dem ich ein openFileDialog Öffnen kann - jetz muss ich dem nur beibringen das er auf "Öffnen" das Aktuell Markierte Verzeichnis Öffnet und den Pfad in einem String speichert

    Edit: Ich habe gerade das "FolderOpen"Dialog für mich Entdeckt. Sehr gut!



  • Na http://doc.trolltech.com/4.0/qfiledialog.html#getOpenFileName gibt doch nen QString zurück, wo ist das Problem?



  • Ich bin jetzt soweit das ich ein Verzeichnis auswählen kann und das ganze dann in einem Label Anzeige. Jetzt muss ich's nur hinkriegen das der Pfad Öffentlich ist...

    Edit: Okay ich bin jetzt noch ein Stück weiter - benötige allerdings jetzt Hilfe

    Ich habe mir die boost c++ libraries auf den rechner gezogen (...\Microsoft Visual Studio 9.0\boost) und möchte nun damit Arbeiten.

    Ich habe zwei Eingabefelder: In dem einen steht der Reguläre Ausdruck nach dem ich Suchen möchte - in dem anderen steht der String durch den der gefundene Ausdruck ersetzt werden soll. Dann habe ich einen Button - nach dem Click auf den Button soll folgendes Passieren:

    In einem Label soll der Pfad angezeigt werden
    In einem anderen Label sollen die Zahl aller gefundenen Dateien in dem ausgewählten Pfad angezeigt werden
    Nach und nach sollen die gefundenen Dateien geöffnet, der Inhalt in einen String geschrieben, durchsucht und ersetzt werden

    Ich weis was geschehen muss - ich weis nur noch nicht wie ich das am besten mit dem Boost Source umsetzen soll.

    Passieren müsste foldendes:
    Prüfen ob Verzeichnis leer:

    if(!path().empty()){ // ... }
    

    path ist dann

    folderbrowserDialog1->selectpath
    

    Wenn der ausgewählte Pfad NICHT Leer ist, dann sollen nach und nach die gefunden Dateien geöffnet und durchsucht werden:

    foreach(Pfad, gefundene Datei,..){}
    

    Soweit zur Theorie. Nur wie setze ich den Spaß in die Praxis um? Schön wäre es auch eine Progressbar nebenbei laufen zu lassen - es gibt ja auch einen Background Handler. Allerdings fehlt hier der komplette Zusammenhang zwischen dem "Ich hab den Button geklickt" und "Progressbar von 0% bis 100% laufen lassen".

    Bisher steht bei mir das primitivste:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    		 label1->Text = folderBrowserDialog1->SelectedPath;
    			 }
    

    Dort müsste ja dann auch der rest rein.

    Es wäre sehr nett wenn mir jemand weiter helfen könnte - ich denke ich habe hier gezeigt das ich mich auch hinsetze und mir das ganze ansehe. Ich bin nunmal kein Informatiker sondern "nur" Etechniker - daher wäre eine Hilfestellung sehr sehr nett.

    BTW: Wenn ich das richtig sehe müsste ich hier http://www.regular-expressions.info/ alles bekommen um nach Regulären Ausdrücken in einem String zu suchen - wobei ihc meine das boost das auch kann

    Grüße



  • Ist doch schonmal recht ordentlich, was du da machst. der pseudocode steht, also weist du in etwa was gemacht werden muss.

    Die implementation ist jetzt auch nicht mehr die Welt.

    Du musst jetzt quasi nur schritt für schritt schauen was du machen musst, und was dir boost::filesystem bzw boost::regex bieten kann. Dafür musst du die Doku durchforsten.

    Auch wenn du kein Informatiker bist, ist das im zweifelsfall genau dieselbe Arbeit die ein Informatiker dann zu tun hätte. Die Doku lesen.Wenn du weist, was du wie machen musst, und es dann nicht klappt, helfen wir dir hier gerne weiter. Aber die konkrete implementation ist im großen und ganzen deine Sache. Das Programm ist nicht sonderlich schwer zu implementieren, und man wächst an seinen Problemen 🙂

    Übrigens würde ich an deiner Stelle die Progressbar sein lassen. Macht das Programm nur komplexer, bringt keinen mehrwert und ist eh ungenau.

    ps: dieses Programm ist der Beweis für die Überlegenheit der bash console unter linux. Das ist dort vielleicht ein 10 zeiler. Allerdings ohne (störende) gui



  • In der Console wäre das auch ruck zuck gemacht 😉

    Gut, regex bietet boost auch - sehr gut. Wusste doch das ich da was gelesen habe.

    Das größte Problem das ich habe, ist das in der Doku immer ein Dateiname angegeben ist. Ich möchte ja jetzt mit dem gegebenen Pfad jede gefundene Datei öffnen und durchforsten - wobei boost hier nur beim durchforsten des Verzeichnisses dienlich sein soll, den rest macht ja das IO-Filesys recht angenehm.

    Ich kann jede Datei bis "\0" durchlaufen oder? Egal ob .jpg oder .php oder .text oder .fleisch? Dann ist das kein Problem. Dann kann ich von Anfang bis ende sagen

    inhalt=get(datei)
    

    und dann mit

    search_regex(inhalt, wonach_zu_suchen_ist)
    

    durchsuchen.
    Das ist das kleinste. Klemmt im moment nur an dem Obigen

    http://rapidshare.com/files/130937385/test4.exe.html
    Soweit steht es schon 😃

    Edit: Der Fortschrittsbalken soll eigentlich nur Spaßeshalber rein ^^

    Was mich noch interessieren würde wäre:
    Ist es schwer die gefundenen Dateien in einer ListBox anzuzeigen? Sodass ich dann einfach Markieren kann welche ich durchsuchen will und welche nicht. Müsste ja auch relativ einfach zu Implementieren sein (wenn die Symbole drin sind):

    if(!listeleer){ // Mach den Filekram mit den Markierten Dateien }
    else if(!keine_dateien){ // Mach den Filekram mit den gefundenen Dateien }
    

    grüße

    edit2: bzw wäre es schwer die zu durchsuchenenden Dateien mit DragAndDrop dort reinzuziehen und dann zu Markieren etc.?

    edit3: ich meinte nicht ListBox sondern ListView
    edit4: hab gerade das
    http://www.boost.org/doc/libs/1_35_0/libs/filesystem/example/simple_ls.cpp
    gefunden:

    The example program simple_ls.cpp is given a path as a command line argument. Since the command line argument may be a relative path, the complete path is determined so that messages displayed can be more precise.

    The program checks to see if the path exists; if not a message is printed.

    If the path identifies a directory, the directory is iterated through, printing the name of the entries found, and an indication if they are directories. A count of directories and files is updated, and then printed after the iteration is complete.

    If the path is for a file, a message indicating that is printed.

    Try compiling and executing simple_ls.cpp to see how it works on your system. Try various path arguments to see what happens.

    Also das was ich suche. Schaun wir ma


Anmelden zum Antworten