GetPathName ohne Dateiname



  • Hallo.

    Wieso liefert mir "GetPathName" den Pfad inkl. Dateiname? ­čś×

    Ich brauche nur den Pfad, wie werde ich den Dateinamen los?

    Danke.

    mfg



  • Du kannst einfach das letzte '\' im zur├╝ckgegebenen Namen suchen und alles dahinter abschneiden/ignorieren/whatever.



  • "einfach" ist relativ. ­čś×

    mfg



  • CString path=dlg.GetPathName();
    path.Delete(path.ReverseFind('\\'),path.Length());
    

    Was ist daran denn schwierig?



  • Habs nun so gemacht:

    int pos = m_strFilename.ReverseFind('\\');
    m_strFilename = m_strFilename.Mid(0,pos);
    

    CStoll schrieb:

    Was ist daran denn schwierig?

    Wenn man etwas monate-/jahrelang gemacht hat, ist nichts mehr schwierig. Aber es soll ja noch Leute geben, die noch nicht so lange programmieren.

    mfg



  • vollkommenegal schrieb:

    Aber es soll ja noch Leute geben, die noch nicht so lange programmieren.

    F├╝r solche Leute gibt es ein ├Ąu├čerst praktisches Hilfsmittel: die MSDN ­čśë



  • die MSDN ­čśë

    Dumm nur, wenn man nicht wei├č, wonach man suchen muss. Was bringt mir eine Funktions-Beschreibung, wenn ich nicht wei├č, welche Funktion ich haben muss?


  • Administrator

    Naja man muss dann halt auch ein paar eigene Ideen mitliefern. Ist wie mit jeder Suchmaschine in einer Dokumentation. Man muss zuerst lernen mit ihr umzugehen ^^ ...
    Du kannst dir ja z.b. mal CString anschauen, was es f├╝r M├Âglichkeiten anbietet. Oder deine Klasse in der du GetPathName aufrufst, ob sie noch was anderes anbietet. Wenn sie nichts anderes anbietet, dann sollte dir klar werden, dass du es abschneiden musst, dann schaut man sich eben CString an.

    ├ťbrigens, nur f├╝r den Fall, wenn du CFileDialog benutzt, da gibt es ein GetFolderPath. Wenn du es allerdings z.b. bei CDocument benutzt, dann gibt es sowas nicht.

    Gr├╝ssli



  • Dravere schrieb:

    Naja man muss dann halt auch ein paar eigene Ideen mitliefern.

    Dann frage ich mich, wozu es ├╝berhaupt Foren gibt, wenn man sich sowieso alles selber zusammensuchen soll. Also bitte: wer nicht helfen will, der soll es lassen. ­čś×

    Dravere schrieb:

    z.b. mal CString anschauen, was es f├╝r M├Âglichkeiten anbietet [. . .] dann sollte dir klar werden, dass du es abschneiden musst

    Und genau das wollte ich einfach nur best├Ątigt haben(ggf. mit einem kleinen Tipp, wie ich das mache), denn ich erwarte bei "GetPathName" (naiv wie ich bin) den Pfadnamen. H├Ątte ja sein k├Ânnen, dass ich etwas falsch gemacht habe, also wird man doch wohl fragen d├╝rfen, oder nicht?

    Dravere schrieb:

    wenn du CFileDialog benutzt

    Ja, mache ich.

    Dravere schrieb:

    da gibt es ein GetFolderPath

    Hatte ich bereits getestet, aber wenn ich in meinem "├ľffnen"-Dialog eine Datei ausgew├Ąhlt habe, springt mir ein fr├Âhliches "Debug Assertion Failed!" entgeben, was einen Anf├Ąnger wie mich zur├╝ckschrecken und nach einer anderen L├Âsung suchen l├Ąsst.

    mfg



  • vollkommenegal schrieb:

    denn ich erwarte bei "GetPathName" (naiv wie ich bin) den Pfadnamen.

    Und ehe du dich auf diese "naive" Erwartung verl├Ąsst, solltest du besser in der MSDN nachschauen, WAS GetPathName() wirklich zur├╝ckliefern will ­čśë

    MSDN - GetPathName() schrieb:

    Call this function to retrieve the full path of the file entered in the dialog box.

    The path of the filename includes the file's title plus the entire directory path.

    Dravere schrieb:

    da gibt es ein GetFolderPath

    Hatte ich bereits getestet, aber wenn ich in meinem "├ľffnen"-Dialog eine Datei ausgew├Ąhlt habe, springt mir ein fr├Âhliches "Debug Assertion Failed!" entgeben, was einen Anf├Ąnger wie mich zur├╝ckschrecken und nach einer anderen L├Âsung suchen l├Ąsst.

    Also f├╝r mich ist eine Debug Assertion normalerweise ein Grund, mir zun├Ąchst die fehlgeschlagene Bedingung anzusehen (oder mal wieder in der MSDN nachzuschlagen:

    MDSN - GetFolderPath schrieb:

    The dialog box must have been created with the OFN_EXPLORER style; otherwise, the function will fail with an assertion.



  • CStoll schrieb:

    in der MSDN nachschauen, WAS GetPathName() wirklich zur├╝ckliefern will ­čśë

    Dass "GetPathName" nicht das zur├╝ckliefert, was ich erwartet/erhofft hatte, hab ich auch schnell gemerkt. Dazu brauch ich die MSDN nicht. ­čÖé

    CStoll schrieb:

    The dialog box must have been created with the OFN_EXPLORER style; otherwise, the function will fail with an assertion.

    Und Du glaubst, dass ich auch nur ein Bruchteil von dem verstanden habe? Was wei├č denn ich, was OFN_EXPLORER ist. Also halte ich mich doch mit sowas nicht lange auf und suche nach einer anderen L├Âsung.

    Ich gehe immer den Weg des geringsten Widerstandes, denn viele Wege f├╝hren nach Rom und warum sollte ich mich abqu├Ąlen? Deshalb auch meine Frage im Forum, denn wenn ich mir selber zuviel "zusammendenke", besteht die Gefahr, dass ich mich verrenne. Also frage ich jemanden, der sich damit auskennt, damit ich gleich den richtigen Weg lernen kann.

    Wenn ich aber ber├╝cksichtigt h├Ątte, dass ich mich hier mehr verteidigen muss, als dass ich Infos bekomme, h├Ątte ich doch lieber in die MSDN geguckt, mir einen bei der Programmierung abgebrochen und die Frage im Forum verkniffen. ­čĄí (*ACHTUNG, IRONIE und WITZ*)

    mfg


  • Administrator

    vollkommenegal schrieb:

    Dravere schrieb:

    Naja man muss dann halt auch ein paar eigene Ideen mitliefern.

    Dann frage ich mich, wozu es ├╝berhaupt Foren gibt, wenn man sich sowieso alles selber zusammensuchen soll. Also bitte: wer nicht helfen will, der soll es lassen. ­čś×

    Ich helfe immer gern, aber ich sitze jetzt schon eine Stunde (oder mehr?) hier im Forum rum. Dabei sollte ich noch proggen *g*
    Man kann hier hin kommen um Hilfe zu bitten klar, aber man sollte vorher schon selber was versucht haben. Ich werfe dir jetzt nicht vor, dass du es noch nicht versucht hast. Aber das Forum sollte, wenn man so will, eine der letzten Hoffnungen darstellen (zumindest seh ich das so). Sonst hat es hier noch mehr Hilfegesuche als es eh schon hat. Irgendwann sind es dann einfach zu viele.

    Dravere schrieb:

    z.b. mal CString anschauen, was es f├╝r M├Âglichkeiten anbietet [. . .] dann sollte dir klar werden, dass du es abschneiden musst

    vollkommenegal schrieb:

    Und genau das wollte ich einfach nur best├Ątigt haben(ggf. mit einem kleinen Tipp, wie ich das mache), denn ich erwarte bei "GetPathName" (naiv wie ich bin) den Pfadnamen. H├Ątte ja sein k├Ânnen, dass ich etwas falsch gemacht habe, also wird man doch wohl fragen d├╝rfen, oder nicht?

    Doch doch ... siehe oben *g*
    Und unter dem Pfad verstehe ich nicht nur den Ordnerpfad. Aber das kann man ja eben auch in der MSDN lesen. Da steht, dass man den vollst├Ąndigen Pfad zur├╝ckbekommt.

    vollkommenegal schrieb:

    Dravere schrieb:

    da gibt es ein GetFolderPath

    Hatte ich bereits getestet, aber wenn ich in meinem "├ľffnen"-Dialog eine Datei ausgew├Ąhlt habe, springt mir ein fr├Âhliches "Debug Assertion Failed!" entgeben, was einen Anf├Ąnger wie mich zur├╝ckschrecken und nach einer anderen L├Âsung suchen l├Ąsst.

    Falsch gemacht, du musst nicht zur├╝ckschrecken, sondern dem Fehler nachgehen. Ein Debug Assertion Failed wird durch ein ASSERT aufgerufen. Also eine ASSERT-Anweisung hat nicht TRUE geliefert. Mit wiederholen, kannst im Debug ja zum Fehler hingehen und ihn dir anschauen. Daf├╝r ist ja der Debugger da. Per Call Stack kannst zur├╝ckverfolgen was aufgerufen wurde und wieso der Wert also nicht stimmt. Zudem bei mir funktioniert das einwandfrei, also hast du wohl irgendwie etwas falsch ├╝bergeben oder falsche Parameter zusammengesetzt oder irgendsowas. Ist viel vern├╝nftiger du suchst diesen Fehler, denn dabei lernst du was, z.b. die richtige Anwendung von CFileDialog.
    Und so wird aus einem Anf├Ąnger mal ein Profi XD

    Gr├╝ssli



  • das Forum sollte, wenn man so will, eine der letzten Hoffnungen darstellen

    Sehe ich nicht so, denn ich finde es sehr wichtig, zu kommunizieren.

    Falsch gemacht, du musst nicht zur├╝ckschrecken, sondern dem Fehler nachgehen.

    Das ├╝berfordert einen Anf├Ą├Ânger wie mich aber. ­čś×

    also hast du wohl irgendwie etwas falsch ├╝bergeben oder falsche Parameter zusammengesetzt oder irgendsowas.

    Vorher hatte ich

    m_strFilename = ldFile.GetPathName();
    

    und daraus hab ich nur

    m_strFilename = ldFile.GetFolderPath();
    

    gemacht.

    Ist viel vern├╝nftiger du suchst diesen Fehler, denn dabei lernst du was, z.b. die richtige Anwendung von CFileDialog.

    Es nervt und verunsichert aber, wenn man st├Ąndig irgendwelche Fehlermeldungen um die Ohren gehauen bekommen. Also nimmt man doch das, was funktioniert und versucht es anders...ich w├╝rde es jedenfalls immer so machen. ­čÖé

    mfg


  • Administrator

    Ich sag mal zum Rest jetzt nichts mehr. Nur noch was dazu:

    vollkommenegal schrieb:

    Dravere schrieb:

    Ist viel vern├╝nftiger du suchst diesen Fehler, denn dabei lernst du was, z.b. die richtige Anwendung von CFileDialog.

    Es nervt und verunsichert aber, wenn man st├Ąndig irgendwelche Fehlermeldungen um die Ohren gehauen bekommen. Also nimmt man doch das, was funktioniert und versucht es anders...ich w├╝rde es jedenfalls immer so machen. ­čÖé

    Verunsichern muss es dich nicht. Es soll nur zeigen, dass halt was falsch ist und das ist normal f├╝r einen Anf├Ąnger. Aber wenn du immer nur den einfachsten Weg beschreitest, wirst du wohl kaum wirklich mal besser. Man muss sich den Fehler stellen um sie zu verstehen und nur dadurch kann man besser werden.
    Aber naja es sind deine Programme, welche darunter leiden.

    Gr├╝ssli


Log in to reply