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