Registry Wert ändern - Vorgehensweise?



  • Okay, danke!



  • WilMen schrieb:

    Für private Zwecke reicht der Dev-C++-Compiler aus. Ich habe außerdem noch nie von einem anderen kostenlosen Compiler gehört, der so gut ist. Du kannst also getrost mit ihm weiterarbeiten! 😉

    Oha! Also erstmal ist der DEV-C++ kein Compiler, sondern eine IDE. Der Compiler ist IMHO der MinGW. Und ja, es gibt viel bessere und auch kostenlose IDEs, z.B. Code::Blocks. Der DEV-C++ wird im übrigen schon seit längerem nicht mehr weiterentwickelt. Es ist also nicht angeraten, mit dem weiterzuarbeiten.

    @xbug: Hasu du wenigstens mal meine KLasse ausprobiert?



  • Hi,

    ja habe ich auch. Es kam aber folgende Meldung:

    54 C:\Dokumente und Einstellungen\Admin\Desktop\test.cpp syntax error  before `.' token
    


  • @WebFritzi

    Ja stimmt, hast recht! 🙄



  • xbug schrieb:

    Hi,

    ja habe ich auch. Es kam aber folgende Meldung:

    54 C:\Dokumente und Einstellungen\Admin\Desktop\test.cpp syntax error  before `.' token
    

    Das war dann dein Fehler, denn er taucht in deiner cpp-Datei und nicht in der CRegistry.cpp auf. Kann mir aber nicht denken, welcher. Ist ja auch klar. Woher soll ich wissen, was bei dir Zeile 54 ist...?



  • //---------------------------------------------------------------------------
    #ifndef CRegistryH
    #define CRegistryH
    //---------------------------------------------------------------------------
    #include <windows.h>
    //---------------------------------------------------------------------------
    
    // Possible types for values:
    //--------------------------------
    // REG_BINARY	            Binary data in any form.
    // REG_DWORD	            A 32-bit number.
    // REG_DWORD_LITTLE_ENDIAN  A 32-bit number in little-endian format (same as REG_DWORD). In little-endian format, the most significant byte of a word is the high-order byte. This is the most common format for computers running Windows NT and Windows 95.
    // REG_DWORD_BIG_ENDIAN	    A 32-bit number in big-endian format. In big-endian format, the most significant byte of a word is the low-order byte.
    // REG_EXPAND_SZ	    A null-terminated string that contains unexpanded references to environment variables (for example, “%PATH%”). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions.
    // REG_LINK	            A Unicode symbolic link.
    // REG_MULTI_SZ	            An array of null-terminated strings, terminated by two null characters.
    // REG_RESOURCE_LIST	    A device-driver resource list.
    // REG_SZ	            A null-terminated string. It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions.
    
    // Notes on the write-functions:
    //-----------------------------------
    // - they overwrite any value careless of which type it may be
    // - they act as creating functions if the specified value does not exist
    //   therefore there is no need for functions to create values
    
    class CRegistry
    {
    public:
        CRegistry();
        ~CRegistry();
        BOOL SetRoot(HKEY hRootKey);
        // Path functions
        BOOL OpenPath(LPTSTR szPath, BOOL bCanCreate);
        BOOL ClosePath();
        BOOL PathExists(LPTSTR szPath);
        BOOL CreatePath(LPTSTR szPath);
        BOOL DeleteLastPathKey(LPTSTR szPath); // Deletes last key in szPath
        // Value functions
        BOOL ValueExists(LPTSTR szValName);
        BOOL GetValueSize(LPTSTR szValName, LPDWORD lpdwSize);
        BOOL GetValueType(LPTSTR szValName, LPDWORD lpdwType);
        BOOL WriteString(LPTSTR szValName, LPTSTR szValue);
        BOOL WriteDWORD(LPTSTR szValName, DWORD dwValue);
        BOOL ReadString(LPTSTR szValName, LPTSTR lpszRetVal, DWORD dwBufSize);
        BOOL ReadDWORD(LPTSTR szValName, LPDWORD lpdwRetVal);
        // Other functions
        LPTSTR GetLastError();
    };
    //---------------------------------------------------------------------------
    #endif
    //---------------------------------------------------------------------------
    
    CRegistry reg;
    reg.SetRoot(HKEY_CURRENT_USER);
    reg.OpenPath( TEXT("Console") );
    
    TCHAR szValue[100];
    reg.ReadString(TEXT("ColorTable04"), szValue, 100);
    


  • Oh Scheiße... Ich glaube, du solltest erstmal ein Tutorial über C/C++ lesen. Du kannst doch nicht einfach deinen Code in die CRegistry.h schreiben. Die CRegistry-Dateien lässt du bitte unangetastet. Binde die CRegistry.cpp in dein Projekt mit ein und inkludiere in deiner Projekt-cpp-Datei die CRegistry.h. Dann kannst du in der Projekt-cpp-Datei auf die Klasse CRegistry zugreifen.



  • Selber Fehler:

    #include "creg.h"
    
    CRegistry reg;
    reg.SetRoot(HKEY_CURRENT_USER);
    reg.OpenPath( TEXT("Console") );
    
    TCHAR szValue[100];
    reg.ReadString(TEXT("ColorTable04"), szValue, 100);
    


  • Toll. Und wo ist deine WinMain oder Main-Funktion? Dir ist schon klar, dass du code nicht einfach irgendwo hinpflanzen kannst, wo es dir gerade passt, oder?

    #include "CRegistry.h"
    
    int main()
    {
       // Hier der Code
       return 0;
    }
    


  • xbug schrieb:

    DWORD dwSize = sizeof(szValue)*sizeof(TCHAR);[/cpp]

    Das ist falsch.
    Es muss bzw. sollte heißen:

    DWORD dwSize = sizeof(szValue) / sizeof(szValue[0]);
    

    Nochwas @xbug: Ich würde mir das

    WebFritzi schrieb:

    Ich glaube, du solltest erstmal ein Tutorial über C/C++ lesen.

    im eigenen Interesse doch mal zu Herzen nehmen.


Anmelden zum Antworten