Hilfesuchender
Grünschnabel
Hab ein riesiges Problem, und ich hoffe ihr könnt mir so schnell wie möglich helfen.......
Hab eine Dialoganwendung in der ich Werte in eine Listbox eintrage, auslese und weiterverarbeite....
Dazu kann ich einen Datensatz aus einer Datei laden, einen neuen anlegen oder einen bestehenden erweitern.
Das Laden aus der Datei funktioniert wunderbar, die anderen beiuden Sachen machen aber mittlerweile Probleme. Was erst reibungslos zu klappen schien geht nun net mehr und ich weiss net mehr weiter.....
aber mal zum Code:
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
so, das klappt net mehr, denn sobald ich den String in der listbox anklicke schmiert das Programm ab, um genau zu sein: Debug Assertion Failed! File:afx.inl Line:122
Wenn ich das richtig sehe gibts irgendwelche Probleme mit CString, aber ich hab keinen blassen Schimmer welchen....
naja, wie gesagt: sobald ich den Wert in der listbox anklicke... also hier mal der Code der box:
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
das mag er also scheinbar net... um genau zu sein: die while-schleife mag er nicht, zumindest macht er keine Mucken wenn ich sie rausnehme, alles andere is ihm wurscht.......
Wobei eigentlich auch alle CStrings eindeutig sind und bisher keine Probleme gemacht haben.....
ich versteh es nunmal net, vor 1,5 Stunden klappte alles, dann wars auf einmal vorbei.... und heute muss alles zu allem Überfluss fertig werden... ist ja erst die 2 durchgemachte Nacht *grummel*
Und bitte kiene Beschwerden über das Chaos, ich weiss vieles kann man besser machen, aber ebenso könnt ich tausend Ausreden erfinden warum dem nicht so ist....
bin halt Anfänger unter Extremdruck.....
Hab eine Dialoganwendung in der ich Werte in eine Listbox eintrage, auslese und weiterverarbeite....
Dazu kann ich einen Datensatz aus einer Datei laden, einen neuen anlegen oder einen bestehenden erweitern.
Das Laden aus der Datei funktioniert wunderbar, die anderen beiuden Sachen machen aber mittlerweile Probleme. Was erst reibungslos zu klappen schien geht nun net mehr und ich weiss net mehr weiter.....
aber mal zum Code:
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
C/C++ Code:
void CRankPrintDlg::OnHinzufuegen()
{
CHinzufuegen m_dHinzufuegen;
if (m_dHinzufuegen.DoModal() == IDOK) {
CString tempPlatzhalter = "";
CString tempPlatzhalter2 = "";
CString nname = m_dHinzufuegen.m_hNachname;
CString vname = m_dHinzufuegen.m_hVorname;
Teilnehmer[hZaehler].SetTurner(nname,vname,m_dHinzufuegen.m_hVerein,m_dHinzufuegen.m_hWettkampfnr,m_dHinzufuegen.m_hLeistungsklasse,m_dHinzufuegen.m_hBoden,m_dHinzufuegen.m_hSprung,m_dHinzufuegen.m_hReck,m_dHinzufuegen.m_hBalkenbarren);
if (Teilnehmer[hZaehler].GetPunkte()<10)
tempPlatzhalter="0";
else
tempPlatzhalter="";
if (Teilnehmer[hZaehler].GetRang()<10)
tempPlatzhalter2="0";
else
tempPlatzhalter2="";
double tempPunkte;
CString tempPunkte2;
int tempRang;
CString tempRang2;
tempPunkte=m_dHinzufuegen.m_hBoden + m_dHinzufuegen.m_hSprung + m_dHinzufuegen.m_hReck + m_dHinzufuegen.m_hBalkenbarren;
tempPunkte2.Format("%.2f",tempPunkte);
tempRang=Teilnehmer[hZaehler].GetRang();
tempRang2.Format("%i",tempRang);
m_hListencontrol.AddString(tempPlatzhalter2 + tempRang2 + " - " + tempPlatzhalter + tempPunkte2 + " - " + nname + " " + vname);
hZaehler = hZaehler + 1;
UpdateData(true);
}
}
so, das klappt net mehr, denn sobald ich den String in der listbox anklicke schmiert das Programm ab, um genau zu sein: Debug Assertion Failed! File:afx.inl Line:122
Wenn ich das richtig sehe gibts irgendwelche Probleme mit CString, aber ich hab keinen blassen Schimmer welchen....
naja, wie gesagt: sobald ich den Wert in der listbox anklicke... also hier mal der Code der box:
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
C/C++ Code:
void CRankPrintDlg::OnSelchangeTeilnehmerliste()
{
UpdateData(true);
if (m_hAktuellerListeneintrag != "") {
GetDlgItem(IDC_LOESCHEN)->EnableWindow(true);
}
CString tempBearbeiten;
AfxExtractSubString(tempBearbeiten,m_hAktuellerListeneintrag,4,' ');
AfxMessageBox(tempBearbeiten);
unsigned short hilfsZaehler = 0;
while (tempBearbeiten != Teilnehmer[hilfsZaehler].GetNachname())
hilfsZaehler = hilfsZaehler + 1;
m_bVorname = Teilnehmer[hilfsZaehler].GetVorname();
m_bNachname = Teilnehmer[hilfsZaehler].GetNachname();
m_bVerein = Teilnehmer[hilfsZaehler].GetVerein();
m_bWettkampfnr = Teilnehmer[hilfsZaehler].GetWettkampfNr();
m_bLeistungsklasse = Teilnehmer[hilfsZaehler].GetLeistungsklasse();
m_bBoden = Teilnehmer[hilfsZaehler].GetBoden();
m_bSprung = Teilnehmer[hilfsZaehler].GetSprung();
m_bReck = Teilnehmer[hilfsZaehler].GetReck();
m_bBalkenbarren = Teilnehmer[hilfsZaehler].GetBalkenbarren();
GetDlgItem(IDC_UEBERNEHMEN)->EnableWindow(true);
UpdateData(false);
}
das mag er also scheinbar net... um genau zu sein: die while-schleife mag er nicht, zumindest macht er keine Mucken wenn ich sie rausnehme, alles andere is ihm wurscht.......
Wobei eigentlich auch alle CStrings eindeutig sind und bisher keine Probleme gemacht haben.....
ich versteh es nunmal net, vor 1,5 Stunden klappte alles, dann wars auf einmal vorbei.... und heute muss alles zu allem Überfluss fertig werden... ist ja erst die 2 durchgemachte Nacht *grummel*
Und bitte kiene Beschwerden über das Chaos, ich weiss vieles kann man besser machen, aber ebenso könnt ich tausend Ausreden erfinden warum dem nicht so ist....
bin halt Anfänger unter Extremdruck.....