CFile::Read

Anfänger92

Erfahrenes Mitglied
Ich will mit CFile::Read aus einer Datei Daten auslesen und das ganze dann in einen CString speichern. Das macht schonmal Probleme und ich habe keine andere Lösung
gefunden auser alles aus einem char array zu speichern und dann in den CString zu kopieren. Dabei stürtzt mein Programm jetzt ab. Weiß jemand wie ich direkt in einen CString speichern kann oder was an meinem Cod falsch ist ?:
Code:
CString MeinProgramm::DateiLaden(CString DateiName){
	CFile InFile;
	try{
		InFile.Open(DateiName,CFile::modeRead);
	}
	catch(...){
	                //Fehler
	}
	int Länge = InFile.GetLength();
	char Buffer100[100];
	char Buffer10[10];
	char Buffer1[1];
	CString Data;
	//Daten lesen
	for(int i=0;i<=Länge;)
	{
		if(i+100<=Länge)
		{
			InFile.Read(Buffer100,100);
			int i;
			for(int b=i;b<=i+100;b++)
			{
				Data.Insert(b,Buffer100[i]);
				i++;
			}
			i=i+100;
		}
		if(i+10<=Länge)
		{
			InFile.Read(Buffer10,10);
			int i;
			for(int b=i;b<=i+10;b++)
			{
				Data.Insert(b,Buffer10[i]);
				i++;
			}
			i=i+10;
		}
		if(i+1<=Länge)
		{
			InFile.Read(Buffer1,1);
			int i;
			for(int b=i;b<=i+1;b++)
			{
				Data.Insert(b,Buffer1[i]);
				i++;
			}
			i=i+1;
		}
	}
	MessageBox(Data);
	return Data;
}

Der Fehler tritt im Dick hinterlegten Teil des Codes aus.
 
Hallo,

dein Code schaut recht kompliziert aus, so dass ich auf die Fehlersuche verzichte und dir lieber eine etwas einfachere Variante vorschlagen möchte:
C++:
CString Data = _T("");
CFile InFile;

if( InFile.Open(DateiName,CFile::modeRead) )
{	
    char Buffer[4096];
    int nRead;

    while( (nRead = InFile.Read(Buffer, sizeof(Buffer))) )
    {
        Buffer[nRead] = 0;
        Data += Buffer;
    }

    InFile.Close();
}
Gruß
MCoder
 
Ja danke klappt wunderbar :)

Hatte grad den Fehler gefunden. Hatte einer Varibalen keinen Wert zu gewiesen mit der Gerechnet werden sollte.

Aber deine Lösung ist um ein ganzes Stück kürzer und einfacher.

Danke Nochma

Mfg Anfänger
 

Neue Beiträge

Zurück