Filou Geschrieben 18. Dezember 2007 Geschrieben 18. Dezember 2007 Hi, ich habe ein Projekt in Visual Studio 2005 konvertiert und kann es nicht kompelieren. In meinem Code tritt dabei folgendes Problem: visual studio 2005\projects\bader\baderdlg.cpp(581) : error C2593: 'Operator !=' ist mehrdeutig if(g_csFiles[iCount] != NULL) { iCount++; } else { break; } g_csFiles ist eine globale Variable in der Dateinamen gespeichert werden. Dann ist hier noch ein Fehler in der Datei cstring.h: \microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2498): kann 'bool ATL::CStringT<BaseType,StringTraits>::operator !=(const ATL::CStringT<BaseType,StringTraits> &,char) throw()' sein [bei der Verwendung der argumentbezogenen Suche gefunden] 1> with 1> [ 1> BaseType=char, 1> StringTraits=StrTraitMFC_DLL<char> 1> ] microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2395): oder "bool ATL::CStringT<BaseType,StringTraits>::operator !=(const ATL::CStringT<BaseType,StringTraits> &,const char *) throw()" [bei argumentbezogenem Lookup gefunden] 1> with 1> [ 1> BaseType=char, 1> StringTraits=StrTraitMFC_DLL<char> 1> ] 1> bei Anpassung der Argumentliste '(CString, int)' friend bool operator!=( __in const CStringT& str1, __in PCYSTR psz2 ) throw( ... ) { CStringT str2( psz2, str1.GetManager() ); return( str1 != str2 ); } friend bool operator!=( __in const CStringT& str1, __in XCHAR ch2 ) throw() { return( (str1.GetLength() != 1) || (str1[0] != ch2) ); } Könnt Ihr mir helfen, dass ich das zum Laufen bekomme? LG Filou Zitieren
Klotzkopp Geschrieben 18. Dezember 2007 Geschrieben 18. Dezember 2007 Was soll der Code denn überhaupt bewirken? Zitieren
Filou Geschrieben 18. Dezember 2007 Autor Geschrieben 18. Dezember 2007 Der obere erstellt eine Liste mit allen Dateien und Ordnern in einem Verzeichnis. Wenn der Wert NULL ist wird zur nächsten Datei gesprungen. Der untere Teil ist nicht von mir sondern aus der cstringt.h. Muss wohl irgend so eine MFC Klasse sein. Keine ahnung was das macht. Zitieren
Klotzkopp Geschrieben 18. Dezember 2007 Geschrieben 18. Dezember 2007 Wenn der Wert NULL ist wird zur nächsten Datei gesprungen.Den Code lesen kann ich selbst. Was soll dieser Vergleich bewirken? Was glaubst du, was der Vergleich mit NULL tut? Das ist doch der springende Punkt. Zitieren
Filou Geschrieben 18. Dezember 2007 Autor Geschrieben 18. Dezember 2007 Sorry.. bin nicht so der Profi im Programmieren. ich schau mal wie ichs anders machen kann... Zitieren
Klotzkopp Geschrieben 18. Dezember 2007 Geschrieben 18. Dezember 2007 Sorry.. bin nicht so der Profi im Programmieren. ich schau mal wie ichs anders machen kann...Warum sagst du es denn nicht einfach? Ist der Code nicht von dir? Der Compiler weiß nicht, was du mit dem Code meinst. Wir wissen es auch nicht. Wir können natürlich irgendeine Lösung vorschlagen, die die Unklarheiten für den Compiler ausräumt. Ob der Code dann aber das tut, was du willst, ist Glückssache. Willst du prüfen, ob der String leer ist? Willst du prüfen, ob das erste Zeichen ein Nullzeichen ist? Oder etwas ganz anderes? Zitieren
Filou Geschrieben 18. Dezember 2007 Autor Geschrieben 18. Dezember 2007 Doch der Code is von mir. Das ist nur schon über 1 Jahr her und jetzt muss ich was abändern dran mit dem neuen VS2005. Daher muss ich es erstmal wieder lauffähig bekommen. Also das ist so: ich habe dieses Array das mit Dateinamen gefüllt ist. Diese Dateien will ich löschen. Ich weiß vorher nicht wieviele datein da drin sind also will ich schauen wann das Array leer ist um mit dem Löschen aufhören zu können. ich habe jetzt mal aus dem NULL ein "" gemacht. jetzt kann ich es kompilieren. Ob es jetzt auch tut was es soll muss ich gleich mal testen wenn das Programm läuft. Mal noch eine andere Frage: Ich habe unter VS6 ein kleines Fenster eingeblendet. //Bitte warten Dilaog einblenden hInst = GetModuleHandle(NULL); hWnd2 = CreateDialog(hInst, MAKEINTRESOURCE(IDD_LIZENZ), *this, NULL); AnimateWindow(hWnd2, 1000, AW_BLEND); Jetzt ist es aber so, dass AnimateWindow nur noch 2 Parameter will. Das hWnd2 wird anscheinend an dieser Stelle nicht angegeben. Wie kann das dieses Fenster denn einblenden? Zitieren
Klotzkopp Geschrieben 18. Dezember 2007 Geschrieben 18. Dezember 2007 Jetzt ist es aber so, dass AnimateWindow nur noch 2 Parameter will. Das hWnd2 wird anscheinend an dieser Stelle nicht angegeben. Wie kann das dieses Fenster denn einblenden?Die Version mit den 2 Parametern ist CWnd::AnimateWindow. Das Fenster wird da über den this-Zeiger des benutzten Objekts bestimmt. Diese Methode verdeckt die globale AnimateWindow-Funktion, weil dieser Code in einer Methode einer von CWnd abgeleiteten Klasse steht. Wenn du auf die globale Funktion zugreifen willst, setz einfach zwei Doppelpunkte vor den Namen: ::AnimateWindow(hWnd2, 1000, AW_BLEND); Zitieren
Filou Geschrieben 18. Dezember 2007 Autor Geschrieben 18. Dezember 2007 Hat alles geklappt. Ich danke Dir!!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.