FTP: HINTERNET als Variable?
-
Kann mir jemand sagen, warum ich die Variable HINTERNET nicht
als Klassenvariable hinterlegen kann?Ich erhalte dann immer den Verweis auf meiner Headerdatei:
Syntaxfehler: Fehlendes ';' vor Bezeichner 'session'
in der FTPDlg.h:
public: afx_msg void OnBnClickedButton1(); CListBox m_box; afx_msg void OnBnClickedButton2(); afx_msg void OnLbnDblclkList1(); void firstFTPRoot(void); void askFTP(CString folder); HINTERNET session; //<<--Fehler??HINTERNET session, ftp, hFtpFind; WIN32_FIND_DATA FindData; ftp = NULL; session = InternetOpen("FTP-Session", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); //usw. usw.Hintergrund ist, dass ich in verschiedenen Funktionen mit der geöffneten
FTP-Session weiter arbeiten will.
-
Weil
HINTERNETnicht definiert ist.
Doku lesen!greetz, Swordfish
-
Ok, aber muss ich nicht sogar zwingend wieder eine neue session
nutzen, um eine Dateisuche in einem Verzeichnis (in das ich gewechselt habe)
durchzuführen?
-
Ok, auf die Gefahr hin, mich zu wiederholen: Doku lesen!
greetz, Swordfish
-
Auf die Gefahr hin noch so eine "nützliche" Info zu erhalten:
Ja, ich habe in der MSDN gelesen. Und deshalb auch gesehen, dass
ich eine neue Session dafür benötige

After calling FtpFindFirstFile and until calling InternetCloseHandle, the application cannot call FtpFindFirstFile again on the given FTP session handle. If a call is made to FtpFindFirstFile on that handle, the function fails with ERROR_FTP_TRANSFER_IN_PROGRESS. After the calling application has finished using the HINTERNET handle returned by FtpFindFirstFile, it must be closed using the InternetCloseHandle function.
Mit dem gidf.de-Link hat sich hier schon unser Azubi unbeliebt gemacht.

-
HINTERNET als Variable kannst Du immer wieder von neuem benutzen.
Du musst einfach sicher stellen, dass die Variable mit InternetOpen ein Handle erzeugen und mit InternetCloseHandle das Handle wieder freigeben.z.B. HINTERNET Variable als Member einer Klasse, dann im Constructor initialisieren (InternetOpen) und im Destruktor freigeben (InternetCloseHandle).
Simon
-
Danke Simon

-
Simon, was sich mir noch für eine Frage stellt...
Ich rufe: InternetOpen und InternetConnect auf, dann sollte doch eigentlich
durchgängig, bis ich mein Handle schließe die Verbindung aktiv bleiben
und ich damit FtpGetCurrentDirectory usw. in meinen anderen Funktionen
der gleichen Klasse aufrufen können?!Ich stelle da immer wieder fest, obwohl ich Open und Connect bereits
in meiner Dialog-Initialisierung gerufen habe, dass ich irgendwann einen
Verbindungsabbruch erhalte (ERROR_FTP_TRANSFER_IN_PROGRESS).Dann scheint es ja doch so zu sein (wie unten im Quote beschrieben), dass
ich erneut eine Session erzeugen muss (connect und open ??)
A little confused now
