tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von MCoder
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
172
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo zusammen,
    ich habe ein für mich unerklärliches Phänomen beim Aufruf der genannten Funktion _chdir.
    In unserer Anwendung soll für einen bestimmten Zweck die Existenz eines Pfads geprüft werden. Meines Wissen kann ich hierfür nur diese Funktion einsetzen, die ja das aktuelle Arbeitsverzeichnis wechselt! Sie gibt mir lt. Hilfe eine '0' zurück, wenn der Wechsel erfolgreich war und '-1' sonst.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    checkFibuDateiPfad( string sFirma, string sNSL, string sJahr )
    (
        int iErg = 0;
        int iRes = 0;
     
        // Pfad zusammenfrickeln
        string strPfad;
        strPfad =  "F:\\ORGA\\DAT\\CRMABR\\FINABUCH\\Firma";
        strPfad += sFirma;
        strPfad += "\\";
        strPfad += sNSL;
        strPfad += "\\";
        strPfad += sJahr;
     
        // Versuchen, in das angegebene Verzeichnis zu wechseln ('0' = Erfolg)
        const char *ch = strPfad.c_str();
        iRes = _chdir( ch );
        if( -1 == iRes )
        {
            iErg = 1;
        }
     
        return iErg;
    }
    Als einen korrekt zusammengebastelten Suchpfad sehe ich dann im Debugger bspw. "F:\ORGA\DAT\CRMABR\FINABUCH\Firma03\00000100\2008" !!
    Soweit, so schlecht

    Ich habe nun im Rahmen einiger Tests das Verzeichnis "2008" zunächst in "SIK_2008" umbenannt - und bekomme die korrekte Meldung "Pfad nicht vorhanden".
    Nach erneutem Umbenennen auf "2008" kommt die korrekte Meldung "Pfad vorhanden".

    Wenn ich nun jedoch das Verzeichnis erneut auf "SIK_2008" umbenenne (oder auch auch komplett lösche), liefert mir _chdir stets eine '0', so als wenn der Pfad existieren würde!!

    Was um alles in der Welt mache ich hier falsch ?
    Hoffentlich hat irgendjemand die zündende Idee ...

    Danke im voraus!
    Gruß
    Klaus

    // edit : ein (wenn auch mieser) Workaround scheint zu sein, zu Beginn meiner Funktion erst einmal
    Code :
    1
    
    _chdir( C:\\Windows);
    aufzurufen, obwohl ich ich die Lösung eigentlich nicht sonderlich mag .....
    Geändert von vfl_freak (19.08.08 um 11:47 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von vfl_freak Beitrag anzeigen
    Meines Wissen kann ich hierfür nur diese Funktion einsetzen, die ja das aktuelle Arbeitsverzeichnis wechselt!
    Nicht unbedingt; Du kannst auch die Funktion "_access()" verwenden:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #include <io.h>
     
    ...  
      
    iRes = _access( ch, 0 );
     
    if( 0 == iRes )
    {
        iErg = 1;
    }
     
    ...
    Das Verhalten von _chdir() kann ich gerade nicht erklären. Mit _access() solltest du diese Probleme nicht haben und brauchst zum Testen auch nicht den Pfad zu wechseln.

    Gruß
    MCoder
    vfl_freak bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo McCoder,

    jau, das war genau dass, was ich gebraucht hatte!

    Jetzt klappt es problemlos (auch ohne meinen unschönen Workaround) !!

    Danke für den Tipp!!
    tschüss
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 11.01.11, 21:40
  2. Antworten: 4
    Letzter Beitrag: 22.03.06, 20:50
  3. Antworten: 0
    Letzter Beitrag: 06.10.04, 14:03
  4. PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
    Von hennym im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 6
    Letzter Beitrag: 17.09.03, 22:09
  5. Antworten: 6
    Letzter Beitrag: 13.06.02, 12:29