Sieht jemand einen Fehler?



  • Vielleicht sieht jemand einen Fehler. Hab die funktionen zum Dateiumbennen aus einem anderen Prog geklaut und jetzt stimmen glaub irgendwie die "zusammenhänge" nicht?
    Beim depuggen kommt bei fast jeder variablen "Ausdruck kann nicht ausgewertet werden!!!
    Wäre um jeden Rat dankbar!

    void CGateway::OnUpload()
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	UpdateData();	
    	int n_anzahl = m_list_lokal.GetSelCount();
    	int n_suche;
    	CString str_Dateiname[100],
    		str_Pfad,
    		str_Dateiname_lokal,
    		str_Dateiname_lokal_senden,
    		str_Dateiname_lokal_fertig, 
    		str_Dateiname_lokal_Error, 
    		str_Dateiname_temp,
    		str_Dateiname_FTP_senden,
    		str_Dateiname_FTP_fertig,
    		str_Dateiname_FTP_Error,
    		str_Datei_Umbenennen[100],
    		str_Datei_Abbruch[100],
    		str_Datei_Transferiert[100];
    
    	CBefehle Suche;
    	CArray<int,int> aryListBoxSel; 
    	aryListBoxSel.SetSize(n_anzahl);
    	m_Bearbeiten.pConnection->SetCurrentDirectory(str_Pfad);
    
    	if ((n_anzahl>0)&&(n_anzahl<=100))
    	{
    		m_list_lokal.GetSelItems(n_anzahl, aryListBoxSel.GetData());
    
    		for(int i = 0; i < aryListBoxSel.GetSize(); i++) 
    		{
    			CString str_Speicher;
    		    //holt sich an der gegebenen Stelle den String und schriebt ihn in str 
    		    m_list_lokal.GetText(aryListBoxSel.GetAt(i), str_Speicher);
    			int lenght = str_Speicher.Find(" ");
    			str_Dateiname[i] = str_Speicher.Left(lenght);
    		}
    		for(i = 0; i < aryListBoxSel.GetSize(); i++) 
    		{ 
    			str_Dateiname_lokal = str_Dateiname_lokal + str_Dateiname[i];
    			n_suche = str_Dateiname[i].ReverseFind('.');
    			str_Dateiname_temp = str_Dateiname[i].Left(n_suche);
    
    			// Wird gerade gesendet
    			str_Dateiname_FTP_senden = str_Dateiname_temp + ".RRT";
    			str_Dateiname_lokal_senden = str_Dateiname_lokal + str_Dateiname_temp + ".RST";
    
    			// Ist erfolgreich gesendet. 
    			str_Dateiname_FTP_fertig = str_Dateiname_temp + ".RRC";
    			str_Dateiname_lokal_fertig = str_Dateiname_lokal + str_Dateiname_temp + ".RSC";
    
    			// Ist nicht erfolgreich gesendet. 
    			str_Dateiname_FTP_Error = str_Dateiname_temp + ".RRE";
    			str_Dateiname_lokal_Error = str_Dateiname_lokal + str_Dateiname_temp + ".RSE";
    
    			// Umbenennen lokal, dass die Datei transferiert wird.
    			rename(str_Dateiname_lokal, str_Dateiname_lokal_senden);
    
    			CWaitCursor wait;
    			if(m_Bearbeiten.pConnection->PutFile(str_Dateiname_lokal_senden, str_Dateiname_FTP_senden,
    				FTP_TRANSFER_TYPE_BINARY))
    			{
    				//MessageBox("Transfer wurde erfolgreich beendet",NULL,MB_OK);
    				str_Datei_Transferiert[i] = str_Dateiname[i];
    				rename(str_Dateiname_lokal_senden, str_Dateiname_lokal_fertig);
    				if (m_Bearbeiten.pConnection->Rename(str_Dateiname_FTP_senden,str_Dateiname_FTP_fertig))
    				{
    					//MessageBox("Umbennenen erfolgreich.",NULL,MB_OK);
    				}
    				else 
    				{
    					DWORD dw_error=GetLastError();
    					CString str_message;
    					CString str_Fehler;
    					str_message.Format("%d",dw_error);  
    //					str_Fehler = Suche.ErrorMeldung(str_message);
    					//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    					str_Datei_Umbenennen[i] = str_Dateiname_lokal_Error;
    				}
    			}
    			else
    			{
    				DWORD dw_error=GetLastError();
    				CString str_message;
    				CString str_Fehler;
    				str_message.Format("%d",dw_error);  
    //				str_Fehler = Suche.ErrorMeldung(str_message);
    				//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    				str_Datei_Abbruch[i] = str_Dateiname_lokal_Error;
    				rename(str_Dateiname_lokal_senden, str_Dateiname_lokal_Error);
    				if (m_Bearbeiten.pConnection->Rename(str_Dateiname_FTP_senden,str_Dateiname_FTP_Error))
    				{
    					//MessageBox("Umbennenen erfolgreich.",NULL,MB_OK);
    				}
    				else 
    				{
    					DWORD dw_error=GetLastError();
    					CString str_message;
    					CString str_Fehler;
    					str_message.Format("%d",dw_error);  
    //					str_Fehler = Suche.ErrorMeldung(str_message);
    					//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    					str_Datei_Umbenennen[i] = str_Dateiname_lokal_Error;
    				}
    			} 
    		}
    		CString str_ErrorText,
    				str_UmbenenenText,
    				str_OKText,
    				str_pfad;
    		// Ausgabe aller Dateien mit fehler und vollständig transferierte 
    		for (i = 0; i < aryListBoxSel.GetSize(); i++)
    		{
    			if (str_Datei_Transferiert[i] != "")
    			{
    				str_OKText = str_OKText + "Die Datei " + str_Datei_Transferiert[i];
    				str_OKText = str_OKText + " wurde erfolgreich transferiert.\n";
    			}
    			if (str_Datei_Umbenennen[i] != "")
    			{
    				str_UmbenenenText = "Fehler beim Umbenennen der Datei" + str_Datei_Umbenennen[i] + "\n";
    			}
    			if (str_Datei_Abbruch[i] != "")
    			{
    				str_ErrorText = "Fehler beim Transfer der Datei" + str_Datei_Abbruch[i] + "\n";
    			}
    		}
    		if (str_OKText != "")
    		{
    			MessageBox(str_OKText ,NULL,MB_OK);
    		}
    		if (str_UmbenenenText != "")
    		{
    			MessageBox(str_UmbenenenText,"Fehler",MB_ICONWARNING);
    		}
    		if (str_ErrorText != "")
    		{
    			MessageBox(str_ErrorText,"Fehler",MB_ICONWARNING);
    		}
    	}
    
    	else if (n_anzahl==0)
    	{
    		MessageBox("Bitte wählen Sie eine Datei aus!",NULL,MB_OK);
    	}
    	else if (n_anzahl>100)
    	{
    		MessageBox("Sie haben zuviele Dateien ausgewählt",NULL,MB_OK);
    	}
    	CString str_pfad;
    	m_Bearbeiten.pConnection->SetCurrentDirectory(str_pfad);
    
    }
    

    -----------------------------------------------------------------------------------

    Und so sa der original kopierte code aus

    void CRSCDlg::OnzumGW() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	UpdateData();	
    	int n_anzahl = m_Dateiliste_Inhouse.GetSelCount();
    	int n_suche;
    	CString str_Dateiname[100], 
    		str_Dateiname_lokal,
    		str_Dateiname_lokal_senden,
    		str_Dateiname_lokal_fertig, 
    		str_Dateiname_lokal_Error, 
    		str_Dateiname_temp,
    		str_Dateiname_FTP_senden,
    		str_Dateiname_FTP_fertig,
    		str_Dateiname_FTP_Error,
    		str_Datei_Umbenennen[100],
    		str_Datei_Abbruch[100],
    		str_Datei_Transferiert[100];
    
    	CBefehle Suche;
    	CArray<int,int> aryListBoxSel; 
    	aryListBoxSel.SetSize(n_anzahl);
    	m_pConnection->SetCurrentDirectory(m_str_Pfad_GW_in);
    
    	if ((n_anzahl>0)&&(n_anzahl<=100))
    	{
    		m_Dateiliste_Inhouse.GetSelItems(n_anzahl, aryListBoxSel.GetData());
    
    		for(int i = 0; i < aryListBoxSel.GetSize(); i++) 
    		{
    			CString str_Speicher;
    		    //holt sich an der gegebenen Stelle den String und schriebt ihn in str 
    		    m_Dateiliste_Inhouse.GetText(aryListBoxSel.GetAt(i), str_Speicher);
    			int lenght = str_Speicher.Find(" ");
    			str_Dateiname[i] = str_Speicher.Left(lenght);
    		}
    		for(i = 0; i < aryListBoxSel.GetSize(); i++) 
    		{ 
    			str_Dateiname_lokal = m_str_Pfad_lokal_in + str_Dateiname[i];
    			n_suche = str_Dateiname[i].ReverseFind('.');
    			str_Dateiname_temp = str_Dateiname[i].Left(n_suche);
    
    			// Wird gerade gesendet
    			str_Dateiname_FTP_senden = str_Dateiname_temp + ".RRT";
    			str_Dateiname_lokal_senden = m_str_Pfad_lokal_in + str_Dateiname_temp + ".RST";
    
    			// Ist erfolgreich gesendet. 
    			str_Dateiname_FTP_fertig = str_Dateiname_temp + ".RRC";
    			str_Dateiname_lokal_fertig = m_str_Pfad_lokal_in + str_Dateiname_temp + ".RSC";
    
    			// Ist nicht erfolgreich gesendet. 
    			str_Dateiname_FTP_Error = str_Dateiname_temp + ".RRE";
    			str_Dateiname_lokal_Error = m_str_Pfad_lokal_in + str_Dateiname_temp + ".RSE";
    
    			// Umbenennen lokal, dass die Datei transferiert wird.
    			rename(str_Dateiname_lokal, str_Dateiname_lokal_senden);
    
    			CWaitCursor wait;
    			if(m_pConnection->PutFile(str_Dateiname_lokal_senden, str_Dateiname_FTP_senden,
    				FTP_TRANSFER_TYPE_BINARY))
    			{
    				//MessageBox("Transfer wurde erfolgreich beendet",NULL,MB_OK);
    				str_Datei_Transferiert[i] = str_Dateiname[i];
    				rename(str_Dateiname_lokal_senden, str_Dateiname_lokal_fertig);
    				if (m_pConnection->Rename(str_Dateiname_FTP_senden,str_Dateiname_FTP_fertig))
    				{
    					//MessageBox("Umbennenen erfolgreich.",NULL,MB_OK);
    				}
    				else 
    				{
    					DWORD dw_error=GetLastError();
    					CString str_message;
    					CString str_Fehler;
    					str_message.Format("%d",dw_error);  
    					str_Fehler = Suche.ErrorMeldung(str_message);
    					//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    					str_Datei_Umbenennen[i] = str_Dateiname_lokal_Error;
    				}
    			}
    			else
    			{
    				DWORD dw_error=GetLastError();
    				CString str_message;
    				CString str_Fehler;
    				str_message.Format("%d",dw_error);  
    				str_Fehler = Suche.ErrorMeldung(str_message);
    				//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    				str_Datei_Abbruch[i] = str_Dateiname_lokal_Error;
    				rename(str_Dateiname_lokal_senden, str_Dateiname_lokal_Error);
    				if (m_pConnection->Rename(str_Dateiname_FTP_senden,str_Dateiname_FTP_Error))
    				{
    					//MessageBox("Umbennenen erfolgreich.",NULL,MB_OK);
    				}
    				else 
    				{
    					DWORD dw_error=GetLastError();
    					CString str_message;
    					CString str_Fehler;
    					str_message.Format("%d",dw_error);  
    					str_Fehler = Suche.ErrorMeldung(str_message);
    					//MessageBox(str_Fehler,"Fehler",MB_ICONWARNING);
    					str_Datei_Umbenennen[i] = str_Dateiname_lokal_Error;
    				}
    			} 
    		}
    		CString str_ErrorText,
    				str_UmbenenenText,
    				str_OKText;
    		// Ausgabe aller Dateien mit fehler und vollständig transferierte 
    		for (i = 0; i < aryListBoxSel.GetSize(); i++)
    		{
    			if (str_Datei_Transferiert[i] != "")
    			{
    				str_OKText = str_OKText + "Die Datei " + str_Datei_Transferiert[i];
    				str_OKText = str_OKText + " wurde erfolgreich transferiert.\n";
    			}
    			if (str_Datei_Umbenennen[i] != "")
    			{
    				str_UmbenenenText = "Fehler beim Umbenennen der Datei" + str_Datei_Umbenennen[i] + "\n";
    			}
    			if (str_Datei_Abbruch[i] != "")
    			{
    				str_ErrorText = "Fehler beim Transfer der Datei" + str_Datei_Abbruch[i] + "\n";
    			}
    		}
    		if (str_OKText != "")
    		{
    			MessageBox(str_OKText ,NULL,MB_OK);
    		}
    		if (str_UmbenenenText != "")
    		{
    			MessageBox(str_UmbenenenText,"Fehler",MB_ICONWARNING);
    		}
    		if (str_ErrorText != "")
    		{
    			MessageBox(str_ErrorText,"Fehler",MB_ICONWARNING);
    		}
    	}
    
    	else if (n_anzahl==0)
    	{
    		MessageBox("Bitte wählen Sie eine Datei aus!",NULL,MB_OK);
    	}
    	else if (n_anzahl>100)
    	{
    		MessageBox("Sie haben zuviele Dateien ausgewählt",NULL,MB_OK);
    	}
    	m_pConnection->SetCurrentDirectory(m_str_Pfad_GW_home);
    	OnAktualisieren();
    }
    

    😞



  • beim groben überfliegen ist mir aufgefallen das du

    CBefehle Suche;
    

    nicht ausgeklammerst hast, jedoch jegliche Methoden die von dieser Klasse genutzt werden ausgeklammert hast. Normalerweise sollte dein compiler dies auch schon anprangern wenn du diese Klasse "CBefehle" nicht eingebunden hast!

    Ansonsten wäre es sicherlich hilfreicher wenn du uns mal genaue Fehlermeldungen zu kommen läst welche der variabeln nicht ausgewerten werden können.

    sven



  • also fehler kommt bei m_str_message, m_str_Fehler, int_Transfer, CInternetConnection, m_str_Servername, m_list_lokal, n_anzahl = 1 dann drei mal die Fehlermeldung
    str_Datei_Abruch 0x0012ea20 dann auch drei mal der fehler "Fehler: Anzeigen des Werts nicht möglich"

    Falls es was hilft hier ist der Code so wie ich ihn vorher hatte...
    Und zwar ist es ein programm welchen mir in einer listbox datein anzeigt die bei mir lokat gespeichert sind. Der pfad wo sich die dateien befinden werden aus einer txt ausgelesen. Die einzelnen Datein werden durcj drücken auf nen butten auf einen server geuppt. Jetzt müssen die deiten vorm transfer halt umbenannt werden und so..wie im code oben geschrieben!

    void CBefehle::Upload(int Serverauswahl, CString str_Dateiname)
    {
    
    	int_Transfer = 1;
    	CString str_Zielrechner;
    	CBefehle Suche;	
    
    	CString str_Dateiname_lokal;
    
    	switch (Serverauswahl)
    
    	{
    	case 0:	// IDC_Alcatel
    		{
    			str_Dateiname_lokal = IBM_Datei_durchsuchen("Ausgabe_Pfad") + str_Dateiname;
    		//	str_Dateiname_lokal = str_Dateiname_lokal + str_Dateiname;
    
    			CWaitCursor wait;
    			pConnection->SetCurrentDirectory("test");
    
    			if(pConnection->PutFile(str_Dateiname_lokal,str_Dateiname,FTP_TRANSFER_TYPE_BINARY))
    			{
    				m_str_message = "Transfer der Datei "+str_Dateiname+ " wurde erfolgreich beendet";
    				int_Transfer = 1;
    			}
    			else
    			{
    				DWORD dw_error=GetLastError();
    				m_str_message.Format("%d",dw_error);  
    				m_str_Fehler = Suche.ErrorMeldung(m_str_message, str_Dateiname);
    				int_Transfer = 0;
    			}
    			pConnection->SetCurrentDirectory("..");
    			break;
    		}
    	case 1:	// IDC_DTAG
    		{
    			str_Dateiname_lokal = IBM_Datei_durchsuchen("Ausgabe_Pfad");
    			str_Dateiname_lokal = str_Dateiname_lokal + str_Dateiname;
    			CString str_test;
    			pConnection->GetCurrentDirectory(str_test);
    
    			CWaitCursor wait;
    			if(pConnection->PutFile(str_Dateiname_lokal,str_Dateiname,FTP_TRANSFER_TYPE_BINARY))
    			{
    				m_str_message = "Transfer der Datei "+str_Dateiname+ " wurde erfolgreich beendet";
    				int_Transfer = 1;
    			}
    			else
    			{
    				DWORD dw_error=GetLastError();
    				m_str_message.Format("%d",dw_error);  
    				m_str_Fehler = Suche.ErrorMeldung(m_str_message, str_Dateiname);
    				int_Transfer = 0;
    			}
    			pConnection->SetCurrentDirectory("..");
    		}
    		break;
    	}	
    }
    


  • hallo

    er wollte die konkrete fehlermeldung.
    sprich:

    sinn macht es nur, wenn du sie einfach (in codetags !!) hier mit reinpostest, und dann die entsprechende zeile markierst, wo der fehler auftritt.

    meist kommt man dann übrigens selber auf das problem 🙂



  • Ich habe keine fehlermeldungen und keine Warnungen!!! Nur des beim debuggen das Prog läuft ja



  • Solche Meldungen bringt der Debugger meistens, wenn entsprechende Instanz nicht im überwachten Scope liegt oder noch nicht initialisiert wurde. Darüber brauchst du dir keine Sorgen zu machen.



  • Vielleicht sieht jemand einen Fehler. Hab die funktionen zum Dateiumbennen aus einem anderen Prog geklaut und jetzt stimmen glaub irgendwie die "zusammenhänge" nicht?
    Beim depuggen kommt bei fast jeder variablen "Ausdruck kann nicht ausgewertet werden!!!
    Wäre um jeden Rat dankbar!

    Schön das du erwähnt hast, dass es sich nicht um Fehler beim kompilieren, sondern beim debuggen handelt. 🤡

    Also es ist doch schon mit sicherheit hilfreich das du uns mitteilst das dies nur beim debuggen autritt und dein Prog ja eigendlich geht!

    Gut das "m_str_message" evtl. einen nicht anzeigbaren Wert enthält, kann ich dir nicht genau sagen, weil ich nicht weiß an welches Punkt du mit deinem Debugger stehst.
    Am Anfang der Methode könnte es daran liegen das "m_str_message" zwar angelegt wurde aber noch nicht initialisiert wurde. Sprich diese Variabel keinen Wert hat den es darstellen kann.

    Spätestens an diesem Punkt

    m_str_message = "Transfer der Datei "+str_Dateiname+ " wurde erfolgreich beendet
    

    solltest du aber in "m_str_message" was drinne stehen haben!

    versuch doch erstmal den debugger richtig anzuwenden und prüfe wann und wo die variabeln angelegt und initialisiert werden (oder übergeben werden). Denn offensichtlich funktioniert dein Prog ja.

    Ach ja und bitte nächtes mal konkrete Angaben zu deinem Problem.
    Ein informativerer Titel deines Thread hätte schon Abhilfe schaffen können!

    Sven


Anmelden zum Antworten