Eigene Unit für Read/Write-Registry



  • Hi,

    ich verwende zum Initialisieren meiner Programme die Registry. Wenn ich ein neues Programm schreibe kopiere ich mir die Routinen aus der Unit1 ins neue Programm.

    Jetzt hab ich mir gedacht, wenn ich eine eigene Unit z.B. MyRegistry habe, ist das Übertragen auf andere Programme einfacher (Unit kopieren und anpassen).
    Bisher habe ich die Variablen global in der Unit1 und setze sie nach lesen der Registry auf die aktuellen Werte. Wenn ich aber eine eigene Unit machen will, wie übergebe oder ändere ich dann die Variablen (z.B. 10 int, 5 bool etc.).

    Ist das überhaupt ein gangbarer Weg, oder wie macht ihr das ???

    Gruß WoWe



  • natürlich ist das eine gängige methode.
    es spart viel zeit und arbeit wenn du häufige methoden in units sammelst.
    wenn du eine neue unit anlegst, dann hast du vollen zugriff auf alle variablen und methoden, die du in der headerdatei nach aussen hin freigegeben hast.



  • Meine Frage ist mehr wie das mit den Variablen gemacht wird. I.M. hab ich in der HauptUnit die Variablen global definiert und in MyRegistry als extern.

    Mich würde mal interessieren wie das ohne globale Variablen mit der eigenen Unit funktioniert. Ich kann ja nicht 20 oder mehr Variablen in den Funktionsaufruf für "ReadFromRegistry()" packen ?!



  • ich verstehe das problem nicht ganz
    du kannst doch in der Registry-Unit deine Variablen definieren und kannst dann von deinem Hauptprogramm aus darauf zugreifen (ohne sie da nochmal zu definieren)
    d.h.: du mußt sie nur einmal definieren (sind doch dann nach außen hin für jeden verwendbar)



  • Eventuell würde sich für das was du willst ein Dokument aus dem Dokument/View-Prinzip anbieten? Hier findest du einen Artikel (experimenteller Status, nicht abgeschlossen) der Document/View beschreibt

    -junix



  • Hab's jetzt so gemacht:

    // *.h Datei
    //---------------------------------------------------------------------------
    
    #ifndef MyRegistryH
    #define MyRegistryH
    //---------------------------------------------------------------------------
    #include <registry.hpp>
    
    void __fastcall ReadFromRegistry();
    void __fastcall WriteToRegistry();
    
    // Diese Parameter werden in der Registry gespeichert
    struct My_Config
    {
        AnsiString sIPAddress;
        AnsiString sFileType;
        AnsiString sMonDir;
        int iPortAddress;
    };
    //---------------------------------------------------------------------------
    #endif
    
    // In der HauptUnit
    My_Config Config;
    
    // Initialisieren
    ReadFromRegistry();
    
    .... = Config.sMonDir;
    
    // In der 2. Unit
    extern My_Config Config;
    
    // Aktualisieren
    Config.sMonDir = MonDirEdit->Text;
    ....
    WriteToRegistry();
    

    Benötige halt immer noch "extern", aber geht wohl nicht anders, oder ?!


  • Mod

    Hallo

    extern ist da moeglicherweise nicht so "gut"

    warum verwendest du keine "Set/Get"

    zB (MyReg->SetMonDir ( aMonDir )

    MfG
    Klaus


Anmelden zum Antworten