Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QString Result from QSettings

QString Result from QSettings

Scheduled Pinned Locked Moved General and Desktop
3 Posts 2 Posters 1.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Cryterion
    wrote on last edited by
    #1

    Hi

    The problem I'm having is when reading back String variables from a .conf file, only the first String read is valid, then the following String reads are not returning the Pre-Written string.

    Here is the Read Function: -

    @//***********************************************************************************************************
    //
    // Function : ReadRecipes
    //
    // Passed : void
    // Returns : bool
    //
    // Reads the programmed recipe information from disk.
    //***********************************************************************************************************
    bool MainWindow::ReadRecipes()
    {
    TRecipeStruct *CurrentRecipe;
    TRecipeStruct *LastRecipe;
    unsigned int RecipeCount;
    unsigned int RecipeMax;
    QString RecipeCountStr;
    QString TmpString;

    RecipeCount = 0;
    RecipeMax = 0;
    QSettings Recipes("Anmar","Recipes");
    Recipes.sync();
    Recipes.beginGroup("RecipeCount");
    RecipeMax = Recipes.value("Count",0).toInt();
    Recipes.endGroup();
    while (RecipeCount < RecipeMax)
    {
        RecipeCount++;
        qApp->processEvents();
        CurrentRecipe = new TRecipeStruct();
        if (CurrentRecipe)
        {
            Recipes.beginGroup("RecipeNames");
            RecipeCountStr = "Recipe" + QString::number(RecipeCount);
            TmpString = Recipes.value(RecipeCountStr,"BlankName").toByteArray();
            CurrentRecipe->RecipeName = TmpString;
            Recipes.endGroup();
            Recipes.beginGroup(CurrentRecipe->RecipeName);
            CurrentRecipe->FlourWeight = Recipes.value("FlourWeight").toFloat();
            CurrentRecipe->SiloPercentage[0] = Recipes.value("Silo1Percent").toFloat();
            CurrentRecipe->SiloPercentage[1] = Recipes.value("Silo2Percent").toFloat();
            CurrentRecipe->SiloPercentage[2] = Recipes.value("Silo3Percent").toFloat();
            CurrentRecipe->SiloPercentage[3] = Recipes.value("Silo4Percent").toFloat();
            CurrentRecipe->WaterPercentage = Recipes.value("WaterPerecentage").toFloat();
            CurrentRecipe->DoughTemp = Recipes.value("DoughTemp").toFloat();
            CurrentRecipe->MixerTime = Recipes.value("Mixer1Time").toInt();
            CurrentRecipe->MixerConstant = Recipes.value("MixerConst1").toFloat();
            if (!SystemSetup->Recipes)
            {
                SystemSetup->Recipes = CurrentRecipe;
                CurrentRecipe->Prev = 0;
                CurrentRecipe->Next = 0;
            }
            else
            {
                LastRecipe = SystemSetup->Recipes;
                while(LastRecipe->Next)
                {
                    LastRecipe = LastRecipe->Next;
                    qApp->processEvents();
                }
                LastRecipe->Next = CurrentRecipe;
                CurrentRecipe->Prev = LastRecipe;
                CurrentRecipe->Next = 0;
            }
        }
    }
    return true;
    

    }@

    An example .conf file.

    @[RecipeCount]
    Count=3

    [RecipeNames]
    Recipe1=Test1
    Recipe2=Test2
    Recipe3=Test3

    [Test1]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)

    [Test2]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)

    [Test3]
    DoughTemp=@Variant(\0\0\0\x87\x41\xe4\0\0)
    FlourWeight=@Variant(\0\0\0\x87\0\0\0\0)
    Mixer1Time=0
    MixerConst1=@Variant(\0\0\0\x87\0\0\0\0)
    Silo1Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo2Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo3Percent=@Variant(\0\0\0\x87\0\0\0\0)
    Silo4Percent=@Variant(\0\0\0\x87\0\0\0\0)
    WaterPercent=@Variant(\0\0\0\x87\0\0\0\0)@

    With the above code, on first scan, recipe "Test1" is valid, whereas the next 2 the result returned from QSettings->value is the "BlankName" default result. Without a default value, "" is returned.

    1 Reply Last reply
    0
    • C Offline
      C Offline
      Cryterion
      wrote on last edited by
      #2

      I have the same result with either

      TmpString = Recipes.value(RecipeCountStr,"BlankName").toByteArray();

      or

      TmpString = Recipes.value(RecipeCountStr,"BlankName").toString();

      1 Reply Last reply
      0
      • A Offline
        A Offline
        andreyc
        wrote on last edited by
        #3

        In your code I don't see closing endGroup() for
        @
        Recipes.beginGroup(CurrentRecipe->RecipeName);
        @

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved