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

Limitierte Dateigröße

Scheduled Pinned Locked Moved German
5 Posts 2 Posters 1.9k Views 1 Watching
  • 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.
  • gijaG Offline
    gijaG Offline
    gija
    wrote on last edited by
    #1

    Hallo zusammen :)

    ich habe ein Problem während dem Schreiben von Textdateien und hoffe, dass Ihr mir helfen könnt.
    Und zwar schreibe ich ganz simpel meine Textdatei mithilfe QTextStream, wie im folgenden Code dargestellt. (in Linux)

    QFile txt_datei(&dateipfad);
    if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text))
                return;
    QTextStream out(&txt_datei);
    out << "Zeile...";
    
    txt_datei.close();
    

    Das funktioniert auch wunderbar jedoch tritt bei einer Dateigröße von ca. 16,5kB der Fall auf, dass die letzte Zeile überschrieben wird. Das heißt ab 16,5kB wird die Datei nicht mehr beschrieben bzw. nur noch überschrieben.

    Die Datei soll aber (beliebig) groß werden und nicht bei 16kB stoppen.

    Ich hoffe ich konnte euch mein Problem gut schildern.
    Danke für eure Mühe :)

    Viele Grüße

    K 1 Reply Last reply
    0
    • gijaG gija

      Hallo zusammen :)

      ich habe ein Problem während dem Schreiben von Textdateien und hoffe, dass Ihr mir helfen könnt.
      Und zwar schreibe ich ganz simpel meine Textdatei mithilfe QTextStream, wie im folgenden Code dargestellt. (in Linux)

      QFile txt_datei(&dateipfad);
      if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text))
                  return;
      QTextStream out(&txt_datei);
      out << "Zeile...";
      
      txt_datei.close();
      

      Das funktioniert auch wunderbar jedoch tritt bei einer Dateigröße von ca. 16,5kB der Fall auf, dass die letzte Zeile überschrieben wird. Das heißt ab 16,5kB wird die Datei nicht mehr beschrieben bzw. nur noch überschrieben.

      Die Datei soll aber (beliebig) groß werden und nicht bei 16kB stoppen.

      Ich hoffe ich konnte euch mein Problem gut schildern.
      Danke für eure Mühe :)

      Viele Grüße

      K Offline
      K Offline
      koahnig
      wrote on last edited by
      #2

      @gija
      Hallo
      dein Problem ist generell ausreichend beschrieben, aber dein Beispielcode kann keine 16 kB schreiben.

      Meine Annahme ist, dass du die Datei nur einmal öffnest und dann mit einer Schleife in irgendeiner Form, da hineinschreibst.

      Versuche es einmal mit:

      QFile txt_datei(&dateipfad);
      if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text))
                  return;
      QTextStream out(&txt_datei);
      
      for ( unisgned i = 0; i < 16500000; ++i ) 
      {
          QString str; 
          out << qSetFieldWidth(10) << "Zeile..." << i;
      }
      
      txt_datei.close();
      

      Ich gehe davon aus, dass alle Zeilen die gleiche Länge haben. Bin mir aber nicht sicher, da ich normalerweise nicht QTextStream verwende.

      Vote the answer(s) that helped you to solve your issue(s)

      gijaG 1 Reply Last reply
      0
      • K koahnig

        @gija
        Hallo
        dein Problem ist generell ausreichend beschrieben, aber dein Beispielcode kann keine 16 kB schreiben.

        Meine Annahme ist, dass du die Datei nur einmal öffnest und dann mit einer Schleife in irgendeiner Form, da hineinschreibst.

        Versuche es einmal mit:

        QFile txt_datei(&dateipfad);
        if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text))
                    return;
        QTextStream out(&txt_datei);
        
        for ( unisgned i = 0; i < 16500000; ++i ) 
        {
            QString str; 
            out << qSetFieldWidth(10) << "Zeile..." << i;
        }
        
        txt_datei.close();
        

        Ich gehe davon aus, dass alle Zeilen die gleiche Länge haben. Bin mir aber nicht sicher, da ich normalerweise nicht QTextStream verwende.

        gijaG Offline
        gijaG Offline
        gija
        wrote on last edited by
        #3

        @koahnig

        Erstmal danke fürs Antworten ;)

        Genau der Beispielcode ist nur ein kleiner Auszug wie ich prinzipiell in eine Textdatei schreibe.
        Der Code wird in einem Zyklus aufgerufen. Bedeutet ich öffne die Datei, schreibe eine Zeile und schließe sie wieder. Und dass passiert in einem definierten Zyklus, sodass die 16kB irgendwann erreicht werden, wenn du verstehst was ich meine. :)

        Mein Problem ist, dass das Schreiben bei 16kB stoppt - ich die Datei jedoch bspw. bis 1 MB beschreiben möchte.

        Was benutzt du denn statt QTextStream? :)

        Viele Grüße

        K 1 Reply Last reply
        0
        • gijaG gija

          @koahnig

          Erstmal danke fürs Antworten ;)

          Genau der Beispielcode ist nur ein kleiner Auszug wie ich prinzipiell in eine Textdatei schreibe.
          Der Code wird in einem Zyklus aufgerufen. Bedeutet ich öffne die Datei, schreibe eine Zeile und schließe sie wieder. Und dass passiert in einem definierten Zyklus, sodass die 16kB irgendwann erreicht werden, wenn du verstehst was ich meine. :)

          Mein Problem ist, dass das Schreiben bei 16kB stoppt - ich die Datei jedoch bspw. bis 1 MB beschreiben möchte.

          Was benutzt du denn statt QTextStream? :)

          Viele Grüße

          K Offline
          K Offline
          koahnig
          wrote on last edited by koahnig
          #4

          @gija

          QFile txt_datei(&dateipfad);
          if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append))
                      return;
          

          Wenn du die Datei immer öffnest und wieder schliesst, fehlt wohl das Append flag. Ansonsten müsste der File Pointer immer am Anfang stehen. Wie deine 16.5 kB dabei zustande kommen, müsstest du selbst wissen. Ich würde erwarten, dass du immer nur die zuletzt geschriebene Zeile in der Datei findest.
          So wäre es auf jeden Fall beim Standardstreamhandling. Das sollte aber bei Qt wohl genauso laufen.

          Vote the answer(s) that helped you to solve your issue(s)

          gijaG 1 Reply Last reply
          0
          • K koahnig

            @gija

            QFile txt_datei(&dateipfad);
            if (!txt_datei.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append))
                        return;
            

            Wenn du die Datei immer öffnest und wieder schliesst, fehlt wohl das Append flag. Ansonsten müsste der File Pointer immer am Anfang stehen. Wie deine 16.5 kB dabei zustande kommen, müsstest du selbst wissen. Ich würde erwarten, dass du immer nur die zuletzt geschriebene Zeile in der Datei findest.
            So wäre es auf jeden Fall beim Standardstreamhandling. Das sollte aber bei Qt wohl genauso laufen.

            gijaG Offline
            gijaG Offline
            gija
            wrote on last edited by
            #5

            @koahnig

            Habe den Append-Flag noch hinzugefügt und jetzt läuft es. :)
            Hatte es mit Append schon probiert gehabt, allerding ohne den Text-Flag.

            Wie auch immer es geht jetzt ;)

            Vielen Dank für deine Hilfe :)

            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