Problem mit CString



  • Funktioniert leider auch nicht.
    Aber ich habe etwas herrausgefunden.

    v_detail += "System "+did+":\r\n";
    v_detail += "Computername: ";
    v_detail += returndb3;
    v_detail += "\r\nIP Adresse: ";
    v_detail += returndb4;
    v_detail += "\r\nSeriennummer: ";
    v_detail += returndb2;
    v_detail += "\r\nGeräte Typ: ";
    v_detail += returndb8;
    v_detail += "\r\nRamgröße: ";
    v_detail += returndb5;
    v_detail += "\r\nBetriebssystem: ";
    v_detail += returndb6;
    v_detail += "\r\nServicepack: ";				
    v_detail += returndb7;
    loaddetailcpu(ID);//Funktioniert im ersten lauf
    loaddetailloc(returndb10);//Funktioniert im ersten lauf
    loaddetailher(returndb9);//Funktioniert im ersten lauf
    loaddetailbem(ID);//Funktioniert im ersten lauf
    loaddetailmas(ID);	//Funktioniert im ersten lauf
    //Funktioniert auch im ersten lauf nicht???		
    v_detail += "\r\n";
    //Funktioniert wieder???		
    UpdateData(false);
    

    Ich glaub ich dreh am rad 😡



  • Kann es sein das returndb7 0 ist bzw. einer der Werte die angefügt werden sollen '\0' sind ?



  • jo, könnte sehr gut sein, dass eine deiner Funktionen ein '\0' in den String schreibt. Da CString intern ein NULLterminiertes Array verwendet ist der String für CString dann dort natürlich zu Ende.



  • Leider nein. Das wird bei der Eingabe der Daten kontrolliert.
    Kein wert darf == 0 oder == NULL sein.
    Mal ein Auszug:
    *
    System 0:
    Computername: RECHNERNAME2
    IP Adresse: 123.456.789.0
    Seriennummer: 123452
    Geräte Typ: Workstation
    Ramgröße: 128
    Betriebssystem: Windows 2000
    Servicepack: SP 3
    CPU Typ: Intel Pentium(R) III
    CPU Speed: 333
    CPU Anzahl: 1
    Location: Buxdehude
    Hersteller: 123
    Bemerkung: Bemerkung
    Massenspeicher Typ: Diskettenlaufwerk
    Massenspeicher Größe: 1.44 MB
    Massenspeicher Anzahl: 1
    Massenspeicher Typ: CD-Rom Laufwerk
    Massenspeicher Größe: 700 MB
    *

    Folgendes ist aber nicht mit drinn:

    v_detail += "\r\n";
    


  • zeig doch mal den Code der funktion loaddetailsmas



  • CString soll ja bis zu 2.000.000 Zeichen oder so in der Grössenordnung verkraften, aber ich hatte auch mal so ein Problem, bei dem ich ständig mit += einen CString verlängert habe. Das hat aber ziemlich schnell schon nicht mehr funktioniert. So in der Nähe von 250 Zeichen war Schluss, da hat er, warum auch immer, nix mehr angehängt.
    Mit strcpy(...) und dann vielen strcat(...) anstatt += hat es dann aber doch geklappt.



  • void ChvDlg::loaddetailmas(CString ID)
    {
    CString returndb1, returndb2, returndb3;
    	CString SQLString;
    	CDatabase db;
    	CString connectstring = "DSN=myconnect;UID=****;PWD=****";
    	TRY 
        { 
    
            bool erg; 
            erg = db.OpenEx(connectstring,CDatabase::noOdbcDialog); 
    		if(erg == true)
    		{
    
    			CRecordset recset( &db );
    			SQLString = "SELECT MTyp AS MT, MGroesse AS MG, MAnzahl AS MA FROM HMassenspeicher WHERE CID =";
    			SQLString += ID;
    			SQLString += ";";
    
    			recset.Open(CRecordset::forwardOnly,SQLString,CRecordset::readOnly);
    
    			while( !recset.IsEOF() )
    			{
    
    				recset.GetFieldValue("MT",returndb1);
    				recset.GetFieldValue("MG",returndb2);
    				recset.GetFieldValue("MA",returndb3);
                            v_detail += "\r\nMassenspeicher Typ: ";
    				v_detail += returndb1;	
    				v_detail += "\r\nMassenspeicher Größe: ";
    				v_detail += returndb2;
    				v_detail += "\r\nMassenspeicher Anzahl: ";
    				v_detail += returndb3;
    				recset.MoveNext();
    			}
    			db.Close();
    
    		}
        } 
    	CATCH(CDBException, e)
    	{
    		CString error = "Folgender Fehler ist aufgetreten:\n";
    		error = e->m_strError;
                MessageBox(error,"Error",MB_OK);	
    	}
    	END_CATCH;
    }
    


  • 😡 *aaaaaahhhhhhhrrrrrrrrrgggggggg* 😡
    Nachdem ich in der DB die werte von float auf varchar umgestellt habe funktioniert es wieder?????
    😡 *aaaaaahhhhhhhrrrrrrrrrgggggggg* 😡

    @ALL: Danke



  • ähm?
    float-werte? Und dann liest du sie in nen CString aus ?!



  • Ganz ehrlich?
    Mir ist im moment scheiss egal was ich auslese, hauptsache es funktioniert.
    Ich muss Heute die ersten ergebnisse abgeben.
    Um alles weitere kann ich mir später sorgen machen.

    MFG

    RS


Anmelden zum Antworten