Zum Inhalt springen

wulfgang

Mitglieder
  • Gesamte Inhalte

    181
  • Benutzer seit

  • Letzter Besuch

Beiträge von wulfgang

  1. Okay habe jetzt 1 zu 1 aus dem Fenster von vom Stack rauskopiert:

    > msvcr80d.dll!_NMSG_WRITE(int rterrnum=25) Line 198 C

    msvcr80d.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?

  2. 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.

  3. 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).

  4. 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 :(

  5. Klappt schon fast. Es kommen noch 2 Fehler.

    'transfer_data::dateinamen_xar' : illegal storage class

    error 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);
    
    };

  6. 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.

  7. Die Schleife geht vermutlich noch weiter, diese beiden Zeilen allein ergeben keinen sinnvollen Schleifenrumpf, weil sich der Wahrheitswert der Abbruchbedingung möglicherweise niemals ändert.
    Richtig, die Anweisung
    hoechstes_blatt++

    fehlte noch.

    zeichnungsnummern_xar ist vermutlich ein Array oder Vector von Strings.
    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.
  8. Ist das die erste Fehlermeldung?

    Hast du <sstream> eingebunden?

    Ist die erste Fehlermeldung und ich habe 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;

  9. Guten Morgen, ich versuche verzweifelt einen string in einen integer umzuwandeln. Erhalte als Fehlermeldung aber immer

    error C2065: 'converter' : undeclared identifier

    istringstream converter((zeichnungsnummern_xar[2].substr(11,2)));converter >> hoechstes_blatt;

    Wieso? converter ist doch deklariert.

  10. 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?

  11. 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 wie
    string arrayname[]

    . am Besten?

    Aber kann ich dann noch sort verwenden oder muss ich selber eine Sortierfunktion schreiben. Gibt es bessere Loesungen?

  12. 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;

  13. 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:

  14. Ein "transfer_textfile" ist ein "Connect"?
    Hat Beziehung wäre wohl besser. Habe die Vererbung bei transfer_textfile jetzt rausgenommen.

    
    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.

  15. Woraus schließt du das?
    Ich habe in der Methode Connect eine Bildschirmausgabe mit eingebaut. Wenn ich nun
    transfer_textfile(); delete_textfile();
    aufrufe erhalte ich zwei Bildschirmausgaben. Lag wohl daran dass transfer_textfile von Connect abgeleitet ist. delete_textfile.h
    class delete_textfile
    
    {
    
    public:
    
    	delete_textfile(void);
    
    public:
    
    	~delete_textfile(void);
    
    };
    delete_textfile.cpp
    delete_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.cpp
    transfer_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.h
    class transfer_textfile : public Connect
    
    {
    
    public:
    
    	transfer_textfile(void);
    
    
    public:
    
    	~transfer_textfile(void);
    
    };
    
    

    Und was hat das alles mit main.h zu tun?
    Ich wollte in main.h eine Klasse Connect als Member erstellen, um dann darauf zugreifen zu können.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...