
wulfgang
-
Gesamte Inhalte
181 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von wulfgang
-
-
Okay habe jetzt 1 zu 1 aus dem Fenster von vom Stack rauskopiert:
> msvcr80d.dll!_NMSG_WRITE(int rterrnum=25) Line 198 Cmsvcr80d.dll!_purecall() Line 54 + 0x7 bytes C
mfc80ud.dll!CSessionMapPtrToPtr::RemoveKey(void * hInternet=0x00cc0004) Line 75 C++
mfc80ud.dll!CInternetSession::Close() Line 475 C++
mfc80ud.dll!CInternetSession::~CInternetSession() Line 441 C++
test.exe!`dynamic atexit destructor for 'session''() + 0x28 bytes C++
msvcr80d.dll!doexit(int code=0, int quick=0, int retcaller=1) Line 553 C
msvcr80d.dll!_cexit() Line 413 + 0xb bytes C
msvcr80d.dll!__CRTDLL_INIT(void * hDllHandle=0x10200000, unsigned long dwReason=0, void * lpreserved=0x00000001) Line 389 C
msvcr80d.dll!_CRTDLL_INIT(void * hDllHandle=0x10200000, unsigned long dwReason=0, void * lpreserved=0x00000001) Line 214 + 0x11 bytes C
Hilft das irgendwie?
-
Aber vorher zeigt er doch diese Fehlermeldung an, oder?
Ja.
Debug > Windows > Call Stack geht bei mir nicht. Habe stattdessen als Optionen zur Auswahl:
Debug > Windows > Immediate
Debug > Windows > Breakpoints
Debug > Windows > Output
Bei alt+F7 erhalte ich vom Debugger ebenfalls nur die oben von mir zitierte Ausgabe.
-
Wie soll ich mir denn den Callstack anzeigen lassen?
Der Debugger wirft zum Schluss aus:
The thread 'Win32 Thread' (0xa40) has exited with code -1073741510 (0xc000013a).The thread 'Win32 Thread' (0xcf8) has exited with code -1073741510 (0xc000013a).
'test.exe': Loaded 'C:\WINDOWS\system32\msctf.dll', No symbols loaded.
The program '[732] test.exe: Native' has exited with code 3 (0x3).
-
Das Objekt session soll ja erst zum Ende des Programms zerstört werden. Gibt es denn keine Möglichkeit session so zu zerstören wie es jetzt ist?Mach dir klar, welche Aufgaben, Lebenszeiten, Beziehungen und Besitzverhältnisse die einzelnen Klassen und Objekte haben -
Wenn es bei CInternetSession kracht, wäre deren Innenleben interessant
Das habe ich von MFC schon fertig übernommen.
Weiß denn jemand wie ich das Objekt rechtzeitig zerstöre?
-
Moin,ich bekomme von meinem Programm(Konsolenanwendung unter VisualStudio geschrieben), wenn ich das Programmfenster wieder schließen will, als erstes die Meldung:
Debug Error!Program: ...
R6025
-pure virtual function call
(press etry to debug the application)
Das Problem ist ein CInternetSession Objekt. Bin leider noch nicht ganz dahintergekommen, wie ich den Fehler beseitige. Ich weiß, dass der Fehler nur auftaucht wenn ich
CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,(_T( "proxy")), NULL, 0);
außerhalb einer Methode erzeuge also z.B in einer Source:CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY , (_T( "proxy")), NULL, 0); Connect::Connect(void) {}
Kommt der Fehler daher, dass ich session erst zerstören muss? Aber einfach nur delete(session) in der aufrufenden Umgebung funktioniert nicht. Session ist in der aufrufenden Umgebung nicht bekannt
-
Wenn extern, dann nach dem using
Funktioniert jetzt!
const CBR ist natürlich eine sauberere Lösung.Was meinst du damit?
-
Klappt schon fast. Es kommen noch 2 Fehler.
'transfer_data::dateinamen_xar' : illegal storage classerror C2071: 'transfer_data::dateinamen_xar' : illegal storage class
#pragma once #include <vector> #include <algorithm> using namespace std; class transfer_data { public: transfer_data(void); void exception_handling_Change_Directory(void); extern vector<string> dateinamen_xar; //beide Fehler beziehen sich //auf diese Zeile public: ~transfer_data(void); };
-
Hallo,
ich möchte gerne einen vector mit strings global für Methoden verschiedener Klassen verfügbar machen. Wie mache ich das?Ein kleines Beispiel, was in der Header-und was in der Sourcedatei steht, wäre hilfreich.
-
Richtig, die AnweisungDie Schleife geht vermutlich noch weiter, diese beiden Zeilen allein ergeben keinen sinnvollen Schleifenrumpf, weil sich der Wahrheitswert der Abbruchbedingung möglicherweise niemals ändert.hoechstes_blatt++
fehlte noch.
Hier ist zeichnungsnummern_xar ein Vector von strings. Die Schleife ist Teil einer Funktion, welche Dateien, die einen Index in ihrem Namen enthalten, nach dem Index ordnet.zeichnungsnummern_xar ist vermutlich ein Array oder Vector von Strings. -
Das war der Fehler. :upps
-
Ist die erste Fehlermeldung und ich habe sstream eingebunden.Ist das die erste Fehlermeldung?Hast du <sstream> eingebunden?
while (bWorking) { bWorking = finder.FindNextFile (); anzahl_dateien++; string s_dateiname; s_dateiname = finder.GetFileTitle(); zeichnungsnummern_xar.push_back(s_dateiname); cout << finder.GetFileTitle(); cout << " "<< s_dateiname.length() << "\n"; } cout << anzahl_dateien;//Anzahl der Blätter ermitteln int hoechstes_blatt=0; while(hoechstes_blatt<anzahl_dateien) istringstream converter((zeichnungsnummern_xar[2].substr(11,2))); converter >> hoechstes_blatt;
-
Guten Morgen, ich versuche verzweifelt einen string in einen integer umzuwandeln. Erhalte als Fehlermeldung aber immer
error C2065: 'converter' : undeclared identifieristringstream converter((zeichnungsnummern_xar[2].substr(11,2)));converter >> hoechstes_blatt;
Wieso? converter ist doch deklariert.
-
Hallo, ich stehe vor folgendem Problem. Ich habe Zeichenketten mit einem Index. Der Index besteht aus ein ODER zwei Buchstaben . Z.B 1234a12 oder aber 1234aa12. Die Zeichenketten sollen nach dem Index geordnet werden. a ist das niedrigste zz das höchste. Wie erkenne ich nun, ob an der entsprechenden Stelle ein Buchstabe oder eine Zahl vorliegt?
-
Moin, habe es jetzt mit sort und einem Vektor realisiert. Wußte vorher gar nicht, dass es so etwas gibt. Ist ja echt praktisch der vector.
-
Hallo, ich stehe vor folgendem Problem: 1)ich möchte mir alle Unterordner auslesen lassen
2)die Namen der Ordner sollen sortiert werden und in etwas wie ein Array zwischengespeichert werden um weiterverarbeitet zu werden.
Auslesen kein Problem mit
.GetFileTitle( )
. Aber dann, wie speichere ich die Strings am Besten? Wäre so was wiestring arrayname[]
. am Besten?
Aber kann ich dann noch sort verwenden oder muss ich selber eine Sortierfunktion schreiben. Gibt es bessere Loesungen?
-
Ist ja einfach, wenn man die Funktionkennt.
-
Moin,ich versuche aus einem String bestimmte Zeichen wie das 2. , 3. und 4.Zeichen auszulesen.
Funktioniert aber noch nicht ganz, bekomme nur ein falsches Zeichen durch cout.
Gibt es da irgendeine Funktion, die mir das erleichtert?
string s_unterordner; s = "T1234"; s_unterordner = s[1]+s[2]+s[3]; cout << s_unterordner;
-
Habe jetzt auf ANSI umgestellt.Funktioniert!:uli
Musste erst mal alle wchar_t umstellen.
-
Brauchst du Unicode?
Nei eigentlich nicht. Ist es einfacher für mich, wenn ich ANSI benutze? Wo kann ich denn die Projekteinstellungen auf ANSI umstellen? Bin jetzt im PropertyManager->Configuration Properties und dann einfach überall wo Unicode YES vorkommt auf Unicode NO ändern?
-
Moin,
also bei
cout << "Wechsel in das Verzeichnis erfolgreich\n"; string s_unterordner; s_unterordner = s[1] + s[2] + s[3]; cout << s_unterordner.length(); //MultiByteToWideChar(CP_THREAD_ACP, MB_COMPOSITE, s_unterordner, ... ); LPCTSTR unterordner; unterordner = s_unterordner.c_str(); if(connection_pointer->SetCurrentDirectory(unterordner))
erhalte ich
error C2440: '=' : cannot convert from 'const char *' to 'LPCTSTR'Dann benötige ich wohl const wchar_t*?
Aber MultiByteToWideChar wandelt doch in LPWSTR um? SétCurrentDirectory benötigt doch LPCTSTR? Oder meintest du dass ich mit MultiByteToWideChar erst in LPWSTR und dann mit c_str() in LPCTSTR umwandel?:confused:
-
Hallo,
ich möchte einen string in LPCTSTR konvertieren.Brauche es für den unten stehenden Code. SetCurrentDirectory will ja LPCTSTR. Gibt es da eine einfache Möglichkeit?
string unterordner; unterordner = s[1] + s[2] + s[3]; if(connection_pointer->SetCurrentDirectory(unterordner))
-
Hat Beziehung wäre wohl besser. Habe die Vererbung bei transfer_textfile jetzt rausgenommen.Ein "transfer_textfile" ist ein "Connect"?int _tmain(int argc, _TCHAR* argv[]) { int warte; Connect(); transfer_textfile(); delete_textfile(); cin >> warte; return 0; }
delete.cpp habe ich jetzt auch geändert:delete_textfile::delete_textfile(void) { CFtpConnection* connection_pointer; connection_pointer=Connect::getLastConnection(); //Objekt der Klasse read_serverlist wird erzeugt read_serverlist LeseListe; //Textdatei wird gelöscht BOOL bWorking = connection_pointer->Remove (LeseListe.source_txt); if (bWorking) { cout << "Datei ist gelöscht worden"; } else { cout << GetLastError(); DWORD dwInfo = 0; TCHAR puffer[250] = _T(""); DWORD dwSize = sizeof(puffer) / sizeof(TCHAR); if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) ) { cout << GetLastError(); cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich"; } //Fehlerbehandlung falls InternetGetLastResponseInfo nicht aufgerufen werden konnte else { wcout << puffer; cout << "Aufruf InternetGetLastResponseInfo erfolgreich"; } }
Das Problem: Wenn ich in delete_textfile den Konstruktor von Connect nicht ausführe bekomme ich die Meldung dass das File nicht gefunden wurde. Rufe ich aber erst delete_textfile(); und dann transfer_textfile(); aus funktioniert es. Ich bin noch nicht dahintergekommen wieso.
-
Ich habe in der Methode Connect eine Bildschirmausgabe mit eingebaut. Wenn ich nunWoraus schließt du das?transfer_textfile(); delete_textfile();
aufrufe erhalte ich zwei Bildschirmausgaben. Lag wohl daran dass transfer_textfile von Connect abgeleitet ist. delete_textfile.hclass delete_textfile { public: delete_textfile(void); public: ~delete_textfile(void); };
delete_textfile.cppdelete_textfile::delete_textfile(void) { Connect(); CFtpConnection* connection_pointer; connection_pointer=Connect::getLastConnection(); //Objekt der Klasse read_serverlist wird erzeugt read_serverlist LeseListe; //Textdatei wird gelöscht BOOL bWorking = connection_pointer->Remove (LeseListe.source_txt); if (bWorking) { cout << "Datei ist gelöscht worden"; } else { cout << GetLastError(); } }
in transfer_textfile.cpptransfer_textfile::transfer_textfile(void) { CFtpConnection* connection_pointer; read_serverlist LeseListe; connection_pointer=Connect::getLastConnection(); CFtpFileFind finder(connection_pointer); try { //Verzeichnis wird gewechselt if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu"))) { cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n"; //Datei wird gesucht BOOL bWorking = finder.FindFile(_T("bu.txt")); if(bWorking) { //Datei wird vom Server auf lokale Festplatte transferriert BOOL bGot = connection_pointer->GetFile(_T("bu.txt"),LeseListe.destination_txt,FALSE); if (bGot) { cout << "Transfer sollte erfolgt sein\n"; } else { cout << GetLastError() << "\n"; } } else { cout << "The File specified could not be found.!"<<GetLastError(); } } else { DWORD dwInfo = 0; TCHAR puffer[250] = _T(""); DWORD dwSize = sizeof(puffer) / sizeof(TCHAR); if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) ) { cout << GetLastError(); cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich"; else { wcout << puffer; cout << "Aufruf InternetGetLastResponseInfo erfolgreich"; } } } catch(CException* error) { TCHAR szCause[1024]; error->GetErrorMessage(szCause,1024); printf_s("ERROR! %S\n", szCause); error->Delete(); } }
transfer_textfile.hclass transfer_textfile : public Connect { public: transfer_textfile(void); public: ~transfer_textfile(void); };
Ich wollte in main.h eine Klasse Connect als Member erstellen, um dann darauf zugreifen zu können.Und was hat das alles mit main.h zu tun?
Objekt zerstören
in C++: Compiler, IDEs, APIs
Geschrieben
Aber dann muss ich das Programm ja komplett umstricken.