Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. textFile lesen zeile für zeile
Forum Updated to NodeBB v4.3 + New Features

textFile lesen zeile für zeile

Scheduled Pinned Locked Moved Solved German
14 Posts 2 Posters 5.1k 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.
  • G Offline
    G Offline
    Galilio
    wrote on last edited by Galilio
    #1

    Hallo zusammen,

    ich habe folgende datei, die ich gerne auswerten möchte. [0_1508821765126_curve_Wafer_X_1790.log](Lade 100% hoch)
    Das text File sieht so aus:
    Mo. Okt 23 2017 09:25:42 (01,01) -0.5 -0 0 -0 0 0 -0 -0
    Mo. Okt 23 2017 09:26:27 (01,01) -1.0 -0 -0 0 -0 0 0 0
    Mo. Okt 23 2017 09:52:09 (01,01) -0.5 0 -0 0 0 0 -0 0
    Mo. Okt 23 2017 09:52:17 (01,01) -1.0 -0 -0 0 0 -0 0 0
    Mo. Okt 23 2017 09:52:24 (01,01) -1.5 0 -0 -0 0 0 -0 0
    Mo. Okt 23 2017 09:52:25 (01,01) -2.0 -0 -0 0 0 -0 0 0
    Mo. Okt 23 2017 09:52:25 (01,01) -2.5 -0 0 -0 -0 0 0 -0
    Mo. Okt 23 2017 09:52:25 (01,01) -3.0 -0 0 -0 -0 0 0 -0
    Mo. Okt 23 2017 09:52:26 (01,01) -3.5 -0 0 -0 0 0 -0 -0
    Mo. Okt 23 2017 09:52:26 (01,01) -4.0 -0 0 -0 0 0 -0 0
    Mo. Okt 23 2017 09:52:27 (01,01) -4.5 0 -0 -0 0 0 -0 0
    Mo. Okt 23 2017 09:52:27 (01,01) -5.0 -0 -0 -0 0 -0 -0 0
    Mo. Okt 23 2017 09:52:29 (01,02) -0.5 -181 -189 -133 0 -134 -186 -185
    Mo. Okt 23 2017 09:52:29 (01,02) -1.0 -184 -191 -135 0 -136 -189 -187
    Mo. Okt 23 2017 09:52:30 (01,02) -1.5 -186 -193 -136 0 -138 -191 -189
    Mo. Okt 23 2017 09:52:30 (01,02) -2.0 -187 -194 -136 0 -139 -192 -190
    Mo. Okt 23 2017 09:52:31 (01,02) -2.5 -188 -195 -137 -0 -139 -193 -191
    Mo. Okt 23 2017 09:52:31 (01,02) -3.0 -189 -196 -138 -0 -140 -194 -192
    Mo. Okt 23 2017 09:52:31 (01,02) -3.5 -189 -196 -138 0 -140 -194 -192
    Mo. Okt 23 2017 09:52:32 (01,02) -4.0 -190 -197 -139 0 -140 -195 -193
    Mo. Okt 23 2017 09:52:32 (01,02) -4.5 -190 -198 -139 0 -141 -195 -193
    Mo. Okt 23 2017 09:52:33 (01,02) -5.0 -191 -198 -139 -0 -141 -196 -194
    Mo. Okt 23 2017 09:52:34 (02,02) -0.5 -147 -159 -125 -183 -117 -173 -172
    Mo. Okt 23 2017 09:52:35 (02,02) -1.0 -151 -163 -128 -188 -120 -178 -177
    Mo. Okt 23 2017 09:52:35 (02,02) -1.5 -153 -166 -130 -191 -122 -181 -179
    Mo. Okt 23 2017 09:52:35 (02,02) -2.0 -155 -168 -131 -193 -123 -183 -181
    Mo. Okt 23 2017 09:52:36 (02,02) -2.5 -157 -170 -132 -195 -125 -185 -184
    Mo. Okt 23 2017 09:52:36 (02,02) -3.0 -158 -171 -133 -196 -125 -186 -185
    Mo. Okt 23 2017 09:52:37 (02,02) -3.5 -159 -172 -134 -197 -126 -187 -186
    Mo. Okt 23 2017 09:52:37 (02,02) -4.0 -160 -173 -134 -198 -127 -188 -187
    Mo. Okt 23 2017 09:52:38 (02,02) -4.5 -161 -174 -136 -199 -127 -189 -189
    Mo. Okt 23 2017 09:52:38 (02,02) -5.0 -162 -178 -136 -201 -128 -191 -193
    Mo. Okt 23 2017 09:52:40 (02,01) -0.5 -254 -269 -223 -331 -210 -286 -287
    Mo. Okt 23 2017 09:52:40 (02,01) -1.0 -259 -273 -226 -337 -213 -291 -291
    Mo. Okt 23 2017 09:52:41 (02,01) -1.5 -261 -276 -228 -339 -214 -294 -294
    Mo. Okt 23 2017 09:52:41 (02,01) -2.0 -264 -278 -229 -342 -216 -296 -296
    Mo. Okt 23 2017 09:52:42 (02,01) -2.5 -265 -280 -231 -343 -217 -298 -298
    Mo. Okt 23 2017 09:52:42 (02,01) -3.0 -266 -281 -231 -345 -218 -300 -300
    Mo. Okt 23 2017 09:52:43 (02,01) -3.5 -267 -282 -233 -346 -219 -301 -301
    Mo. Okt 23 2017 09:52:43 (02,01) -4.0 -268 -283 -233 -347 -219 -302 -302
    Mo. Okt 23 2017 09:52:43 (02,01) -4.5 -269 -284 -234 -348 -220 -304 -303
    Mo. Okt 23 2017 09:52:44 (02,01) -5.0 -270 -285 -235 -349 -220 -304 -304
    Mo. Okt 23 2017 10:04:55 (01,01) -0.5 -0 0 -0 -0 0 0 -0

    Ich bin so vorgegangen:

    QFile inputFile(currentPathName);
    if (inputFile.open(QFile::ReadOnly))
    		{
    			QTextStream inputStream(&inputFile);
    			while(!inputStream.atEnd())
    			{
    				 QString line = inputStream.readLine();
    				 pos1 = line.indexOf('(');
    				 line.remove(0,pos1);
    				 if(line.contains("(01,01)", Qt::CaseInsensitive))
    				 {
                                         QStringList mytlist = line.split("(01,01)", QString::SkipEmptyParts);
                                          // Bis hier habe ich z.B  diese Form:  -0.5  -158  -157  -129  -183  -124     0  -160 
                                          // Ich will dann jede String der QStringList in einem Vector einfügen z.B:
                                          // v1[-0.5],v2[-158],v3[-157],v4[-129],v5[-183],v6[-124],v7[0],v8[-160]
                                           // Beim lesen der zweiten zeile auch das gleiche tun also  z.B:
                                           // v1[-0.5,-1],v2[-158,-160],v3[-157,-190],v4[-129,-130],v5[-183,-190],v6[-124,-130],v7[0,-150],v8[-160,-165] und soweiter
    // Grund nach dem Lesen möchte ich dann die Ergebnis plotten  
    
    
                                      }
    if(line.contains("(02,02)", Qt::CaseInsensitive))
    {
    .....
    }
    .....
    ```[0_1508822555241_curve_Wafer_X_1790.log](Lade 100% hoch)
    J.HilkJ 1 Reply Last reply
    0
    • G Galilio

      Hallo zusammen,

      ich habe folgende datei, die ich gerne auswerten möchte. [0_1508821765126_curve_Wafer_X_1790.log](Lade 100% hoch)
      Das text File sieht so aus:
      Mo. Okt 23 2017 09:25:42 (01,01) -0.5 -0 0 -0 0 0 -0 -0
      Mo. Okt 23 2017 09:26:27 (01,01) -1.0 -0 -0 0 -0 0 0 0
      Mo. Okt 23 2017 09:52:09 (01,01) -0.5 0 -0 0 0 0 -0 0
      Mo. Okt 23 2017 09:52:17 (01,01) -1.0 -0 -0 0 0 -0 0 0
      Mo. Okt 23 2017 09:52:24 (01,01) -1.5 0 -0 -0 0 0 -0 0
      Mo. Okt 23 2017 09:52:25 (01,01) -2.0 -0 -0 0 0 -0 0 0
      Mo. Okt 23 2017 09:52:25 (01,01) -2.5 -0 0 -0 -0 0 0 -0
      Mo. Okt 23 2017 09:52:25 (01,01) -3.0 -0 0 -0 -0 0 0 -0
      Mo. Okt 23 2017 09:52:26 (01,01) -3.5 -0 0 -0 0 0 -0 -0
      Mo. Okt 23 2017 09:52:26 (01,01) -4.0 -0 0 -0 0 0 -0 0
      Mo. Okt 23 2017 09:52:27 (01,01) -4.5 0 -0 -0 0 0 -0 0
      Mo. Okt 23 2017 09:52:27 (01,01) -5.0 -0 -0 -0 0 -0 -0 0
      Mo. Okt 23 2017 09:52:29 (01,02) -0.5 -181 -189 -133 0 -134 -186 -185
      Mo. Okt 23 2017 09:52:29 (01,02) -1.0 -184 -191 -135 0 -136 -189 -187
      Mo. Okt 23 2017 09:52:30 (01,02) -1.5 -186 -193 -136 0 -138 -191 -189
      Mo. Okt 23 2017 09:52:30 (01,02) -2.0 -187 -194 -136 0 -139 -192 -190
      Mo. Okt 23 2017 09:52:31 (01,02) -2.5 -188 -195 -137 -0 -139 -193 -191
      Mo. Okt 23 2017 09:52:31 (01,02) -3.0 -189 -196 -138 -0 -140 -194 -192
      Mo. Okt 23 2017 09:52:31 (01,02) -3.5 -189 -196 -138 0 -140 -194 -192
      Mo. Okt 23 2017 09:52:32 (01,02) -4.0 -190 -197 -139 0 -140 -195 -193
      Mo. Okt 23 2017 09:52:32 (01,02) -4.5 -190 -198 -139 0 -141 -195 -193
      Mo. Okt 23 2017 09:52:33 (01,02) -5.0 -191 -198 -139 -0 -141 -196 -194
      Mo. Okt 23 2017 09:52:34 (02,02) -0.5 -147 -159 -125 -183 -117 -173 -172
      Mo. Okt 23 2017 09:52:35 (02,02) -1.0 -151 -163 -128 -188 -120 -178 -177
      Mo. Okt 23 2017 09:52:35 (02,02) -1.5 -153 -166 -130 -191 -122 -181 -179
      Mo. Okt 23 2017 09:52:35 (02,02) -2.0 -155 -168 -131 -193 -123 -183 -181
      Mo. Okt 23 2017 09:52:36 (02,02) -2.5 -157 -170 -132 -195 -125 -185 -184
      Mo. Okt 23 2017 09:52:36 (02,02) -3.0 -158 -171 -133 -196 -125 -186 -185
      Mo. Okt 23 2017 09:52:37 (02,02) -3.5 -159 -172 -134 -197 -126 -187 -186
      Mo. Okt 23 2017 09:52:37 (02,02) -4.0 -160 -173 -134 -198 -127 -188 -187
      Mo. Okt 23 2017 09:52:38 (02,02) -4.5 -161 -174 -136 -199 -127 -189 -189
      Mo. Okt 23 2017 09:52:38 (02,02) -5.0 -162 -178 -136 -201 -128 -191 -193
      Mo. Okt 23 2017 09:52:40 (02,01) -0.5 -254 -269 -223 -331 -210 -286 -287
      Mo. Okt 23 2017 09:52:40 (02,01) -1.0 -259 -273 -226 -337 -213 -291 -291
      Mo. Okt 23 2017 09:52:41 (02,01) -1.5 -261 -276 -228 -339 -214 -294 -294
      Mo. Okt 23 2017 09:52:41 (02,01) -2.0 -264 -278 -229 -342 -216 -296 -296
      Mo. Okt 23 2017 09:52:42 (02,01) -2.5 -265 -280 -231 -343 -217 -298 -298
      Mo. Okt 23 2017 09:52:42 (02,01) -3.0 -266 -281 -231 -345 -218 -300 -300
      Mo. Okt 23 2017 09:52:43 (02,01) -3.5 -267 -282 -233 -346 -219 -301 -301
      Mo. Okt 23 2017 09:52:43 (02,01) -4.0 -268 -283 -233 -347 -219 -302 -302
      Mo. Okt 23 2017 09:52:43 (02,01) -4.5 -269 -284 -234 -348 -220 -304 -303
      Mo. Okt 23 2017 09:52:44 (02,01) -5.0 -270 -285 -235 -349 -220 -304 -304
      Mo. Okt 23 2017 10:04:55 (01,01) -0.5 -0 0 -0 -0 0 0 -0

      Ich bin so vorgegangen:

      QFile inputFile(currentPathName);
      if (inputFile.open(QFile::ReadOnly))
      		{
      			QTextStream inputStream(&inputFile);
      			while(!inputStream.atEnd())
      			{
      				 QString line = inputStream.readLine();
      				 pos1 = line.indexOf('(');
      				 line.remove(0,pos1);
      				 if(line.contains("(01,01)", Qt::CaseInsensitive))
      				 {
                                           QStringList mytlist = line.split("(01,01)", QString::SkipEmptyParts);
                                            // Bis hier habe ich z.B  diese Form:  -0.5  -158  -157  -129  -183  -124     0  -160 
                                            // Ich will dann jede String der QStringList in einem Vector einfügen z.B:
                                            // v1[-0.5],v2[-158],v3[-157],v4[-129],v5[-183],v6[-124],v7[0],v8[-160]
                                             // Beim lesen der zweiten zeile auch das gleiche tun also  z.B:
                                             // v1[-0.5,-1],v2[-158,-160],v3[-157,-190],v4[-129,-130],v5[-183,-190],v6[-124,-130],v7[0,-150],v8[-160,-165] und soweiter
      // Grund nach dem Lesen möchte ich dann die Ergebnis plotten  
      
      
                                        }
      if(line.contains("(02,02)", Qt::CaseInsensitive))
      {
      .....
      }
      .....
      ```[0_1508822555241_curve_Wafer_X_1790.log](Lade 100% hoch)
      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      @Galilio Moin, kann mir nicht helfen, aber das sieht so aus als ob du es dir zu einfach machst. Was ist überhaupt deine Frage? Weil dein Code sollte das TextFile Zeile für Zeile lesen, ohne Probleme.

      Weil ich ne Vermutung habe:

      QVector<double> stringToVector(const QString &str){
          QVector<double> vResult;
          QString s = str.split("(01,01)",QString::KeepEmptyParts).last();
          auto splitRef = s.splitRef(" ");    
          for(auto item : splitRef)
              vResult.append(QString::number(item));
      
         return vResult;
      }
      

      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.

      J.HilkJ 1 Reply Last reply
      0
      • G Offline
        G Offline
        Galilio
        wrote on last edited by
        #3

        meine Frage ist:
        Wie kann ich den oberen txt file zeile lesen und die so in einem bestimmten Form formatieren wie z.B
        if(line.contains("(01,01)", Qt::CaseInsensitive))// Hier werden 10 zeile gelesen
        v1 = [-0.5 -1 -1.5 -2 -2.5 -3 -3.5 -4 -4.5 -5]
        v2 = [-190 -150 -180 -167 -180 -165 -190 -180 -160 -150]
        v3 = [....]

        ...
        v8 = [....]
        if(line.contains("(02,02)", Qt::CaseInsensitive))
        ....

        G 1 Reply Last reply
        0
        • G Galilio

          meine Frage ist:
          Wie kann ich den oberen txt file zeile lesen und die so in einem bestimmten Form formatieren wie z.B
          if(line.contains("(01,01)", Qt::CaseInsensitive))// Hier werden 10 zeile gelesen
          v1 = [-0.5 -1 -1.5 -2 -2.5 -3 -3.5 -4 -4.5 -5]
          v2 = [-190 -150 -180 -167 -180 -165 -190 -180 -160 -150]
          v3 = [....]

          ...
          v8 = [....]
          if(line.contains("(02,02)", Qt::CaseInsensitive))
          ....

          G Offline
          G Offline
          Galilio
          wrote on last edited by
          #4

          @J-Hilk
          Ist meine Frage klar jetzt?

          1 Reply Last reply
          0
          • J.HilkJ J.Hilk

            @Galilio Moin, kann mir nicht helfen, aber das sieht so aus als ob du es dir zu einfach machst. Was ist überhaupt deine Frage? Weil dein Code sollte das TextFile Zeile für Zeile lesen, ohne Probleme.

            Weil ich ne Vermutung habe:

            QVector<double> stringToVector(const QString &str){
                QVector<double> vResult;
                QString s = str.split("(01,01)",QString::KeepEmptyParts).last();
                auto splitRef = s.splitRef(" ");    
                for(auto item : splitRef)
                    vResult.append(QString::number(item));
            
               return vResult;
            }
            
            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by
            #5

            @Galilio ja, und um mich selbst zu zitieren:

            @J.Hilk said in textFile lesen zeile für zeile:

            Weil ich ne Vermutung habe:

            QVector<double> stringToVector(const QString &str){
                QVector<double> vResult;
                QString s = str.split("(01,01)",QString::KeepEmptyParts).last();
                auto splitRef = s.splitRef(" ");    
                for(auto item : splitRef)
                    vResult.append(QString::number(item));
            
               return vResult;
            }
            

            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
            0
            • G Offline
              G Offline
              Galilio
              wrote on last edited by
              #6

              super danke
              dazu eine Frage bitte, da ich qt4 verwende kann ich "auto" gar nicht benutzen.

              J.HilkJ 1 Reply Last reply
              0
              • G Galilio

                super danke
                dazu eine Frage bitte, da ich qt4 verwende kann ich "auto" gar nicht benutzen.

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

                @Galilio auto hab ich nur der Schreibfaulheit halber geschrieben, war einige Zeichen kürzer:

                QVector<double> stringToVector(const QString &str){
                    QVector<double> vResult;
                    QString s = str.split("(01,01)",QString::KeepEmptyParts).last();
                    QVector<QStringRef>	 splitRef = s.splitRef(" ");    
                    foreach (QStringRef item, splitRef)
                        vResult.append(QString::number(item));
                
                   return vResult;
                }
                

                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.

                G 1 Reply Last reply
                0
                • J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by J.Hilk
                  #8

                  Sry, hab die falsche Funktion genommen!!!

                  Anstatt

                  vResult.append(QString::number(item));

                  sollte das

                  vResult.append(item.toDouble());

                  sein


                  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
                  0
                  • J.HilkJ J.Hilk

                    @Galilio auto hab ich nur der Schreibfaulheit halber geschrieben, war einige Zeichen kürzer:

                    QVector<double> stringToVector(const QString &str){
                        QVector<double> vResult;
                        QString s = str.split("(01,01)",QString::KeepEmptyParts).last();
                        QVector<QStringRef>	 splitRef = s.splitRef(" ");    
                        foreach (QStringRef item, splitRef)
                            vResult.append(QString::number(item));
                    
                       return vResult;
                    }
                    
                    G Offline
                    G Offline
                    Galilio
                    wrote on last edited by
                    #9

                    @J.Hilk
                    ich bekomme folgende Fehlermeldung:
                    error C2039: 'splitRef' : is not a member of 'QString'

                    Dieses fehler trifft dieses Zeile:

                     QVector<QStringRef>	 splitRef = s.splitRef(" ");  
                    
                    J.HilkJ 1 Reply Last reply
                    0
                    • G Galilio

                      @J.Hilk
                      ich bekomme folgende Fehlermeldung:
                      error C2039: 'splitRef' : is not a member of 'QString'

                      Dieses fehler trifft dieses Zeile:

                       QVector<QStringRef>	 splitRef = s.splitRef(" ");  
                      
                      J.HilkJ Offline
                      J.HilkJ Offline
                      J.Hilk
                      Moderators
                      wrote on last edited by J.Hilk
                      #10

                      @Galilio

                      This function was introduced in Qt 5.4.

                      Wusste ja nicht das du mit Qt 4 arbeitest als ich das erstellt habe. Mach aus splitRef nen split aus QVector<QStringRef> mach QStringList und aus QStringRef mach QString


                      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.

                      G 1 Reply Last reply
                      0
                      • J.HilkJ J.Hilk

                        @Galilio

                        This function was introduced in Qt 5.4.

                        Wusste ja nicht das du mit Qt 4 arbeitest als ich das erstellt habe. Mach aus splitRef nen split aus QVector<QStringRef> mach QStringList und aus QStringRef mach QString

                        G Offline
                        G Offline
                        Galilio
                        wrote on last edited by
                        #11

                        @J.Hilk
                        danke

                        1 Reply Last reply
                        0
                        • G Offline
                          G Offline
                          Galilio
                          wrote on last edited by
                          #12

                          @J-Hilk

                          Sorry noch eine Frage:
                          ich möchte auch alle leere Strings löschen.
                          z.B ich habe folgende Zeil gelesen:
                          -0.5 0 0 0 0 0 0 0
                          Zweichen jeden Wert liegen immer 3 bis 4 leere Tasten und wenn ich so schreibe :

                          QVector<double> vResult;
                          	QStringList splitList = str.split(" ");
                          
                          	foreach (QString item, splitList)
                          		vResult.append(item.toDouble());
                          	for(int i =0; i<vResult.size()-1; i++)
                          	{
                          		if(vResult[i] == 0)
                          		{
                          			vResult.remove(i);
                          		}
                          		qDebug() << "vResult[i] = "<<"i"<< i <<vResult[i];
                                         return vResult;
                          			
                          	}
                          
                          

                          dann hat das splitList eine Länge von 34 und wie ich vorgegangen bin, ist falsch.
                          Es werden nicht alle leere Taste gelöscht.
                          sorry noch mal

                          J.HilkJ 1 Reply Last reply
                          0
                          • G Galilio

                            @J-Hilk

                            Sorry noch eine Frage:
                            ich möchte auch alle leere Strings löschen.
                            z.B ich habe folgende Zeil gelesen:
                            -0.5 0 0 0 0 0 0 0
                            Zweichen jeden Wert liegen immer 3 bis 4 leere Tasten und wenn ich so schreibe :

                            QVector<double> vResult;
                            	QStringList splitList = str.split(" ");
                            
                            	foreach (QString item, splitList)
                            		vResult.append(item.toDouble());
                            	for(int i =0; i<vResult.size()-1; i++)
                            	{
                            		if(vResult[i] == 0)
                            		{
                            			vResult.remove(i);
                            		}
                            		qDebug() << "vResult[i] = "<<"i"<< i <<vResult[i];
                                           return vResult;
                            			
                            	}
                            
                            

                            dann hat das splitList eine Länge von 34 und wie ich vorgegangen bin, ist falsch.
                            Es werden nicht alle leere Taste gelöscht.
                            sorry noch mal

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

                            @Galilio Das Problem ist, wenn du split nutzt, brauchst du irgendwas, dass als Trennzeichen funktioniert. Häufig nimmt man dafür , oder ; wo auch der Begriff CSV-Datei herkommt. Comma separated Values.

                            In der Datei die du gepostet hast, konnte ich als Trennzeichen nur ein Leerzeichen aus machen. split(' ') macht dann aus zwei Leerzeichen 2 Einträge mit Leeren Strings. toDouble gibt, wenn eine Umwandlung fehlgeschlagen ist - was es bei einem leeren String tut, 0.0 wieder.

                            Das einfachste ist es wenn du das abfängst:

                                QVector<double> vResult;
                                QStringList splitList = str.split(" ");
                            
                                foreach (QString item, splitList)
                            	if(!item.isEmpty())
                            	    vResult.append(item.toDouble());
                                return vResult;
                            

                            du kannst auch eine variable dem toDouble übergeben, um zu sehen ob die Umrechnung erfolgreich war:

                                QVector<double> vResult;
                                QStringList splitList = str.split(" ");
                                bool ok;
                            
                                foreach (QString item, splitList){
                            	if(!item.isEmpty()){
                            	    vResult.append(item.toDouble(&ok));
                                        qDebug() << "String to Double erfolgreich:" << ok;
                                    }else
                                        qDebug() << "Stringlist item war leer";
                               }
                                return vResult;
                            

                            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.

                            G 1 Reply Last reply
                            0
                            • J.HilkJ J.Hilk

                              @Galilio Das Problem ist, wenn du split nutzt, brauchst du irgendwas, dass als Trennzeichen funktioniert. Häufig nimmt man dafür , oder ; wo auch der Begriff CSV-Datei herkommt. Comma separated Values.

                              In der Datei die du gepostet hast, konnte ich als Trennzeichen nur ein Leerzeichen aus machen. split(' ') macht dann aus zwei Leerzeichen 2 Einträge mit Leeren Strings. toDouble gibt, wenn eine Umwandlung fehlgeschlagen ist - was es bei einem leeren String tut, 0.0 wieder.

                              Das einfachste ist es wenn du das abfängst:

                                  QVector<double> vResult;
                                  QStringList splitList = str.split(" ");
                              
                                  foreach (QString item, splitList)
                              	if(!item.isEmpty())
                              	    vResult.append(item.toDouble());
                                  return vResult;
                              

                              du kannst auch eine variable dem toDouble übergeben, um zu sehen ob die Umrechnung erfolgreich war:

                                  QVector<double> vResult;
                                  QStringList splitList = str.split(" ");
                                  bool ok;
                              
                                  foreach (QString item, splitList){
                              	if(!item.isEmpty()){
                              	    vResult.append(item.toDouble(&ok));
                                          qDebug() << "String to Double erfolgreich:" << ok;
                                      }else
                                          qDebug() << "Stringlist item war leer";
                                 }
                                  return vResult;
                              
                              G Offline
                              G Offline
                              Galilio
                              wrote on last edited by
                              #14

                              @J.Hilk
                              vielen vielen dank

                              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