ifstream nicht zu gebrauchen ... brauche hilfe



  • Hallo Maedels,

    ich hab da mal ein Problem. Ich kann ifstream nicht verwenden, da ich fuer PocketPC progge. Doch ich koennte alles umwandeln auf FILE (fopen, fwrite, etc.). Nur leider hab ich das voll nicht drauf und wuerde mich sehr ueber ein wenig Unterstuetzung freuen.

    Ich habe folgenden Code schon zum grossen Teil umgewandelt doch komme ich beim Lesen (fast ganz unten) nicht weiter.

    int CTeilerDlg::Teilen() 
    { 
       UpdateData(true); 
    
       FILE *inDatei; 
       inDatei = fopen("\\schwarzweiss.bmp", "r"); 
    
       if(inDatei != NULL) 
       { 
          AfxMessageBox(L"wir sind drin"); 
          int Teile, Teilnr = 1, naechstePosition, Dateigroesse; 
          CString TeilName; 
          FILE *TeilDatei; 
          char *Puffer = new char[2]; 
          *(Puffer+1) = '\0'; 
          char *Zahl = new char[1]; 
          char *TeileZahl = new char[1]; 
    
          fseek (inDatei,0,SEEK_END); 
          Dateigroesse = ftell (inDatei); 
          fseek (inDatei,0,SEEK_SET); 
          Teile = Dateigroesse / m_ByteAnz + 1; 
          m_sicht = Teile; 
          UpdateData(false); 
          _itoa(Teile,TeileZahl,10); 
          char test[22]="\\schwarzweiss.bmp.5v5"; 
    
          while(Teilnr <= Teile) 
          { 
          //TeilName = m_sDateiname + "." + _itoa(Teilnr,Zahl,10) + "v"+TeileZahl; 
          //LPTSTR test = TeilName.GetBuffer((sizeof(TeilName)+1)); 
          //TeilName.ReleaseBuffer(); 
             naechstePosition = Teilnr * m_ByteAnz; 
    
             test[18]=*_itoa(Teilnr, Zahl, 10); 
             TeilDatei = fopen(test, "w+"); 
                  //TeilDatei.open(TeilName, ios::out | ios::binary); 
    
             while((fseek (inDatei,0,SEEK_CUR) < naechstePosition) && 
                   (fseek (inDatei,0,SEEK_CUR) < Dateigroesse)) 
             { 
                inDatei.read(Puffer,1); 
                TeilDatei.write(Puffer,1); 
             } 
    
             Teilnr++; 
             TeilDatei.close(); 
          } 
       } 
    
       inDatei.close();*/ 
       } 
          return (1); 
    }
    

    ...ich moechte mit dem Programm eine x-beliebige Datei in mehrere Stuecke zerlegen um sie anschliessend zu versenden und dann wieder zusammenzubauen.

    Bitte helft mir die letzte While Schleife umzubauen!

    gruss
    Guenni



  • Hallo,

    weshalb arbeitest du nicht mit CFile, CStdioFile?



  • doofe ueberschrift.

    mal hier schaun
    http://www.diabolo666.com/tutorials/c++/Vcplus6/kap_f.htm
    und folgende..

    wenn schon mfc dann richtig 😉



  • ich weiss einfach nicht wie ich es anstelle dass ich die files nach belieben stueckeln kann
    wie reiss ich sie auseinander?
    CFile bietet mir da auch nichts offensichtliches...damit hatte ich begonnen

    bin dann auf ifstream umgestiegen und musste dann feststellen dass es unter embedded c++ nicht zu verwenden ist (MIST!!!!!)

    vielleicht koenntet ihr mir einfach mal ein wenig code fuer die letzten zeilen zukommen lassen obwohl es gegen den grundsatz ist

    dann schaff ich vielleicht es zu raffen...

    Waere einfach nur nett von Euch!!

    gruss
    Guenni



  • ich habe gerade festgestellt dass folgendes schon recht gut funzt jedoch wird meine datei am ende immer weitergeschrieben und zwar mit hex "00".
    ?

    int CTeilerDlg::Teilen()
    {
    	UpdateData(true);
    
    	FILE *inDatei;
    	inDatei = fopen("\\schwarzweiss.bmp", "r");
    
    	if(inDatei != NULL)
    	{
    		AfxMessageBox(L"wir sind drin");
    		int Teile, Teilnr = 1, naechstePosition, Dateigroesse;
    		CString TeilName;
    		FILE *TeilDatei;
    		char *Puffer = new char[2];
    		*(Puffer+1) = '\0';
    		char *Zahl = new char[1];
    		char *TeileZahl = new char[1];
    
    		fseek (inDatei,0,SEEK_END);
    		Dateigroesse = ftell (inDatei);
    		fseek (inDatei,0,SEEK_SET);
    		Teile = Dateigroesse / m_ByteAnz + 1;
    		m_sicht = Teile;
    		UpdateData(false);
    		_itoa(Teile,TeileZahl,10);
    		char test[22]="\\schwarzweiss.bmp.5v5";
    
    		int wert=0;
    
    		while(Teilnr <= Teile)
    		{
    			//TeilName = m_sDateiname + "." + _itoa(Teilnr,Zahl,10) + "v" + TeileZahl;
    			//LPTSTR test = TeilName.GetBuffer((sizeof(TeilName)+1));
    			//TeilName.ReleaseBuffer();
    			naechstePosition = Teilnr * m_ByteAnz;
    
    			test[18]=*_itoa(Teilnr, Zahl, 10);
    			TeilDatei = fopen(test, "w+");
    		//	TeilDatei.open(TeilName, ios::out | ios::binary);
    
    			while((fseek (inDatei,0,SEEK_CUR) < naechstePosition) && (fseek (inDatei,0,SEEK_CUR) < Dateigroesse))
    			{
    				wert = fread(Puffer, sizeof(char),1,inDatei);
    				wert = fwrite(Puffer, sizeof(char),1,TeilDatei);
    			//	inDatei.read(Puffer,1);
    			//	TeilDatei.write(Puffer,1);
    			}
    
    			Teilnr++;
    		//	TeilDatei.close();
    
    		}
    	CFile
    
    	//inDatei.close();*/
    	}
    		return (1);
    }
    


  • argh.

    Man sollte nicht C mit C++ mischen.
    Schau dir mal ifstream an, damit dürfte es gehen.

    Devil



  • leider ist die klasse fstream unter embedded programmierung nicht verfügbar!
    Wir hatten bereits ein lauffähiges Prog unter VC6.0 mit fstream realisiert!
    Nach dem dann der Kompiler von eVC uns auszählte das er fstream nicht kann, mussten wir leider auf C unsteigen! Das kann WinCE nämlich verstehen!

    Ich würde mir auch wünschen es wär alles so einfach wie unter VC6.0! 😃

    sven



  • devil is jan clown!! 🤡

    les mal den ersten beitrag, da schreib ich das das noch vorhandene ifstream wech muss 😉

    gruss
    Guenni



  • ups 😃
    Naja, dann schreibt halt ne klasse die FILE * Kapselt,
    wäre immer noch übersichtlicher 😉

    Devil


Anmelden zum Antworten