Der Profil-Manager ist ein eigenständiges Programm, das nur für die Verwaltung von Profilen in einer Konfigurationsdatei einer Anwendung eingesetzt wird. Die Anwendung liest die Daten eines im Profil-Manager ausgewählten Profils oder des zuletzt benutzten Profils ein, wertet diese aus und weist sie intern Variablen oder Komponenten-Eigenschaften als Wert zu. Damit greift nur ein Programm auf die Konfigurationsdatei mit den Profilen zu. Der Profil-Manager muss immer im Kontext mit der Anwendung gesehen werden, die ihn nutzt. Einen Manager für alle Programme wird es deshalb nicht geben. Die Anwendung muss mit Hilfe der Klassen Settings oder SettingsP (für Gambas 2) in der Lage sein, beim ersten Start den Profil-Manager aufzurufen und ein erstes Profil anzulegen oder die Daten des zuletzt genutzten Profils auszulesen. Deswegen können Sie mit der Klasse SettingsP/Settings so arbeiten, wie es Ihnen in den Beispielen 1 und 2 vorgestellt wurde.
Im folgenden Abschnitt wird Ihnen ein FTP-Client präsentiert, der den beschriebenen Profil-Manager nutzt. Der FTP-Client ist geeignet, Ihnen den Einsatz des Profil-Managers zu veranschaulichen! Bitte beachten Sie, dass der FTP-Client nur das Einlesen des Remote-Verzeichnisses unter dem ausgewählten Profil von 2 öffentlich zugänglichen FTP-Servern demonstriert:
Abbildung 19.1.3.3.1: FTP-Client mit Profil-Manager
Für Ihr Testprogramm können Sie selbstverständlich auch Ihre Daten in ein neues Profil eintragen, wenn Sie über ein eigenes FTP-Konto verfügen.
Der Quelltext wird an dieser Stelle nur für die Prozeduren angegeben, welche das Zusammenspiel von Profil-Manager und FTP-Client als Anwendung verdeutlichen. Die komplette Implementierung finden Sie im Projekt FTPC-Profile für Gambas 2. Die Änderungen für Gambas 3 sind gering und bereits vorgestellt worden. Sie können für die Anwendung auch weitere Daten – hier die Angaben zum AutoConnect – in die Konfigurationsdatei schreiben und auslesen, wenn Sie das für notwendig halten, wie ein Blick in die verwendete Konfigurationsdatei und ein zweiter in den Quelltext-Ausschnitt zeigen:
# Profile für einen FTP-Client [AutoConnect] AutoConnect=-1 [LastProfil] LastProfilName="FH-HANNOVER" [P_FH-HANNOVER] FTPServerName="ftp.fh-hannover.de" FTPUserName="anonymous" FTPUserPassword="wer@ist.da" FTPInitialDirRemote="pub/dos/tcpip" [P_UNI-ERLANGEN] FTPServerName="ftp.uni-erlangen.de" FTPUserName="anonymous" FTPUserPassword="wer@ist.da" FTPInitialDirRemote="pub"
Im folgenden Abschnitt sehen Sie den Quelltext-Ausschnitt der Anwendung FTPC-Profile:
' Gambas class file PUBLIC ftpSettings AS SettingsP ' ---> Gambas 2 ... PUBLIC SUB Form_Open() FMain.Center FMain.Border = 1 btnFileUpLoad.Enabled = FALSE btnFileDownLoad.Enabled = FALSE bFinishedFlag = FALSE oFTPClient.Timeout = 5 ' ---> GB2; GB3 ---> ... AS NEW Settings ftpSettings = NEW SettingsP(Application.Path &/ "Profils/profils.conf", "Profile für einen FTP-Client") IF ftpSettings["LastProfil/LastProfilName"] = NULL THEN Message.Info("Es existiert kein Profil für das Client-Programm!") FProfilManager.ShowModal ELSE GetProfilValues(ftpSettings["LastProfil/LastProfilName"]) FileChooser1.Dir = FileChooser1.Dir &/ InitialDirLocal cboxAutoConnect.Value = ftpSettings["AutoConnect/AutoConnect", FALSE] IF cboxAutoConnect.Value = TRUE THEN ConnectToFTPServer() ENDIF ENDIF ' = NULL? END ' Form_Open() PUBLIC SUB GetProfilValues(sProfilName AS String) sProfilName = "P_" & sProfilName FTPServerName = ftpSettings[sProfilName & "/FTPServerName"] FTPUserName = ftpSettings[sProfilName & "/FTPUserName"] FTPUserPassword = ftpSettings[sProfilName & "/FTPUserPassword"] InitialDirLocal = ftpSettings[sProfilName & "/FTPInitialDirLocal"] InitialDirRemote = ftpSettings[sProfilName & "/FTPInitialDirRemote"] FMain.Text = "FTP-Client mit Profil: " & Mid(sProfilName, 3) txtRemoteDirectory.Text = FTPServerName &/ InitialDirRemote END ' GetProfilValues(..) ... PUBLIC SUB btnProfilManagerShow_Click() FProfilManager.ShowModal ftpSettings.Reload IF ftpSettings["LastProfil/LastProfilName"] = NULL THEN FProfilManager.ShowModal ELSE GetProfilValues(ftpSettings["LastProfil/LastProfilName"]) FileChooser1.Dir = User.Home &/ InitialDirLocal txtRemoteDirectory.Text = FTPServerName &/ InitialDirRemote txaRemote.Clear ENDIF ' = NULL? END ' ProfilManagerShow PUBLIC SUB Form_Close() ftpSettings["AutoConnect/AutoConnect"] = cboxAutoConnect.Value END ' Form_Close() PUBLIC SUB btnClose_Click() IF oFTPClient.Status > 0 THEN oFTPClient.Close FMain.Close END ' btnClose_Click()
So lange Sie das Programm FTF-Client mit Profilmanager (Projekt FTPC-Profile) in der IDE testen, sehen Sie in der Konsole das Verbindungsprotokoll zwischen FTP-Server und FTP-Client, das interessante Details zeigt. Es kann dann gut interpretiert werden, wenn Sie die RFC 959 zum File Transfer Protocol (FTP) – veröffentlicht auf der Website http://www.faqs.org/rfcs/rfc959.html – gelesen haben.