Probleme bei Voreinstellung des Dateityps bei CFileDialog [zuvor: CFileDialog::SetDefExt führt zu Acces Violation]



  • (D)Evil schrieb:

    {code]LPCSTR => char *[/code]
    Um das mal klar zu stellen 😉

    Du hast das "const" vergessen (um das mal klar zu stellen 😉 )



  • LowFly schrieb:

    [NEW EDIT]
    LOL 😕
    kann mir einer mal erklären warum s-t-a-n-d-a-r-t
    stan**** zur hälft mit sternchen gefüllt ist ist das soooooo ein schlimmes wort 😃

    Vielleicht, weil man Standard hinten mit 'd' schreibt? 😉



  • lol sitmmt hast recht 😃
    erklärt aber nicht warum d-a-r-t als sternchen steht

    im deutschen wie im englischen bedeutet das nix schlimmes zumindest was ich jetzt weis.



  • LowFly schrieb:

    ich glaub du hast ein schwerwiegendes problem mit deinen Visual Studios
    installier die mal neu.

    Also bei meinem Visual Studio handelt es sich um

    Microsoft Visual Studio 2005
    Version 8.0.50727.42
    Microsoft .NET Framework
    Version 2.0.50727

    Installed Edition: Professional

    (Uni-Lizens), an SDKs habe ich nur das DirectX SDK.
    Die von mir beschriebenen Probleme konnte ich an zwei verschiedenen Rechnern nachvollziehen und ansonsten habe ich keine Probleme mit Visual Studio. Da muss noch was schwerwiegenderes passieren, bis ich mich wieder auf die Ochsentour begebe und das neu installiere.... (...was ja echt ewig dauert!)
    Außerdem würde ich vor einer VS Neuinstallation erst mal in den Einstellungen gucken. (Bei mir: Standardeinstellungen außer eben den include und lib directories für DirectX)

    Also: Welches von den Teilproblemen sollte normalerweise nicht auftauchen?
    Sollte z.B. sowas wie "wort" als LPCSTR interpretiert werden?

    jencas schrieb:

    (D)Evil schrieb:

    {code]LPCSTR => char *[/code]
    Um das mal klar zu stellen 😉

    Du hast das "const" vergessen (um das mal klar zu stellen 😉 )

    Und was bedeuted das für mich?



  • Sollte z.B. sowas wie "wort" als LPCSTR interpretiert werden?

    wenn "wort" vom typ CString ist ja, genauso vom typ char*.

    ich hab nicht die 2005 version sondern nur vc6 aber das ist egal. ich arbeite gerade an einem prog das dateien (Multiselcet) ausliest & auch wieder erstellt da übergebe ich an schleifen 1000 mal CString & auch char* an LPCSTR ohne das der compiler motzt oder das tool wärend der laufzeit absürzt.

    beschreib mal den weg wie du deinem vc verklickert hast wo es die dx SDK suchen soll. ich bin mir fast 100%tig sicher das der fehler da zu suchen ist.

    mfg
    LowFly



  • LowFly schrieb:

    beschreib mal den weg wie du deinem vc verklickert hast wo es die dx SDK suchen soll. ich bin mir fast 100%tig sicher das der fehler da zu suchen ist.

    So:
    Visual Studio > Tools > Options > Projects and Solutions > VC++ Directories > Show Directory for: Inculde Files
    und dort als neues Verzeichnis hinzugefügt:
    C:\Programme\Microsoft DirectX SDK (April 2006)\Include
    (ganz oben)

    und:
    Visual Studio > Tools > Options > Projects and Solutions > VC++ Directories > Show Directory for: Libary Files
    und dort als neues Verzeichnis hinzugefügt:
    C:\Programme\Microsoft DirectX SDK (April 2006)\Lib\x86
    (auch ganz oben)

    Ansonsten habe ich nichts gemacht, außer eben der Installation des DX SDKs.

    Ich habe mal versucht, die beiden Zeilen ganz nach unten zu verschieben, allerdings ändert das an den zuvor geschilderten Problemen nichts.

    Siehst Du da einen Fehler bzw. eine andere Möglichkeit?

    Danke und Gruß,
    dong



  • Nachtrag:
    Noch was zum Thema "mein VS kann das, Deins nicht" (oder umgekehrt):
    Zum Error C2440 (*"error C2440: '=' : cannot convert from 'const char ' to 'LPCWSTR'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast"
    ) habe ich hier etwas gefunden:

    This error can also be generated as a result of compiler conformance work that was done for Visual C++ 2005: the Visual C++ compiler no longer allows the const_cast Operator to down cast when compiling source code that uses /clr programming.

    To resolve this C2440, use the correct cast operator (for more information, see Casting Operators). See Breaking Changes in the Visual C++ 2005 Compiler for more information.

    Im ersten Anlauf habe ich das noch nicht alles verstanden (außer dem Vorschlag mit den casts, was sich zwar kompiliern ließ, aber zu einem unsinnigen Dialog führte), aber ich probiere da noch etwas herauszufinden...
    (..wenn jemand anderes etwas dazu weiß, braucht er/sie sich von mir aus nicht zurückzuhalten und kann sein Wissen hier gerne ausbreiten... 😉 )
    Gruß,
    dong



  • hmm 😞
    wenn dort auch noch die includeverzeichnisse deines Visual Studios stehn dann nicht. wenn die fehlen sollten dann liegt da das problem. vielicht auch einfach mal nachprüfen ob die pfade so stimmen wie sie dort eingetragen sind. hatte ich auch schon mal das mir vc einfach aus festplatte G:\..\..\\SDK...
    C:\..\\ gemacht hat und dort halt überhaupt nix zu finden war.

    ansonsten kann ich nur sagen neu installieren & vieleicht nicht direckt aus dem web sondern auf platte speichern und dann installieren fals das geht.

    weiter würde mir dann auch nix mehr einfallen evtel. windows nochmal neu installieren kann auch sein das da der fehler liegt.

    oder aber hast du denn die richtigen dateien in dein project eingebunden sprich in die StdAfx.h. LPCSTR braucht entweder die windows.h o die afxwin.h

    wie gesagt die übergaben von CString an LPCSTR MUSS gehen ohne das der compiler motzt



  • LowFly schrieb:

    hmm 😞
    wenn dort auch noch die includeverzeichnisse deines Visual Studios stehn dann nicht. wenn die fehlen sollten dann liegt da das problem.

    Die stehen dort, das ist nicht das Problem. (Stünden sie da nicht, hätte ich wohl noch ganz andere Probleme...)

    LowFly schrieb:

    vielicht auch einfach mal nachprüfen ob die pfade so stimmen wie sie dort eingetragen sind. hatte ich auch schon mal das mir vc einfach aus festplatte G:\..\..\\SDK...C:\..\\ gemacht hat und dort halt überhaupt nix zu finden war.

    Die Pfade sind in Form von Systemvariablen eingetragen (z.B. $(VCInstallDir)bin), die stimmen. (Ich wählte eine Standardinstallation und an meinem System ist auch sonst in dieser Hinsicht nichts exotisch.)

    LowFly schrieb:

    ansonsten kann ich nur sagen neu installieren & vieleicht nicht direckt aus dem web sondern auf platte speichern und dann installieren fals das geht.

    Ich installierte es nicht aus "dem web", sondern von CD aus.

    LowFly schrieb:

    weiter würde mir dann auch nix mehr einfallen evtel. windows nochmal neu installieren kann auch sein das da der fehler liegt.

    ...und vielleicht noch ein paar andere Computer kaufen? 😉
    Ich schrieb bereits, dass ich die verschiedenen Probleme auf zwei verschiedenen Rechnern in gleicher Form nachvollziehen konnte und ich werde mir gewiss nicht wegen jedes Furzes Visual Studio oder gar Windows neuinstallieren.
    Um das klar zu stellen:
    Es ist ja durchaus gelungen, den "Datei speichern" Dialog ohne Zugriffsverletzung aufzurufen, bloß gelang es nie, den Dateityp in der Auswahl vorzugeben. Das Problem sehe ich in der Deklaration der LPCSTR Variablen begründet, ich vermute, dass ich da bisher etwas nicht richtig machte.
    *(Konkret:

    LPCSTR endung = "dat";
    

    könnte vielleicht als Speicheradresse des Poiners interpretiert werden [was die Zugriffsverletzung erklärte.... ...leider äußerte zu diesem Verdacht ja noch niemand sonst seine Meinung....] und

    CString endung = "dat";
    LPSTR endg = reinterpret_cast<LPCSTR>(endung);
    

    funktioniert nicht.)*

    LowFly schrieb:

    oder aber hast du denn die richtigen dateien in dein project eingebunden sprich in die StdAfx.h. LPCSTR braucht entweder die windows.h o die afxwin.h

    Das geschah bereits automatisch (mit der afxwin.h)

    LowFly schrieb:

    wie gesagt die übergaben von CString an LPCSTR MUSS gehen ohne das der compiler motzt

    Ich habe den bereits zitierten Satz:

    This error can also be generated as a result of compiler conformance work that was done for Visual C++ 2005: the Visual C++ compiler no longer allows the const_cast Operator to down cast when compiling source code that uses /clr programming.

    so verstandden, dass sich der Compiler von VS 2005 eben anders verhält als der von VS 6 bezogen auf diesen Error. Oder habe ich das falsch verstanden?

    Naja, dann hat es eben nicht so schlimm zu sein, dass man den Dateityp nicht voreinstellen kann, einen Dateinamenvorschlag klappt immerhin so:

    CFileDialog schreibdialog(FALSE,NULL,static_cast<LPCTSTR>(L"dateiname.dat"),OFN_EXPLORER,NULL,NULL,NULL);
    

    Wenn niemand sonst eine Idee hat, die unterhlab irgendwelcher Neuinstalltionen liegt, kann ich damit leben... 🙂

    Gruß,dong



  • inzwischen habe ich übrigens die Voreinstellung der Dateitypen doch hinbekommen, und zwar so:

    CFileDialog schreibdialog(FALSE, static_cast<LPCTSTR>(L"txt"), static_cast<LPCTSTR>(L"vorgeschlagener Dateiname"), OFN_EXPLORER, static_cast<LPCTSTR>(L"Textdatei (*.txt) |*.txt|Textdatei (*.dat) |*.dat|alle Dateien (*.*) |*.*|" ));
    

    Gruß,
    Dong


Anmelden zum Antworten