16. februar 2004 - 17:02Der er
6 kommentarer og 1 løsning
mfc fejl?
hej eksperter. jeg undrer mig over følgende: Jeg kalder en dialog hvori der er en edit box der smider en tal værdi i int'en m_nKoebsAntal denne bliver hentet over i min main dialog med: CKoeb dlg; dlg.DoModal(); m_nKoebsAntal = dlg.m_nKoebsAntal; Hvis jeg herefter konvertere int'en til en char og smider den i en messagebox kommer der og det rigtige tal op. MEN.. længere nede i programmet kalder jeg en anden funktion(void IndtegnEgneVarer()) og det er her problemet opstår. hvis jeg konvertere int'en her og smider den i en messagebox er tallet pludselig et 9 cifret negativt tal??? hvorfor? både funktionen der indhenter værdien og funktionen der bliver kaldt er member i samme klasse hvorvariablerne også er? hvad er der galt?
jeg har fundet ud af at fejlen nok ligger i sætningen: m_nKoebtAntalKniv = m_nKoebtAntalKniv + m_nKoebsAntal; da hvis jeg undlader den og konvertere m_nKoebsAntal istedet for m_nKoebtAntalKniv giver det den rigtige værdi i messageboxen? hvad gør jeg galt i den sætning eller i den kode blok?
Generelt bør du ikke gemme værdier som let kan beregnes Det ser du til at du har 3 members, m_nKoebtAntalKniv, m_nKoebtAntalKniv og m_nKoebsAntal hvor den første er summen af de 2 andre. I stedet kunne du lave en simpel funktion: GetKoebtAntalKniv() { return m_nKoebtAntalKniv + m_nKoebsAntal; }; Det kan nemlig give problemer hvis du opdaterer én variabel, men ikke de andre.
Hvilken type er m_chAntalKniv? Er det blot en char som du skriver, eller er det et char array?
Du kan iøvrigt bruge CString's Format-metode istedet for sprintf, altså: sprintf(m_chAntalKniv, "%d", m_nKoebtAntalKniv); kan erstattes med: m_strAntalKniv.Format("%d", m_nKoebtAntalKniv); eller m_strAntalKniv.Format("%d", m_GetKoebtAntalKniv()); Hvor m_strAntalKniv er en CString.
hvis nogle mener de fortjente point skal i være velkomne til at kontakte mig sleizer@msn.com
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.