Zum Inhalt springen

wulfgang

Mitglieder
  • Gesamte Inhalte

    181
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von wulfgang

  1. Moin, also habe das mit InternetGetLastResponseInfo umgesetzt und erhalte Ich weiß nicht so genau was das nun heißt und wie das zu beheben ist. #include "StdAfx.h" #include "transfer_textfile.h" #include "windows.h" #include <iostream> #include "Connect.h" using namespace std; transfer_textfile::transfer_textfile(void) { Connect(); CFtpConnection* connection_pointer; connection_pointer=Connect::getLastConnection(); CFtpFileFind finder(connection_pointer); try { if(connection_pointer->SetCurrentDirectory(_T("Ordner\\ordner\\ordner"))) { cout<<"...mit Erfolg!\n"; BOOL bWorking = finder.FindFile(_T("file.txt")); if(bWorking) { BOOL bGot = connection_pointer->GetFile(_T("file.txt"),_T("C:\\Ordner\\TxtTransfer")); } else { //something wrong with the file.. inform the user cout << "The File specified could not be found.!"<<GetLastError(); } } else { cout<<"FEHLER : "<<GetLastError()<<endl; DWORD dwInfo; DWORD dwLength; char *pszResponse = NULL; InternetGetLastResponseInfo(&dwInfo, NULL, &dwLength); cout << GetLastError(); } } catch(CException* error) { TCHAR szCause[1024]; error->GetErrorMessage(szCause,1024); printf_s("ERROR! %S\n", szCause); error->Delete(); } }
  2. session hatte ich vorher nur im Konstruktor. Habe es nun geändert. Ist das so richtig? CFtpConnection* Connect::connection_pointer=NULL; CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY , (_T( "proxy.org")), NULL, 0); Connect::Connect(void) { //Zeiger auf CFtpConnection CFtpConnection *connection; //Deklarationen für GetFtpConnection Member-Funktion LPCTSTR pstrServer = _T("proxy.org"); LPCTSTR login = _T("user"); LPCTSTR passwd = _T("password"); INTERNET_PORT port = 21; BOOL bPassive = TRUE; cout << "Verbinde mit " << "proxy.org" << " ...\n"; try { //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, //connection wird auf zurückgegeben Zeiger gesetzt if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; connection_pointer=connection; } } //Fehleroutine catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete(); } cout << "Test Konstruktor von Connect erfolgreich\n"; } Connect::~Connect(void) { } CFtpConnection * Connect::getLastConnection() { return connection_pointer; } Jetzt erhalte ich allerdings Fehler 18-There are no more files. Die Textdatei, die ich haben will ist aber da. Wenn ich das Programm dann schließen möchte erhalte ich
  3. Also 1768 ist laut Visual Studio wirklich 1768. Ich habe auch noch versucht den übergebenen Zeiger connection_pointer in einer anderen Funktion zu verwenden, hat aber auch nicht geklappt. Ist also wahrscheinlich, dass der fehler dort liegt. Hier zur Kontrolle: In meiner Connect.h: #pragma once #include <afx.h> #include <afxwin.h> #include <afxinet.h> #include <stdio.h> class Connect { public: Connect(void); static CFtpConnection * Connect::getLastConnection(); static CFtpConnection *connection_pointer; public: ~Connect(void); }; Connect.cpp: CFtpConnection* Connect::connection_pointer=NULL; Connect::Connect(void) { .... try { //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, //connection wird auf zurückgegeben Zeiger gesetzt if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; connection_pointer=connection; } } //Fehleroutine catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete(); } cout << "Test Konstruktor von Connect erfolgreich\n"; } Connect::~Connect(void) { } CFtpConnection * Connect::getLastConnection() { return connection_pointer; }
  4. void CFtpConnection::AssertValid() const { ASSERT(m_pSession != NULL); if (m_hConnection != NULL) //Zeile 1768 { ASSERT(AfxGetInternetHandleType(m_hConnection) == INTERNET_HANDLE_TYPE_CONNECT_FTP); } }
  5. verdammt ertappt:upps habe ich heute morgen tatsächlich übersehen. Die fehler sind aber trotzdem noch da. In der Umgebung von 1768 steht: void CFtpConnection::AssertValid() const { ASSERT(m_pSession != NULL); if (m_hConnection != NULL) { ASSERT(AfxGetInternetHandleType(m_hConnection) == INTERNET_HANDLE_TYPE_CONNECT_FTP); } }
  6. Hallo, keine Angst im Code stehen keine einzelnen Backslashes. Meine vollständige Fehlermeldung während der Programmausführung lautet hier:
  7. Morgen, ich möchte mit GetFile eine Textdatei von einem FTP-Server lokal abspeichern. Leider funktioniert das noch nicht so ganz. Ich erhalte 4 Warnungen Die Warnungen beziehen sich auf die zeilen mit FindFile und Getfile. Können die mein Problem auslösen? Ist das wieder mit Unicode und ANSI? Wie kann ich diese beseitigen? GetLastError sagt Fehler Nummer 6.The handle is invalid. Während der Ausführung des Programms erhalte ich dann: #include "StdAfx.h" #include "transfer_textfile.h" #include "windows.h" #include <iostream> #include "Connect.h" using namespace std; transfer_textfile::transfer_textfile(void) { Connect(); CFtpConnection* connection_pointer; connection_pointer=Connect::getLastConnection(); CFtpFileFind finder(connection_pointer); try { BOOL bWorking = finder.FindFile(_T("server/ordner/ordner/bu.txt")); //Hier Warnungen vom Compiler if(bWorking) { BOOL bGot = connection_pointer->GetFile(_T("ordner/ordner/ordner/bu.txt"),_T("C:/ordner/TxtTransfer")); //Hier Warnungen vom Compiler } else { //something wrong with the file.. inform the user cout << "The File specified could not be found.!"<<GetLastError(); } } catch(CException* error) { TCHAR szCause[1024]; error->GetErrorMessage(szCause,1024); //sCause.Format("%s",szCause); } }
  8. Also laut MSDN hat InternetGetLastResponseInfo ja drei Parameter, die alle Zeiger sind, richtig? Nur ist mir noch nicht ganz klat, welcher Parameter wofür. Bei mir funktioniert der Aufruf auch nur bei: DWORD *lpdwError; LPTSTR lpszBuffer; DWORD *lpdwBufferLength; InternetGetLastResponseInfo(lpdwError, lpszBuffer, lpdwBufferLength); Ist aber ja irgendwie noch falsch. Der zweite Parameter müsste auch ein Zeiger sein,oder? Wenn die Parameter Zeiger sind, wie komme ich denn dann an die ErrorMessage?
  9. Also der Compiler gibt mir keine Warnung aus. Wieso sollte er denn? Habe es auch probiert mit: if(connection->SetCurrentDirectory(_T("ordner/ordner/ordner")) ) if(connection->SetCurrentDirectory(_T("ordner\\ordner\\ordner")) )[/ Hat aber keinen Unterschied gemacht.
  10. Hallo, ich möchte mit SetCurrentDirectory in einen anderen Ordner gelangen. Erhalte aber durch GetLastError noch den Fehler 12003. Bei der Funktion InternetGetLastResponseInfo habe ich noch nicht rausgefunden, wie die genau funktioniert. Kann mir jemand ein Beispiel geben oder sieht jemand so meinen Fehler? { if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; //connection_pointer=connection; } } //Fehleroutine catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete(); } if(connection->SetCurrentDirectory(_T("ordner\ordner\ordner"))) { cout<<"...mit Erfolg!\n"; } else { cout << "...ohne Erfolg\nVerbindung wird geschlossen!\n"; cout<<"FEHLER : "<<GetLastError()<<endl; connection->Close(); } }
  11. Jo danke, die Zeigerübergabe funktioniert glaube ich.
  12. Hallo, ich bekomme von GetFtpConnection einen Zeiger auf CFtpConnection. CFtpConnection *connection; connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive Diese Funktion ist in einer Klasse implementiert. Ich möchte, dass zurückgegebene Zeiger auch für andere Funktionen außerhalb der Klasse verfügbar ist.Nun hatte ich gehofft dies ginge über eine statische Funktion/Member-Variable. Allerdings erhalte ich noch und In Connect.cpp: Connect::Connect(void) {...... if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; connection_pointer=connection; } CFtpConnection Connect::*connection_pointer=0; ....} CFtpConnection Connect::*connection_pointer=0; CFtpConnection * Connect::getLastConnection() { return connection_pointer; } ..... In Connect.h class Connect { public: Connect(void); static CFtpConnection * Connect::getLastConnection(); static CFtpConnection *connection_pointer; public: ~Connect(void); };
  13. Ja das funktioniert. Bloß wchar_t password[] = L"Value"; ist ja ein default-Wert. Wenn nun ein Programm-User einen Wert in der ini-Datei ändert, kann er ja nicht immer den Default im Programm ändern. Gibt es da noch eine einfache Möglichkeit mehr Speicher zu reservieren? Oder muss ich mir ganz lange Defaults ausdenken?::helau:
  14. Ja, das war es!! Noch eine Frage: Ich möchte mehrere Eigenschaften einlesen. Bei folgendem Code erhalte ich Bei der Ausgabe des Passwortes nur passw statt password. Der Rückgabewert der zweiten Funktion ist 5. Wenn ich selber die Anzahl der einzulesenden Zeichen erhöhe kommt die Meldung die Meldung Muss ich den Speicher vorher leeeren? Oder was soll das? nt laenge; GetPrivateProfileString(szSectionName, szKeyName_s, servername, nameserver, (sizeof(nameserver))/(sizeof(wchar_t)), szFilename); cout << GetLastError()<<"\n"; wcout << nameserver << " "; //User wird aus INI-Datei gelesen //Passwort wird aus INI-Datei gelesen wchar_t szKeyName_p[] = L"password"; wchar_t password[] = L"Value"; laenge=GetPrivateProfileString(szSectionName, szKeyName_p, servername, password, (sizeof(password))/(sizeof(wchar_t)), //bei z.B 8 obiger Fehler szFilename); wcout << password ; cout << laenge << "\n";
  15. Jo habe ich jetzt implementiert. Also meine ini ist in dem Ordner, wo meine Sourcedateien sind, wo meine Exe ist und außerdem im übergeordneten Ordner. Gibt es sonst noch eine Fehlerquelle? So schreiben kann ich in die Datei auch: ofstream file("test.txt"); file<<a;
  16. Moin, Habe als Rückgabewert 5. Ist ja genau die Länge des Defaults Wertes. Die Funktion findet laut Microsoft-Dokumentation die Eigenschaft server meiner Ini-Datei nicht und setzt deshalb den default-Wert. Wieso? Habe nachgelesen was Unicode/AMSI ist. Mir bleibt wohl hier nichts anderes übrig als mit Unicode. Im Internet findet man meistens aber Beispiele mit ANSI:( Mein Code etwas überarbeitet: wchar_t szSectionName[] = L"onlino"; wchar_t szKeyName_s[] = L"server"; wchar_t servername[] = L"Value"; wchar_t szFilename[] = L"serverlist.ini"; //muss noch variabel gestaltet werden BOOL bRet; wchar_t szMyValue[256]; //Servername wird aus INI-Datei gelesen int laenge; laenge=GetPrivateProfileString(szSectionName, szKeyName_s, servername, szMyValue, sizeof(szMyValue), szFilename); cout << GetLastError()<<"\n"; wcout << szMyValue << " " << laenge;
  17. Also ich bin noch ein Stück weiter gekommen. Der Compiler meckert nicht mehr. Ich bekomme als Ausgabe leider noch gar nichts. Die INI-Datei befindet sich im gleichen Ordner wie die Sourcedateien. Liegt der Fehler bei meinen wchar_t szKeyName[] = L"server"; ? #include "StdAfx.h" #include "read_serverlist.h" #include <windows.h> #include <fstream> #include <wchar.h> #include <wctype.h> #include <iostream> using namespace std; read_serverlist::read_serverlist(void) { wchar_t szSectionName[] = L"onlino"; wchar_t szKeyName[] = L"server"; wchar_t szDefaultValue[] = L"Value"; wchar_t szFilename[] = L"serverlist.ini"; BOOL bRet; wchar_t szValue[128]; GetPrivateProfileString(szSectionName, szKeyName, NULL, szDefaultValue, sizeof(szDefaultValue), szFilename); wcout << szDefaultValue; } Auszug aus meiner INI [onlino] server=onlino login_user=user password=password
  18. Kann ich das im Nachherein noch ändern? Mit Projekteinstellungen ist doch die Unicode-Geschichte gemeint? Wo kann ich denn darüber was Erfahren? Wikipedia habe ich schon bemüht.
  19. Okay, dann verwende ich Haederdateien. Noch eine andere Frage. Ich verwende GetPrivateProfileString und bekomme schon wieder Probleme mit Datentypen. Das merkwürdige ist, ich habe meinen Code von einem anderen Beitrag hier im Forum http://forum.fachinformatiker.de/c-compiler-ides-apis/72953-ini-datei-erzeugen-schreiben-lesen.html übernommen und er funktioniert nicht. Warum? #include "StdAfx.h" #include "read_serverlist.h" #include <windows.h> #include <fstream> read_serverlist::read_serverlist(void) { char szSectionName[] = "SectionName"; char szKeyName[] = "KeyName"; char szDefaultValue[] = "Value"; char szFilename[] = "serverlist.ini"); BOOL bRet; char szMyValue[128]; GetPrivateProfileString(szSectionName, szKeyName, NULL, szMyValue, sizeof(szMyValue), szFilename); }
  20. Moin, ja ich weiß der Funktionsaufruf ohne void einfach nur test; Ja normalerweise über Headerdateien. Aber dann habe ich ja noch mehr Dateien- dachte wegen Übersicht Gibt es keine Möglichkleit cpp direkt einzubinden?
  21. Hallo, ich wollte ein größeres Projekt schreiben. Dazu wollte ich einzelne Funktionen auf einzelne Dateien auslagern. Ich benutze Visual Studio 2005. In meiner main cpp Datei steht: // automatic_transfer.cpp : Defines the entry point for the console application. // #include <functionconnect.cpp> #include "stdafx.h" #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { cout << "Hallo \n"; void functionconnect(void); int warte; cin >> warte; return 0; } Dann habe ich im selben Ordner eine cpp Datei: #include "stdafx.h" #include "stdafx.h" #include <iostream> using namespace std; void connect(void) { int warte; cout << "Test okay"; cin >> warte; } Warum wird meine Funktion in main nicht ausgeführt. Ist doch mit #include <functionconnect.cpp> implementiert????
  22. Moin, also meine Verbindung über den Proxy steht.Ich habe etwas in eine falsche Richtung gedacht. Ich muss nämlich nur den Proxy anwählen und werde dann automatisch weitergeleitet. (Sitze in einer größeren Organisation) Trotzdem vielen Dank für die Hilfe, hat mir ja ein paar Kenntnisse über Netwerke... gebracht.:bimei Falls es jemanden noch interessiert der Code: #include "stdafx.h" #include <iostream> ///////////////////////////////////////////////////////// //Block zum Aufbauen der Verbindung ///////////////////////////////////////////////////////// //Bibliotheken für FTP-Session #include <afx.h> #include <afxwin.h> #include <afxinet.h> #include <stdio.h> int warte; using namespace std; int _tmain(int argc, _TCHAR* argv[]) { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { return -1; } CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,(_T( "NamevomProxy")), NULL, 0); /Zeiger auf CFtpConnection CFtpConnection *connection; //Deklarationen für GetFtpConnection Member-Funktion LPCTSTR pstrServer = _T("NamevomProxy"); LPCTSTR login = _T("BenutzernameMitZiel"); LPCTSTR passwd = _T("password"); INTERNET_PORT port = 21; BOOL bPassive = TRUE; cout << "Verbinde mit " << servername << " ...\n"; try { //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, connection wird auf zurückgegeben Zeiger gesetzt if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut"; } } //Fehlerroutine catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete(); } return 0; }
  23. Wegen dem Namensserver: bei meinem Beispiel unten wäre dann doch servername1 mit 123.12.12.123 mein Namensserver? War damit dann nslookup servername1 als eingabe gemeint? Oder bezog Ausnahmeliste auf die Firewall?
  24. Also, ich gebe beim Eingabefenster ja nicht explizit an, dass ich über den Proxy gehen will. Aber da ein Proxy zwischengeschaltet ist, kann ich ja auch nur über den Proxy rausgehen. Ich habe die Frage nicht so richtig verstanden. Wieso sprichst du von zwei Namensservern? Ich habe doch nur den Namen von meinem eigenen Server, den Namen vom Proxy und den Server den ich erreichen möchte.

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