Benutzer-Werkzeuge

Webseiten-Werkzeuge


k19:k19.1:k19.1.3:k19.1.3.1:start

19.1.3.1 Beispiel 3 – Profil-Manager GB2

Mit Gambas 3 lassen sich Profile auf komfortable Art in einer Konfigurationsdatei verwalten, weil die Klasse Settings um die Eigenschaft Keys erweitert wurde. Um auch unter Gambas 2 mit Profilen arbeiten zu können, wurde diese Klasse für Gambas 2 als SettingsP umgeschrieben. Das Umschreiben war erfolgreich – bis auf den Umstand, dass in den Profilnamen keine Umlaute und kein ß verwendet werden dürfen. Die Klasse SettingsP benötigt die Klasse _Settings_Keys und das Modul Main. Alle drei Dateien werden Ihnen im Programm-Beispiel 3 zur Verfügung gestellt. Deshalb müssen Sie die folgenden drei Dateien in Ihr Gambas2-Projekt einbinden:

Klassen und Modul

Abbildung 19.1.3.1.1: Modul und Klassen für die Arbeit mit Profilen unter Gambas 2

Es wurde auch die Methode Settings.Clear(Sektion) genutzt, um bestehende Profile zu löschen.

MethodeBeschreibung
Settings.ClearDiese Methode löscht das Settings-Objekt und gibt den belegten Speicher frei.
Settings.Clear(Sektion)Diese Methode löscht nur die angegebene Sektion in der Konfigurationsdatei.

Tabelle: 19.1.3.1 Beschreibung von Methoden der Klasse Settings

Mit dem Programm Profil-Manager kann man

  • neue Profile anlegen,
  • bestehende Profile ändern,
  • neue oder geänderte Profile in der Konfigurationsdatei speichern oder
  • bestehende Profile in der Konfigurationsdatei löschen.


Profil-Manager Gambas 2

Abbildung 19.1.3.1.2: Profil-Manager – Gambas 2

Die Einträge zum Profilnamen, zum Server, zum User sowie dem Password sind notwendig, während die Angaben zum lokalen (Start-)Verzeichnis und zum Remote-Verzeichnis optional sind.

Da nicht jede Sektion in der Konfigurationsdatei einem Profil zugeordnet ist, werden den echten Profilen die beiden Zeichen P_ als Kennung vorangestellt. In der Sektion [LastProfil] befindet sich nur ein Schlüssel-Wert-Paar: LastProfilName=„Online-Buch“, in dem die Information zum zuletzt genutzten Profil steht, wie Sie dem Ausschnitt aus der verwendeten Konfigurationsdatei entnehmen können:

# Profile für einen FTP-Client 
[LastProfil] 
LastProfilName="Online-Buch"

[P_Online-Buch] 
FTPServerName="www.gambas-buch.de" 
FTPUserName="hatux" 
FTPUserPassword="vdo#bs12" 
FTPInitialDirLocal="Online-Buch" 
FTPInitialDirRemote="dokuwiki"

[P_Gymnasium] 
FTPServerName="www.gymnasium.de" 
FTPUserName="w00xyz" 
FTPUserPassword="f1#skkk" 
FTPInitialDirLocal="Bild&Ton" 
FTPInitialDirRemote="Projekttage"
...

Hier ist der vollständige Quellcode für das Programm Profil-Manager:

' Gambas class file ---> Gambas 2 
 
PUBLIC pSettings AS SettingsP 
PUBLIC aProfilMatrix AS NEW String[] 
 
PUBLIC SUB Form_Open()  
  FProfilManager.Center 
  FProfilManager.Border = 1 
  aProfilMatrix.Clear 
  pSettings = NEW SettingsP(Application.Path &/ "Profils/profils.conf", "Profile für einen FTP-Client") 
  cmbProfilName.SetFocus 
  txtFTPUserPassword.Password = TRUE 
  cmbProfilName.ReadOnly = TRUE 
 
  IF pSettings["LastProfil/LastProfilName"] = NULL THEN 
     Message.Info("Es existiert kein Profil für das Client-Programm!") ' optional
     cmbProfilName.ReadOnly = FALSE 
  ELSE 
     LoadSettings(pSettings["LastProfil/LastProfilName"]) 
  ENDIF ' = NULL? 
 
END ' Form_Open() 
 
PUBLIC SUB LoadSettings(OPTIONAL sProfilName AS String) 
  DIM sSection AS String  
 
  cmbProfilName.Clear() 
  aProfilMatrix.Clear 
  pSettings.Reload() 
 
  FOR EACH sSection IN pSettings.Keys ' Profile (beginnen mit P_) auslesen und in Matrix speichern 
      IF Left(sSection, 2) = "P_" THEN 
         aProfilMatrix.Add(Mid(sSection, 3)) 
      ENDIF 
  NEXT  
 
  IF sProfilName THEN 
     aProfilMatrix.Remove(aProfilMatrix.Find(sProfilName)) ' Das Profil suchen und in der Matrix löschen 
     aProfilMatrix.Add(sProfilName, 0)  ' Das Profil an die 1. Stelle in der Matrix setzen 
     GetProfilValues(sProfilName) ' Die Profil-Daten zum Profil anzeigen 
  ELSE 
     GetProfilValues(aProfilMatrix[0]) 
  ENDIF ' sProfilName
 
  cmbProfilName.List = aProfilMatrix 
END ' LoadSettings() 
 
PRIVATE SUB SetProfil(sProfilName AS String)  
  SetProfilValues(sProfilName) 
  LoadSettings(sProfilName)  
  cmbProfilName.ReadOnly = FALSE 
END ' SetProfil 
 
PRIVATE SUB Reset() 
  cmbProfilName.Clear 
  cmbProfilName.ReadOnly = FALSE  
  txtFTPServerName.Clear 
  txtFTPUserName.Clear 
  txtFTPUserPassword.Clear 
  txtInitialDirLocal.Clear 
  txtInitialDirRemote.Clear  
  txtFTPUserPassword.Password = FALSE 
END ' Reset 
 
PRIVATE SUB ProfilClear(sProfilName AS String) 
  IF Message.Question("Soll das Profil " & sProfilname & " gelöscht werden?", "Ja", "Nein") = 1 THEN 
     pSettings.Clear("P_" & sProfilName) 
     pSettings.Save 
  ELSE 
     RETURN 
  ENDIF 
  LoadSettings()  
END ' ProfilClear(..) 
 
PUBLIC SUB GetProfilValues(sProfilName AS String)  
  sProfilName = "P_" & sProfilName 
  txtFTPServerName.Text = pSettings[sProfilName & "/FTPServerName"] 
  txtFTPUserName.Text = pSettings[sProfilName & "/FTPUserName"] 
  txtFTPUserPassword.Text = pSettings[sProfilName & "/FTPUserPassword"] 
  txtInitialDirLocal.Text = pSettings[sProfilName & "/FTPInitialDirLocal"] 
  txtInitialDirRemote.Text = pSettings[sProfilName & "/FTPInitialDirRemote"]  
END ' GetProfilValues(..) 
 
PUBLIC SUB SetProfilValues(sProfilName AS String) 
  sProfilName = "P_" & sProfilName 
  pSettings[sProfilName & "/FTPServerName"] = txtFTPServerName.Text 
  pSettings[sProfilName & "/FTPUserName"] = txtFTPUserName.Text 
  pSettings[sProfilName & "/FTPUserPassword"] = txtFTPUserPassword.Text 
  pSettings[sProfilName & "/FTPInitialDirLocal"] = txtInitialDirLocal.Text 
  pSettings[sProfilName & "/FTPInitialDirRemote"] = txtInitialDirRemote.Text 
  pSettings.Save 
END ' SetProfilValues(..) 
 
PUBLIC SUB Form_Close() 
  pSettings["LastProfil/LastProfilName"] = cmbProfilName.Text 
' Auf den Save-Befehl kann verzichtet werden. Er wird automatisch ausgeführt beim Schließen des Programms. 
  pSettings.Save 
END ' Form_Close() 
 
PUBLIC SUB cmbProfilName_Click() 
  LoadSettings(cmbProfilName.Current.Text) 
END ' cmbProfilName_Click() 
 
PUBLIC SUB btnProfilClear_Click() 
  ProfilClear(cmbProfilName.Text) 
END ' ProfilClear_Click() 
 
PUBLIC SUB btnProfilCreate_Click() 
  IF Message.Question("Soll ein neues Profil angelegt werden?", "Ja", "Nein") = 1 THEN   
     Reset() 
  ELSE 
     RETURN 
  ENDIF 
END ' ProfilCreate 
 
PUBLIC SUB btnProfilSave_Click()
  IF Message.Question("Das neue oder geänderte Profil <br><b>" & cmbProfilName.Text & \
     "</b><br>speichern?", "Ja", "Nein") = 1 THEN 
     IF txtFTPServerName.Text <> "" AND txtFTPUserName.Text <> "" AND \
        txtFTPUserPassword.Text <> "" AND cmbProfilName.Text <> "" THEN  
        SetProfil(cmbProfilName.Text) 
        cmbProfilName.ReadOnly = TRUE 
        txtFTPUserPassword.Password = TRUE 
     ELSE 
        Message.Error("Die Profil-Daten sind nicht vollständig oder fehlerhaft!") 
        RETURN 
     ENDIF ' KontoDaten? 
  ELSE 
     RETURN 
  ENDIF ' Question? 
END ' Profil speichern 
 
PUBLIC SUB btnManagerClose_Click() 
  FProfilManager.Close 
END ' btnManagerClose
Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k19/k19.1/k19.1.3/k19.1.3.1/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge