Loki876 Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Hi, ich hab Listenfeld in einem Dialogfenster. Bei aufruf des Dialogfesnters sollen nun Strings, die in einem Array gespeichert sind, als Listenelemnte eingefuegte werden. Es werden aber nur leere Strings eingefuegt. Das Array das uebergeben wird ist definitiv nicht leer. So sieht das etwa bei mir aus: MainDlg.h: CUnterDlg m_dUnterDlg; CString text[10]; UnterDlg.h: CString liste[10]; void CMainDlg::OnUnterDlg() { ... for (int i=0;i<10;i++) { m_dUnterDlg.liste = text[10]; } ... if (m_dUnterDlg.DoModal () == IDOK) { UpdateData(FALSE) } } BOOL CUnterDlg::OnInitDailog() { for (int i=0;i<10;i++) { m_ctrlListe.AddString(liste[10]); } return TRUE; } Gruss Thomas! Zitieren
Guybrush Threepwood Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 for (int i=0;i<10;i++) { m_dUnterDlg.liste = text[10]; } Das Element text[10] existiert nicht... Zitieren
law Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 arrays sind 0 terminiert das heißt wenn du ein Array initialisierst mit array[10] hast du 10 felder zum füllen also 0-9 ;D Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 for (int i=0;i<10;i++) { m_dUnterDlg.liste = text[10]; } tipp fehler: text[10] soll natuerlich text heissen Zitieren
Guybrush Threepwood Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 CString text[10]; heißt du hast die Elementen von 0-9. Um text[10] zu haben müsstest du es so deklarieren: CString text[11]; @law 0 Terminiert bedeutet das ein C-String am Ende immer eine binäre NULL stehen hat welche das Ende des Strings kennzeichnet. Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 CString text[10]; heißt du hast die Elementen von 0-9. Um text[10] zu haben müsstest du es so deklarieren: CString text[11]; wie grad oben geschrieben war das ein tipfehler hier im forum. in meinem program is das schon richtig. Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 in meinem program is das schon richtig.In beiden Fällen? Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 ja, in beiden faellen. Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Wie und wo füllst du denn das Array text? Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 Die werden in MainDlg gefuellt, und muessen wegen des logischen aufbaus meines programmes gefuellt sein, bevor die funktion OnUnterDlg ausgefuehrt wird. Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Die werden in MainDlg gefuellt,Das ist erst mal nur eine Klasse, da kann nichts ausgeführt werden. und muessen wegen des logischen aufbaus meines programmes gefuellt sein, bevor die funktion OnUnterDlg ausgefuehrt wird.Und werden sie das auch? Bau doch mal eine MessageBox in deine Kopierschleife ein, um zu prüfen, ob in text überhaupt etwas drin steht. Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 habe ich schon. sie werden auf jedenfall gefuellt. hab auch schon mal den debugger zu rate gezogen. irgendwo zwischen fuellen und aufrufen der zweiten dialogfenster, wo das listenfeld gefuellt werden soll, entleert sich das array wieder. Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 habe ich schon.MessageBox in der Kopierschleife? hab auch schon mal den debugger zu rate gezogen. irgendwo zwischen fuellen und aufrufen der zweiten dialogfenster, wo das listenfeld gefuellt werden soll, entleert sich das array wieder.Dann liegt der Fehler in dem Teil des Codes, den du weggelassen hast. Möglichweise hantierst du mit mehr als einer Instanz einer Dialogklasse. Vielleicht modifizierst du eines der Arrays auch noch an anderer Stelle. Ohne mehr von dem Code zu sehen, kann man das nicht sagen. Zitieren
Loki876 Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 ja danke erstmal fuer die tipps. mein quellcode is leider ueber 6000 zeilen lang, und da ich nicht weiss wo der fehler genau auftritt, weiss ich nicht welchen teil ich hier zeigen soll. an anderen stellen wird mit den zwei textfeldern nix angestellt. Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Dann fang doch mal an der Stelle an, an der du text füllst. Und zeig bitte auch, wie du diese Funktion aufrufst. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.