Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Frage zu Ablauf

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
12.10.2002, 19:42 Uhr
~Andy
Gast


Moin!

Ich habe eine Dialogfeld Basierende Anwendung.
In der klasse C1Dlg ruft eine Funktion OpenDlg2 über DoModal die Klasse C2Dlg auf
da habe ich in einer Funktion den aufruf

PostMessage(WM_CLOSE); (letzte Anweisung der Funktion)

was pasiert jetzt die Funktion wird beendet C2Dlg wird beendet eventuell OnDestroy() (habe ich nicht) dann C1Dlg::OnPaint und dann hinter C1Dlg::OpenDlg2 hinter DoModal oder?

Denn dazwischen kommt es zu einem Ablauffehler WindowsMessage
"Fehler in Anwendung!
Die Anwiesung in "0x77e578ce" verweist auf Speicher in "0x6562613c". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden."

mit dem Debuggen kenne ich mich leider nicht aus!

Kann mir da Jemand Helfen?

Danke!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.10.2002, 19:55 Uhr
~Andy
Gast


Muss ich da noch einen Rückgabe Wert für DoModall Definieren?
Oder etwas in der Art?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.10.2002, 19:57 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ersetz mal PostMessage nach OnOK(), obwohl PostMessage eigentlich stimmen müsste. Wenn das noch immer net funtzt, geh auf Erstellen>Aktive Konfiguration festlegen>Debug und dann auf Erstellen>Debug starten>Ausführen. Bei einem Lese/Schreib Fehler glob i aber, kommt ma da zu keinem Ergebnis, da er nur zu irgendwelchen Maschinensprachen Schnippsel zeigt. Poste einfach mal die Schlüsselstellen.

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.10.2002, 20:02 Uhr
~Andy
Gast


OnOk ist schon belegt

OnOk
{
OnSpeichern(); //wegen Enter
}

OnSpeichern();
{
...
Code
...

PostMessage(WM_Close);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.10.2002, 20:03 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Ich habe jetzt schon eine Weile nicht mehr ernsthaft mit VC++ geproggt, aber wenn ich mich recht entsinne, kommt der Fehler immer, wenn Du Dir irgendwie den Speicher zerschrieben hast und das merkt er irgendwann beim zersören des Dialogs.
Schreibst Du vielleicht irgendwo über array-Grenzen hinaus?
Was macht denn Deine Klasse alles (zwischen Erstellung und Zerstörung)?

MfG
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.10.2002, 20:14 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Poste mal den OnSpeichern Source.

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2002, 20:16 Uhr
~Andy
Gast


Viel!

Im Wesentlichen gibt der Benuzer einen Neuen Eintrag ein der in Einer Datei Gespeichert wird!

Ich Prüfe ob die Datei schon da ist. Wenn nicht erstelle ich sie mit Start Parametern

so dann Bennene ich sie um und Lese dann die umbenant und schreibe die Datei mit altem Namen gleichzeitig und ergense den neuen Eintrag.

Dann schliesse ich beide Lösche die umbenante und dann PostMessage(WM_CLOSE);

Ich hatte aber ein Problem mit float schreiben und lesen kann sein das ich da was Falsch gemascht Habe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2002, 20:21 Uhr
~Andy
Gast


Debbuger
"Unbehandelte Ausnahme in My.exe(KERNEL32.DLL): 0xC0000005: Access Violation"

77E578CE lock xadd dword ptr [ecx],eax
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.10.2002, 20:23 Uhr
~Andy
Gast


.exe" wurde mit Code 1 (0x1) beendet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.10.2002, 20:24 Uhr
~Andy
Gast


{
UpdateData(TRUE);
int iTag;
CString sMonat;
int iJahr;
CString DateiName;
CString sGesammtSollHaben = "Keiner";
int iDatenAnzahl = 0;
int Version;
float fBetrag;
CString sSoll_Haben;
CString sDatum;

if(PruefeDatum(&iTag,&sMonat,&iJahr)) ////Gibt 1 Bei Fehler
{
MessageBox("Bitte gültiges Datum angeben!\n(z.B. 1.1.02 oder 01.01.2002)", "Fehler!", MB_OK | MB_ICONEXCLAMATION);
return;
}

if(PruefeBezeichnug()) ////Gibt 1 Bei Fehler
{
MessageBox("Zeichen-folge \"|aGcOp9d~|\"nicht erlaubt", "Fehler!", MB_OK | MB_ICONEXCLAMATION);
return;
}

DateiName.Format("%s%d.alf", sMonat, iJahr);

FILE* SpeicherMonat;
FILE* LadeMonat;
CString DateiName2 = "Monat1.tmp";
int z = 2;

while(LadeMonat = fopen(DateiName2,"r"))
{
DateiName2.Format("Monat%d.tmp", z);
++z;
fclose(LadeMonat);
}


if(!(SpeicherMonat = fopen(DateiName,"r")))
{
if(!(SpeicherMonat = fopen(DateiName,"w")))
{
CString FehlerText;
FehlerText.Format("Datei %s kann nicht\nzum Speichern geöffnet werden!", DateiName);
MessageBox(FehlerText, "Fehler!", MB_OK | MB_ICONEXCLAMATION);
return;
}
fprintf(SpeicherMonat, "1\n"); //Version
fprintf(SpeicherMonat, "%.2f\n", 0);
fprintf(SpeicherMonat, "Keine\n");
fprintf(SpeicherMonat, "0\n");
fclose(SpeicherMonat);
}
else
{
fclose(SpeicherMonat);
}

rename(DateiName, DateiName2);

if(!(LadeMonat = fopen(DateiName2,"r")))
{
CString FehlerText;
FehlerText.Format("Datei %s kann nicht\nzum Lessen geöffnet werden!", DateiName2);
MessageBox(FehlerText, "Fehler!", MB_OK | MB_ICONEXCLAMATION);
return;
}

if(!(SpeicherMonat = fopen(DateiName,"w")))
{
CString FehlerText;
FehlerText.Format("Datei %s kann nicht\nzum Speichern geöffnet werden!", DateiName);
MessageBox(FehlerText, "Fehler!", MB_OK | MB_ICONEXCLAMATION);
return;
}

fscanf(LadeMonat, "%d" ,&Version);
fscanf(LadeMonat, "%f", &fBetrag);
fscanf(LadeMonat, "%s" ,&sSoll_Haben); ///sDatum
fscanf(LadeMonat, "%d" ,&iDatenAnzahl);

fBetrag += m_fBetrag;
++iDatenAnzahl;


fprintf(SpeicherMonat, "1\n"); //Version
fprintf(SpeicherMonat, "%.2f\n", fBetrag);
if(fBetrag < 0)
{
fprintf(SpeicherMonat, "Soll\n");
}
else
{
fprintf(SpeicherMonat, "Haben\n");
}
fprintf(SpeicherMonat, "%d\n", iDatenAnzahl);

//while(z < DateiPos)

fclose(SpeicherMonat);
fclose(LadeMonat);
remove(DateiName2);
PostMessage(WM_CLOSE);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: