Announcement

Collapse
No announcement yet.

Dateiattribute auslesen mittels stat()

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateiattribute auslesen mittels stat()

    Hi,
    ich hatte bereits einen anderen Thread, wo ich Dateien mittels des CMD selektieren und manipulieren wollte, aber jetzt versuch ich das mal mit C++.

    Anderer Thread: http://entwickler-forum.de/showthread.php?t=63377

    Nun kann man in C++ mittels stat() die Attribute ebenfalls auslesen:
    http://openbook.galileocomputing.de/...df3d5e66258b3e


    Nun hab ich mich mal drangesetzt und ein Problem, wo ich nicht weiter weiß. Ich hab das öfters überprüft, komm aber nicht dahinter, warum es nicht geht.

    Code:
    #define _ERROR -1
    
    ...
    ...
    ...
    
    bool vgl_att(const char *character){
        struct stat attribut;
        const char *b = "Gesamter Pfad zur Datei";
    
        string s = character;
        int find = s.find("WINDOWS",0);
    
        if(find == _ERROR){ // windows VZ nicht ausgewählt/gefunden
            cout << "Kein(e) Windows Ordner oder Datei: ";
            if(stat(b, &attribut) > _ERROR){
                cout << ctime(&attribut.st_atime) << endl;
                return true;
            }
        }
    
        return false;
    }
    Wenn ich nun "stat(b, &attribut) > _ERROR" den "const char *b" verwende, dann klappt es ohne Probleme.
    Wenn ich nun "stat(character, &attribut) > _ERROR" den Übergabeparameter "const char *character" verwende, dann klappt es NICHT.

    Ich habs auch debuggt und in "character" und "b" sind die selben Einträge und die sind vom selben Typ "const char *".

    Wieso geht es nicht, den Übergabeparameter zu verwenden?
    Zuletzt editiert von creator90; 22.08.2010, 22:52.
    PHP Code:
    <?php
    echo 'http://acs-it-worx.de/';
    echo 
    'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
    echo '-----------------------------------------------------------------';
    echo 
    'http://www.autoservice-asberg.de/';
    ?>

  • #2
    Weiß keiner eine Antwort?
    PHP Code:
    <?php
    echo 'http://acs-it-worx.de/';
    echo 
    'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
    echo '-----------------------------------------------------------------';
    echo 
    'http://www.autoservice-asberg.de/';
    ?>

    Comment


    • #3
      Vieleicht mal den Fehler beschreiben:

      "Geht nicht" ist kein Fehler

      Compilerfehler, Exception, Meldung, usw.

      Vermutlich ist Character ein Zeiger ohne Speicherplatz
      Christian

      Comment


      • #4
        Weder noch.

        Wenn ich nun das "b" angebe, dann geht der Compiler in die "if" Abfrage bei "stat(...)" rein und gibt die Zeit aus.
        Bei "character" wird zwar abgefragt, die "if"-Abfrage allerdings ignoriert.

        Beim Debuggen wird bei Beiden eine Speicheradr. angegeben (zumindest geh ich davon aus, dass das die Speicheradr. ist).

        Hier mal ein Bild davon beim Überwachen/Debuggen:http://event4net.de/Files/Entwicklerforum/stat.PNG
        PHP Code:
        <?php
        echo 'http://acs-it-worx.de/';
        echo 
        'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
        echo '-----------------------------------------------------------------';
        echo 
        'http://www.autoservice-asberg.de/';
        ?>

        Comment


        • #5
          Beim Debuggen wird bei Beiden eine Speicheradr. angegeben (zumindest geh ich davon aus, dass das die Speicheradr. ist).
          Das sagt noch überhaupt nichts über den zur Verfügung stehenden Speicherplatz aus.

          Des Weiteren ist mir zumindestens die Frage (wo ist wann b und wann Charakter) unklar und auch die Arbeitsweise des Programmes.

          Was sollte ein

          stat(b, &attribut)

          bringen, wenn b

          const char *b = "Gesamter Pfad zur Datei";

          ist

          Warum wird eine if-Abfrage gemacht, die i.V.m. _ERROR ist?

          Für die Dateiattribute wird GetFileAttributes genutzt?
          Christian

          Comment


          • #6
            Was sollte ein

            stat(b, &attribut)

            bringen, wenn b

            const char *b = "Gesamter Pfad zur Datei";

            ist
            "b" gibt den Pfad an und wenn ich dann "stat(b, &attribut)" aufrufe, kann ich die Zeit mittels ctime() abfragen.

            GetFileAttributes
            Hab ich nie gemacht. Hast Du ein Beispiel?

            Ich hab mal die Funktion, wo ich dieses Problem hatte mit "b" und "character" ausprobiert: Es liegt nicht an dem Aufruf "character", sondern an dem, wie ich es einlese. Verarbeiten tu ich einen "const char*", aber wenn ich denn den Wert z.B. über "fgets" in die Funktion einlade ist das ein "char text_zeile[256]".

            Wie kann ich den zu "const char *" konvertieren?

            Ich hab es bereis versucht mit...
            Code:
            string tmp = text_zeile;
            const char *ctemp = tmp.c_str();
            ... wird aber genausowenig angenommen wie das "char text_zeile[256]"
            PHP Code:
            <?php
            echo 'http://acs-it-worx.de/';
            echo 
            'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
            echo '-----------------------------------------------------------------';
            echo 
            'http://www.autoservice-asberg.de/';
            ?>

            Comment


            • #7
              "b" gibt den Pfad an
              sicher und was ist "Gesamter Pfad zur Datei"; für ein Pfad?

              Hab ich nie gemacht. Hast Du ein Beispiel?
              http://lmgtfy.com/?q=GetFileAttributes

              Vielleicht solltest du eine weniger komplizierte Sprache wählen -> Java
              Christian

              Comment


              • #8
                sicher und was ist "Gesamter Pfad zur Datei"; für ein Pfad?
                Ich hoff mal Du tust nur so: Da steht dann sowas drin wie "C:\Programme\...." Das sollte nur darstellen, was da stehen könnte und um deine weitere Frage zu beantworten: In meinen Versuchen verwende ich einen richtigen Pfad.

                Tolle App Google, Bing, Yahoo usw. sind Suchmaschinen, ja. ABER das hier ist ein Forum. Wenn jeder Fragen stellt, worauf dann kommt "Benutz Google", dann kann man ein Forum direkt abschreiben. Sag doch einfach, dass Du mit dem Befehl nie gearbeitet hast, niemand wird es Dir verdenken.

                Und ja, im Vorfeld hab ich schon ein Beispiel gefunden gehabt (o Wunder, ich hab die Suchmaschine und nicht das Forum verwendet), aber das arbeitet nicht richtig. Ich gebe einen Pfad zur Datei an und das Prog sagt mir, dass das ein Verzeichnis sein soll.

                http://www.tutorials.de/visualstudio...-abfragen.html
                PHP Code:
                <?php
                echo 'http://acs-it-worx.de/';
                echo 
                'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
                echo '-----------------------------------------------------------------';
                echo 
                'http://www.autoservice-asberg.de/';
                ?>

                Comment


                • #9
                  Halten wir mal fest, du zeigst hier offenbar Code, der so überhaupt nicht bei dir vorhanden ist, und man kann raten.

                  Sag doch einfach, dass Du mit dem Befehl nie gearbeitet hast, niemand wird es Dir verdenken.
                  Im Gegensatz zu dir kann ich C/C++ und habe durchaus mit dem Befehl in aller Ausführlichkeit gearbeitet.

                  http://www.marquardtnet.info/cecke/d...ilesearch.html

                  in verschiedenen Programmen

                  Und im Gegensatz zu dir kann ich auch google benutzen um Informationen zu bekommen.

                  Weiterhin ist "Funktioniert nicht" kein Fehler und es wäre wünschenswert Frage mal so zu stellen, dass ein Anderer wenigsten ungefähr weiss um was es geht und nicht irgendwelche Codefragment rauspicken, die dann noch nicht mal stimmen.

                  Denke es gibt keinen Grund mehr das hier weiter offen zu halten...
                  Christian

                  Comment

                  Working...
                  X