Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Einmal Random generieren
Forum Updated to NodeBB v4.3 + New Features

Einmal Random generieren

Scheduled Pinned Locked Moved Unsolved German
27 Posts 6 Posters 7.7k 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.
  • B Offline
    B Offline
    Benkho
    wrote on last edited by
    #1

    Guten Tag,

    ich möchte das mein Programm bei dem ersten Start aus verschiedenen Begrüßungen Random eine heraussucht aber diese dann bei jeden wiederholten öffnen die selbe Begrüßung steht.

    Also bei dem ersten Start z.b. aus (Hallo, Moin oder Hay) eine Begrüßung Random heraussucht diese dann Speichert und bei dem nächsten Start dann wieder die Selbe Begrüßung hat. Random (Hallo) herausgesucht, das Hallo gespeichert und bei wiederholten Start wieder Hallo anzeigt.

    Ist das möglich?

    Mit freundlichem Gruß

    Benkho

    aha_1980A 1 Reply Last reply
    0
    • B Benkho

      Guten Tag,

      ich möchte das mein Programm bei dem ersten Start aus verschiedenen Begrüßungen Random eine heraussucht aber diese dann bei jeden wiederholten öffnen die selbe Begrüßung steht.

      Also bei dem ersten Start z.b. aus (Hallo, Moin oder Hay) eine Begrüßung Random heraussucht diese dann Speichert und bei dem nächsten Start dann wieder die Selbe Begrüßung hat. Random (Hallo) herausgesucht, das Hallo gespeichert und bei wiederholten Start wieder Hallo anzeigt.

      Ist das möglich?

      Mit freundlichem Gruß

      Benkho

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Benkho ja das ist möglich, genauso wie du es beschrieben hast.

      Du brauchst nur einen Zufallsgenerator und eine Datei :)

      Qt has to stay free or it will die.

      1 Reply Last reply
      0
      • B Offline
        B Offline
        Benkho
        wrote on last edited by
        #3

        Danke schonmal für die schnelle Antwort.
        Kannst du das bitte genauer erklären? Also eine Zufallsgenerator bin ich in der Lage zu finden aber ich verstehe nicht ganz wie du das mit der Datei meinst.

        aha_1980A 1 Reply Last reply
        0
        • B Benkho

          Danke schonmal für die schnelle Antwort.
          Kannst du das bitte genauer erklären? Also eine Zufallsgenerator bin ich in der Lage zu finden aber ich verstehe nicht ganz wie du das mit der Datei meinst.

          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Benkho

          Also bei dem ersten Start z.b. aus (Hallo, Moin oder Hay) eine Begrüßung Random heraussucht diese dann Speichert und bei dem nächsten Start dann wieder die Selbe Begrüßung hat

          => Meldung in Datei speichern und beim Start laden. Wenn Datei leer, dann Zufallsmeldung generieren. Ok?

          Qt has to stay free or it will die.

          1 Reply Last reply
          1
          • B Offline
            B Offline
            Benkho
            wrote on last edited by
            #5

            Ok, Danke. Ich versuche das mal heraus zu finden. Sonst melde ich mich wieder.

            1 Reply Last reply
            0
            • B Offline
              B Offline
              Benkho
              wrote on last edited by
              #6

              Guten Tag,

              ich habe jetzt nach einer Grippe endlich einen Zufallsgenerator für Wörter bauen können.

              void MainWindow::CmdPruefenNeuClicked()
              {
                  char const* woerter[] = { "Hallo", "Hello", "Hay" };
                  int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
              
                  int zahl = (rand() % wort_anzahl);
              
              
                  ui->LblAufgabe->setText(woerter[zahl]);
              }
              

              Das Problem was ich derzeit leider noch nicht lösen konnte ist, dass der bei dem Programmstart automatisch startet.
              Das zweite Problem was ich auch nicht lösen konnte ist, dass ich einer der drei Wörter speichern kann damit dieses Wort dann jedes mal wieder angezeit werden kann.
              Nach beiden sachen haben ich mehrere stunden gegooglet aber leider nichts anständiges finden können. Mir würden vieleicht auch schon den Fachbegriff reichen wie man das nennt.

              Ich hoffe ihr könnt mir da weiter helfen.

              Mit freundlichem Gruß

              Benkho

              J.HilkJ jsulmJ 2 Replies Last reply
              0
              • B Benkho

                Guten Tag,

                ich habe jetzt nach einer Grippe endlich einen Zufallsgenerator für Wörter bauen können.

                void MainWindow::CmdPruefenNeuClicked()
                {
                    char const* woerter[] = { "Hallo", "Hello", "Hay" };
                    int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                
                    int zahl = (rand() % wort_anzahl);
                
                
                    ui->LblAufgabe->setText(woerter[zahl]);
                }
                

                Das Problem was ich derzeit leider noch nicht lösen konnte ist, dass der bei dem Programmstart automatisch startet.
                Das zweite Problem was ich auch nicht lösen konnte ist, dass ich einer der drei Wörter speichern kann damit dieses Wort dann jedes mal wieder angezeit werden kann.
                Nach beiden sachen haben ich mehrere stunden gegooglet aber leider nichts anständiges finden können. Mir würden vieleicht auch schon den Fachbegriff reichen wie man das nennt.

                Ich hoffe ihr könnt mir da weiter helfen.

                Mit freundlichem Gruß

                Benkho

                J.HilkJ Offline
                J.HilkJ Offline
                J.Hilk
                Moderators
                wrote on last edited by
                #7

                moin @Benkho

                Um deine Funktion direkt nach Programmstart auszuführen kannst du die Funktion einfach aufrufen innerhalb/am Ende des Klassen constructors.

                Wird dann direkt ausgeführt, bevor das Ui das erste mal gezeichnet wird.

                ZU Punkt 2, du musst dir speichern, ob das Programm schon einmal lief und eine Begrüßung generiert hat oder nicht.

                Ich würde QSettings empfehlen.


                Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                Q: What's that?
                A: It's blue light.
                Q: What does it do?
                A: It turns blue.

                1 Reply Last reply
                1
                • B Offline
                  B Offline
                  Benkho
                  wrote on last edited by
                  #8

                  Hallo,

                  ich bin gerade echt am versweifeln. Ich kann 6 Programmiersprachen für Webseiten und habe mir gedacht, da ich gerade ein wenig mehr Zeit habe, lernste mal C++, wobei ich nicht genau weis ob das bei QT überhaupt C++ ist. Das Problem was ich dabei nur habe ist, dass es nicht anständig irgendwo was erklärt wird so das ich es nachvollziehen kann um es an zu wenden. Vorausgesetzt es ist überhaupt etwas erklärt. Vieleicht muss ich mal etwas umdenken oder nicht so kompliziert denken.

                  Wo finde ich den Klassen constructors und was bewirk diese? Schreibe ich da alle definitionen rein die das Programm zum start oder zur erstellung benötigt?

                  1 Reply Last reply
                  0
                  • aha_1980A Offline
                    aha_1980A Offline
                    aha_1980
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9
                    • C++ is eine Programmiersprache

                    • Qt is eine C++ Bibliothek, d.h. ist in C++ geschrieben und bietet Klassen um die Programmierung von Programmen in C++ zu erleichtern

                    Du must beides zumindest in Grundzügen beherrschen. Mein C/C++ Buch war damals etwa 1200 Seiten, ein gutes Qt Buch wird die gleiche Größe erreichen. Das heißt nicht, dass du es komplett lesen muss um loszumachen, aber der Weg bis zum Experten ist schon ein Stück.

                    Aber zu deiner Frage: der Konstruktor der Klasse MainWindow hat folgende Funtionssignatur: MainWindow::MainWindow(QWidget *parent).

                    Innerhalb der geschweiften Klammern direkt nach dieser Signatur kannst Du die Funktion CmdPruefenNeuClicked() aufrufen.

                    Grüße

                    Qt has to stay free or it will die.

                    1 Reply Last reply
                    0
                    • B Benkho

                      Guten Tag,

                      ich habe jetzt nach einer Grippe endlich einen Zufallsgenerator für Wörter bauen können.

                      void MainWindow::CmdPruefenNeuClicked()
                      {
                          char const* woerter[] = { "Hallo", "Hello", "Hay" };
                          int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                      
                          int zahl = (rand() % wort_anzahl);
                      
                      
                          ui->LblAufgabe->setText(woerter[zahl]);
                      }
                      

                      Das Problem was ich derzeit leider noch nicht lösen konnte ist, dass der bei dem Programmstart automatisch startet.
                      Das zweite Problem was ich auch nicht lösen konnte ist, dass ich einer der drei Wörter speichern kann damit dieses Wort dann jedes mal wieder angezeit werden kann.
                      Nach beiden sachen haben ich mehrere stunden gegooglet aber leider nichts anständiges finden können. Mir würden vieleicht auch schon den Fachbegriff reichen wie man das nennt.

                      Ich hoffe ihr könnt mir da weiter helfen.

                      Mit freundlichem Gruß

                      Benkho

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      @Benkho said in Einmal Random generieren:

                      int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);

                      Should be

                      int wort_anzahl = sizeof(woerter) / sizeof(char*);
                      

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      JonBJ 1 Reply Last reply
                      0
                      • B Offline
                        B Offline
                        Benkho
                        wrote on last edited by
                        #11

                        Hallo,

                        vielen vielen Dank ich habe es endlich geschaft das, dass Programm zum start die Begrüßunh anzeigt. Jetzt muss ich mir nur noch das mit dem Speichern ansehen.

                        Ich habe ein Buch aber das wird es wohl kein gutes sein, da ich solche Sachen dort nicht gefunden habe.

                        1 Reply Last reply
                        0
                        • jsulmJ jsulm

                          @Benkho said in Einmal Random generieren:

                          int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);

                          Should be

                          int wort_anzahl = sizeof(woerter) / sizeof(char*);
                          
                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on last edited by JonB
                          #12

                          @jsulm said in Einmal Random generieren:

                          char const* woerter[] = { "Hallo", "Hello", "Hay" };
                          int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                          

                          Should be

                          int wort_anzahl = sizeof(woerter) / sizeof(char*);
                          

                          Why?

                          P.S.
                          @Benkho "Hay" sollte "Hey" sein! :)

                          jsulmJ 1 Reply Last reply
                          0
                          • JonBJ JonB

                            @jsulm said in Einmal Random generieren:

                            char const* woerter[] = { "Hallo", "Hello", "Hay" };
                            int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                            

                            Should be

                            int wort_anzahl = sizeof(woerter) / sizeof(char*);
                            

                            Why?

                            P.S.
                            @Benkho "Hay" sollte "Hey" sein! :)

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by jsulm
                            #13

                            @JonB Because: sizeof(woerter) == 3 * sizeof(char*) == 12 (on 32bit platforms)
                            This is dangerous if the array is empty:

                            int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                            

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            JonBJ 1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @JonB Because: sizeof(woerter) == 3 * sizeof(char*) == 12 (on 32bit platforms)
                              This is dangerous if the array is empty:

                              int wort_anzahl = sizeof(woerter) / sizeof(woerter[0]);
                              
                              JonBJ Offline
                              JonBJ Offline
                              JonB
                              wrote on last edited by JonB
                              #14

                              @jsulm
                              I really don't understand! From my C days I have always used a convenient macro like:

                              #define ELEMENTS_IN(array) (sizeof(array) / sizeof(array[0]))
                              

                              which cannot be written (with one parameter) if one adopts your definition. The advantage of writing it this way is that you do not have to change your definition's sizeof(char*) if the type of element in the array is altered and you forget to do so.

                              This is dangerous if the array is empty:

                              Do you mean, using sizeof(woerter[0]) if woerter array contains no elements at run time? If so, you are labouring under a misapprehension! :) sizeof is evaluated at compile-time, not runtime. You can write sizeof(array[0]), or for that matter sizeof(*array), regardless of the size of the the array or whether/what elements it contains. The compiler generates the size of whatever type elements are or would be in the array from its declaration, not its runtime content.

                              jsulmJ 1 Reply Last reply
                              1
                              • JonBJ JonB

                                @jsulm
                                I really don't understand! From my C days I have always used a convenient macro like:

                                #define ELEMENTS_IN(array) (sizeof(array) / sizeof(array[0]))
                                

                                which cannot be written (with one parameter) if one adopts your definition. The advantage of writing it this way is that you do not have to change your definition's sizeof(char*) if the type of element in the array is altered and you forget to do so.

                                This is dangerous if the array is empty:

                                Do you mean, using sizeof(woerter[0]) if woerter array contains no elements at run time? If so, you are labouring under a misapprehension! :) sizeof is evaluated at compile-time, not runtime. You can write sizeof(array[0]), or for that matter sizeof(*array), regardless of the size of the the array or whether/what elements it contains. The compiler generates the size of whatever type elements are or would be in the array from its declaration, not its runtime content.

                                jsulmJ Offline
                                jsulmJ Offline
                                jsulm
                                Lifetime Qt Champion
                                wrote on last edited by
                                #15

                                @JonB Yes, you're right

                                https://forum.qt.io/topic/113070/qt-code-of-conduct

                                1 Reply Last reply
                                2
                                • B Offline
                                  B Offline
                                  Benkho
                                  wrote on last edited by
                                  #16

                                  Guten Tag,

                                  ich habe mal nach den QSettings gegoogelt wie ich damit arbeite und habe anhand der dortigen angaben dieses zusammen gebaut aber irgendwie will es nicht ganz funktionieren. Also starten tut das Programm aber es speichert nichts ab.

                                  srand((unsigned)time(NULL));
                                      initGui();
                                  
                                       m_sSettingsFile = QApplication::applicationDirPath().left(1) + ":/begrüßungsettings.ini";
                                       loadSettings();
                                  
                                      if (LblBegrueßung)
                                       {
                                          connect(ui->LblBegrueßung, SIGNAL(clicked()),
                                          SLOT());
                                       }
                                      char const* woerter[] = { "Hallo", "Hello", "Hey" };
                                      int wort_anzahl = sizeof(woerter) / sizeof(char*);
                                  
                                      int zahl = (rand() % wort_anzahl);
                                  
                                      ui->LblBegrueßung->setText(woerter[zahl]);
                                  }
                                  
                                  void MainWindow::initGui()
                                  {
                                   LblBegrueßung = new QLabel("", this);
                                   LblBegrueßung->setGeometry(0,0, 200,40);
                                  }
                                  
                                  void MainWindow::loadSettings()
                                  {
                                   QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
                                   QString sText = settings.value("text", "").toString();
                                   if (LblBegrueßung)
                                   {
                                    LblBegrueßung->setText(sText);
                                   }
                                  }
                                  
                                  void MainWindow::saveSettings()
                                  {
                                   QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
                                   QString sText = (LblBegrueßung) ? LblBegrueßung->text() : "";
                                   settings.setValue("text", sText);
                                   if (LblBegrueßung)
                                   {
                                    LblBegrueßung->setText(sText);
                                   }
                                  }
                                  
                                  void MainWindow::handleButton()
                                  {
                                   saveSettings();
                                  }
                                  
                                  J.HilkJ 1 Reply Last reply
                                  0
                                  • Christian EhrlicherC Offline
                                    Christian EhrlicherC Offline
                                    Christian Ehrlicher
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #17

                                    Du suchst QSettings::setValue() - QSettings::value() liest nur Daten aus (wie in der Dokumentation beschrieben

                                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                                    Visit the Qt Academy at https://academy.qt.io/catalog

                                    B 1 Reply Last reply
                                    0
                                    • Christian EhrlicherC Christian Ehrlicher

                                      Du suchst QSettings::setValue() - QSettings::value() liest nur Daten aus (wie in der Dokumentation beschrieben

                                      B Offline
                                      B Offline
                                      Benkho
                                      wrote on last edited by
                                      #18

                                      @Christian-Ehrlicher
                                      Ich verstehe nicht genau was du meinst? Ich habe doch QSettings::setValue drinne

                                      Christian EhrlicherC 1 Reply Last reply
                                      0
                                      • B Benkho

                                        Guten Tag,

                                        ich habe mal nach den QSettings gegoogelt wie ich damit arbeite und habe anhand der dortigen angaben dieses zusammen gebaut aber irgendwie will es nicht ganz funktionieren. Also starten tut das Programm aber es speichert nichts ab.

                                        srand((unsigned)time(NULL));
                                            initGui();
                                        
                                             m_sSettingsFile = QApplication::applicationDirPath().left(1) + ":/begrüßungsettings.ini";
                                             loadSettings();
                                        
                                            if (LblBegrueßung)
                                             {
                                                connect(ui->LblBegrueßung, SIGNAL(clicked()),
                                                SLOT());
                                             }
                                            char const* woerter[] = { "Hallo", "Hello", "Hey" };
                                            int wort_anzahl = sizeof(woerter) / sizeof(char*);
                                        
                                            int zahl = (rand() % wort_anzahl);
                                        
                                            ui->LblBegrueßung->setText(woerter[zahl]);
                                        }
                                        
                                        void MainWindow::initGui()
                                        {
                                         LblBegrueßung = new QLabel("", this);
                                         LblBegrueßung->setGeometry(0,0, 200,40);
                                        }
                                        
                                        void MainWindow::loadSettings()
                                        {
                                         QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
                                         QString sText = settings.value("text", "").toString();
                                         if (LblBegrueßung)
                                         {
                                          LblBegrueßung->setText(sText);
                                         }
                                        }
                                        
                                        void MainWindow::saveSettings()
                                        {
                                         QSettings settings(m_sSettingsFile, QSettings::NativeFormat);
                                         QString sText = (LblBegrueßung) ? LblBegrueßung->text() : "";
                                         settings.setValue("text", sText);
                                         if (LblBegrueßung)
                                         {
                                          LblBegrueßung->setText(sText);
                                         }
                                        }
                                        
                                        void MainWindow::handleButton()
                                        {
                                         saveSettings();
                                        }
                                        
                                        J.HilkJ Offline
                                        J.HilkJ Offline
                                        J.Hilk
                                        Moderators
                                        wrote on last edited by
                                        #19

                                        @Benkho said in Einmal Random generieren:

                                        begrüßungsettings.ini

                                        ich währe vorsichtig mit Umlauten im Dateipfad. Existiert die Datei überhaupt ? Es sollte auf jedenfalls eine *.ini Datei existieren, auch wenn sie leer ist.


                                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                        Q: What's that?
                                        A: It's blue light.
                                        Q: What does it do?
                                        A: It turns blue.

                                        B 1 Reply Last reply
                                        1
                                        • B Benkho

                                          @Christian-Ehrlicher
                                          Ich verstehe nicht genau was du meinst? Ich habe doch QSettings::setValue drinne

                                          Christian EhrlicherC Offline
                                          Christian EhrlicherC Offline
                                          Christian Ehrlicher
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #20

                                          @Benkho said in Einmal Random generieren:

                                          Ich habe doch QSettings::setValue drinne

                                          Korrekt, habe load und save verwechselt bzw. verscrollt :)
                                          Sicher dass Du dort auch Schreibrechte hast?

                                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                                          Visit the Qt Academy at https://academy.qt.io/catalog

                                          1 Reply Last reply
                                          1

                                          • Login

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