Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Cstring Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.08.2003, 21:06 Uhr
AlfameisterT



Hallo,
mal wieder ein neues Problem

Wenn ich sowas verwende
CStrTemp.Format("%c\\*.avi",Laufwerke[ i ]);
dann wird nach der Funktion Format die Variable Laufwerke gelöscht, bzw steht nur noch Müll drinn.

Hier mal Beispielcode

C++:
    CString CStrTemp;
    LPCTSTR lpFileName;
    WIN32_FIND_DATA find_data;
    HANDLE hFind;

    char *Laufwerke=findCDRom();
    //char *Laufwerke="EF";

    
    for(int i=0;i<26;i++)
    {
        if(Laufwerke[i]=='\0')
            break;    
                
        CStrTemp.Format("%c\\*.txt",Laufwerke[i]);
        lpFileName=CStrTemp;    
        
        hFind = FindFirstFile(lpFileName, &find_data);
        if(hFind != INVALID_HANDLE_VALUE)
        {            
            do
            {
                //AfxMessageBox(find_data.cFileName);
            }while (FindNextFile(hFind, &find_data));
        }
        FindClose(hFind);        
    }                



Warum ist das so?
--edit: Pablo. [ i ] tag in [ i ] Operator

Dieser Post wurde am 29.08.2003 um 21:32 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.08.2003, 21:34 Uhr
Pablo
Supertux
(Operator)


Keine Ahung was CStrTemp::Format macht, das ist auf jeden Fall nicht ANSI. ->
In VC++ Forum können sie dir mehr helfen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.08.2003, 22:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Warum benutzt du API-Call's wenn du sowieso MFC benutzt?


C++:
CString strTemp;

char *Laufwerke=findCDRom();
//char *Laufwerke="EF";

for(int i=0;i<26;i++)
{
   if(Laufwerke[i]=='\0')
     break;    

   strTemp.Format("%c:\\*.txt",Laufwerke[i]);
  
   CFileFind finder;
   BOOL bWorking = finder.FindFile(strTemp);
   while (bWorking)
   {
      bWorking = finder.FindNextFile();
      AfxMessageBox(finder.GetFileName());
   }
   finder.Close();
}                


--
class God : public ChuckNorris { };

Dieser Post wurde am 30.08.2003 um 09:58 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.08.2003, 07:17 Uhr
AlfameisterT




Zitat:
Warum benutzt du API-Call's wenn du sowieso MFC benutzt?

Da ich überhaupt nicht wusste wie ich sowas löse, hab ich halt mal gegoogelt. Und das war das erste was ich gefunden hatte. Aber gut zu wissen das es die CFileFind gibt.

Leider besteht das Problem trotzdem noch.
Nach myString.Format("%c\\*.avi",Laufwerke[ i ]);
geht Inhalt von Laufwerke verloren.

Dieser Post wurde am 30.08.2003 um 07:18 Uhr von AlfameisterT editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.08.2003, 09:50 Uhr
Tommix



'Morgen,
ich kann's nicht nachvollziehen. Wird Dein rauskommentierter String (char *Laufwerke="EF";) auch zerschossen? Ansonsten könnte der Fehler auch in findCDRom liegen.
Gruss, Tommix

Dieser Post wurde am 30.08.2003 um 09:52 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.08.2003, 09:56 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
bis auf das ein : fehlt ist die Routine ok.
(myString.Format("%c:\\*.avi",Laufwerke[ i ]);
Ansonst siehe Tommix
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 30.08.2003 um 09:56 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.08.2003, 12:50 Uhr
AlfameisterT



Hallo Tommix,
tatsächlich, mit dem Auskommentierten funktioniert es.
Habs nur für die Leser hier zum Testen geschrieben.

In der FindCDRom hatte ich
char *
zurückgegeben.

Naklar, da wird ja nur die Adresse zurückgegeben, und irgendwann wird halt der Bereich überschrieben.
Jetzt hab ich halt die Variable als Member von der Klasse gemacht.
Das ich da nicht eher draufgekommen bin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: