<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Größere Datei Stückweise einlesen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe eine ca. 150 MB große CSV Datei, die ich gerne Stückweise einlesen möchte. Am besten wären im Stückweise 20 Zeilen, die ich dann verarbeite und danach die nächsten 20 Zeilen lesen.</p>
<p>Ich denke, wenn ich die ganze Datei in eine StringListe lade, wird das nicht gehen. Nur habe ich keine Idee wie ich das mit dem Stückweisen einlesen machen sollte. Hat da irgendwer eine Idee?</p>
<p>jendrik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/94593/größere-datei-stückweise-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 19:02:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94593.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Dec 2004 15:00:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Fri, 10 Dec 2004 15:00:40 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe eine ca. 150 MB große CSV Datei, die ich gerne Stückweise einlesen möchte. Am besten wären im Stückweise 20 Zeilen, die ich dann verarbeite und danach die nächsten 20 Zeilen lesen.</p>
<p>Ich denke, wenn ich die ganze Datei in eine StringListe lade, wird das nicht gehen. Nur habe ich keine Idee wie ich das mit dem Stückweisen einlesen machen sollte. Hat da irgendwer eine Idee?</p>
<p>jendrik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670429</guid><dc:creator><![CDATA[Jendrik W.]]></dc:creator><pubDate>Fri, 10 Dec 2004 15:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Fri, 10 Dec 2004 16:58:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dazu kannst du ifstream aus der STL benutzen. Damit kann man ganz gezielt einzele Zeichen einlesen: Schau einfach mal in die BCB-Hilfe zu <em>ifsteam</em> bzw. <em>basic_ifstream</em>, dort ist auch ein Beispiel. Oder such einfach im C++ Forum nach ifstream...</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670480</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 10 Dec 2004 16:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Fri, 10 Dec 2004 20:12:38 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>habe mal was probiert:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;fstream&gt;
#include&lt;iomanip&gt;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   std::ifstream F1;
   char c_line[2000];
   String line;

   F1.open(EFile-&gt;Text, ios_base::in);
   while (F1.getline(c_line))
   {
      line=c_line;
   }
   F1.close();
}
</code></pre>
<p>Muss mir aber leider Fehler anhören:</p>
<p>[C++ Fehler] main.cpp(26): E2090 Qualifizierer 'ios_base' ist kein Name einer Klasse oder einer Struktur<br />
[C++ Fehler] main.cpp(26): E2121 ) fehlt beim Funktionsaufruf<br />
[C++ Fehler] main.cpp(27): E2285 Keine Übereinstimmung für 'std::istream::getline(char *)' gefunden</p>
<p>Jemand eine Idee?</p>
<p>jendrik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670583</guid><dc:creator><![CDATA[Jendrik W.]]></dc:creator><pubDate>Fri, 10 Dec 2004 20:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Fri, 10 Dec 2004 21:59:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<h2>2 Fehler :</h2>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>nach den Includes vergessen (dafür kannst du alle anderen std:: weglassen)<br />
- statt</p>
<pre><code class="language-cpp">while (F1.getline(c_line))
</code></pre>
<p>nimm</p>
<pre><code class="language-cpp">while (F1 &gt;&gt; c_line)
</code></pre>
<p>außerdem empfehle ich dir, <em>char [2000]</em> durch <em>std::string</em> (kleingeschrieben) zu ersetzen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670630</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 10 Dec 2004 21:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Sat, 11 Dec 2004 12:13:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe meinen code nun geändert um eine datei zeilen weise einzulesen. problem ist das jede eingelesene zeile nun eine länge von 2048 zeichen hat. wenn eine zeile allerdings nur mal aus wenigen wörter besteht, ist mein String einfach zu lang. Habe es mit Trim versucht um alle Leerzeichen zu kicken, das bringt aber auch keine Lösung, denn so ist jeder String 343 Zeichen lang. Was muss ich machen, damit in dem String auch nur der Text der Zeile drinnen ist und keine Leerzeichen. Habe die max Länge nur auf 2048 gesetzt, damit auch lange Zeilen eingelesen werden können.</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
   // Setup
   const int bufSize=2048;
   int zeile = 0;
   String linebuf;
   String line;
   linebuf.SetLength(bufSize);

   // Open File
   ifstream ifs(EFile-&gt;Text.c_str());
   if(ifs)
   {
      while(true)
      {
         // Stop when need
         if (abbruch == true) break;

         // Read the line
         zeile++;
         ifs.getline(linebuf.c_str(),bufSize);
         line = linebuf;
         // line = Trim(linebuf);

         // Dies hier ist immer Zulang
         Memo1-&gt;Lines-&gt;Add(line.Length());

         if (zeile == 10) break;

         // Anwendung nicht abstürzen lassen
         Application-&gt;ProcessMessages();

         // Bei Zeilenende stoppen
         if(ifs.eof())
            break;

         if(!ifs.gcount())
         {
            ShowMessage(&quot;buffer too small or non-textfile&quot;);
            break;
         }
      }

      ifs.close();
  }

}
</code></pre>
<p>Weiß irgendwie nicth weiter.</p>
<p>Jendrik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670816</guid><dc:creator><![CDATA[Jendrik W.]]></dc:creator><pubDate>Sat, 11 Dec 2004 12:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Sat, 11 Dec 2004 13:59:46 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>damit kannst du eine ganze Datei sauber zeilenweise einlesen, und bekommst noch die Anzahl Zeichen pro Zeile und die Anzahl Zeilen. Übrigens ist das kein BCB-Thema meht, sondern gehärt bereits ins C++ Forum</p>
<pre><code class="language-cpp">int zeile = 0; // Anzahl Zeilen
int charcount; // Anzahl Zeichen in aktueller Zeile
string line; // aktuelle Zeile
char Buffer; // einzelnes Zeichen zum Lesen

ifstream ifs(&quot;Test.dat&quot;); // Open File

// Alle Zeichen aus Datei lesen
while (ifs.get(Buffer))
{

  // Wenn Zeilenumbruch, Zeile abschließen und ausgeben
  if (Buffer == '\n')
  {
    Memo1-&gt;Lines-&gt;Add(IntToStr(line.size()) + &quot;:&quot; + line.c_str()); // Kontrollausgabe
    line = &quot;&quot;; // Zeile leeren
    zeile++; // Zeilenanzahl erhöhen
    }

  // Wenn kein Zeilenumbruch, Zeichen an Zeile anhängen
  else
  {
    line += Buffer;
    }
  }

// Wenn letzte Zeile vorhanden, diese ebenfalls ausgeben und berechnen
if (line != &quot;&quot;)
{
  Memo1-&gt;Lines-&gt;Add(IntToStr(line.size()) + &quot;:&quot; + line.c_str());
  line = &quot;&quot;;
  zeile++;
  }
Memo1-&gt;Lines-&gt;Add(IntToStr(zeile)); // Anzahl Zeilen ausgeben

ifs.close(); // Datei schließen
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670900</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 11 Dec 2004 13:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Sat, 11 Dec 2004 15:33:00 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Übrigens ist das kein BCB-Thema meht, sondern gehärt bereits ins C++ Forum</p>
</blockquote>
<p>Warum kramst du dann erst <em>ifstream</em> raus, anstatt z.B. <em>TFileStream</em> vorzuschlagen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/670958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670958</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sat, 11 Dec 2004 15:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Sat, 11 Dec 2004 15:38:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Warum kramst du dann erst ifstream raus, anstatt z.B. TFileStream vorzuschlagen?</p>
</blockquote>
<p>Okay, das ganze kann man auch mit TFileStream umzusetzen sein (sollte recht ähnlich sein, habe mal die Funktion überflogen).<br />
ifstream hat natürlich den Vorteil, das man etwas Standard-C++ lernt, das man auch auf anderen Compilern/ Platformen anwenden kann.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670962</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 11 Dec 2004 15:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Wed, 12 Jan 2005 10:01:48 GMT]]></title><description><![CDATA[<p>Hallo akari,</p>
<p>ich wollte eben mal deinen code ausprobieren. Leider bekomme ich eine Fehlermelung bei folgender Zeile:</p>
<pre><code class="language-cpp">Memo1-&gt;Lines-&gt;Add(IntToStr(line.size()) + &quot;:&quot; + line.c_str());
</code></pre>
<p>Die Fehlermeldung lautet: 'size' ist kein Element von 'AniString'.</p>
<p>Habe ich da was falsch gemacht oder liegt der Fehler bei deinem Code.</p>
<p>Vielleicht könntest mir da weiterhelfen. Wäre super.</p>
<p>Gruß<br />
EPMS</p>
]]></description><link>https://www.c-plusplus.net/forum/post/693987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/693987</guid><dc:creator><![CDATA[EPMS]]></dc:creator><pubDate>Wed, 12 Jan 2005 10:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Wed, 12 Jan 2005 11:02:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>statt size() mußt du Length() nehmen. Steht aber auch in der BCB-Hilfe.<br />
(in meinem Beispiel hatte ich string statt AnsiString/String genommen. Das ist nicht das selbe, aber du kannst auch das nehmen)</p>
<p>/edit : Beim nochmal durchlesen des Threads stelle ich fest, das du eher AnsiString/String durch string ersetzen solltest</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/694046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/694046</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 12 Jan 2005 11:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Wed, 12 Jan 2005 12:21:32 GMT]]></title><description><![CDATA[<p>Also da das hier das BCB-Forum ist, würde ich die Verwendung von AnsiString und TFileStream empfehlen. (ich will nix über C(++)-Konformität oder Standard-C(++) hören - sonst hätte ich mir wohl kaum den BCB zugelegt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ).</p>
<p>Desweiteren ist das zeichenweise Einlesen einer Datei quälend langsam. Sinnvoller ist, größere Stücke der Datei in einen Puffer einzulesen, und den Puffer auszuwerten.</p>
<p>Wie das geht, hab' ich hier schon mal irgendwo gepostet. Such mal nach TFileStream.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/694115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/694115</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 12 Jan 2005 12:21:32 GMT</pubDate></item><item><title><![CDATA[Reply to Größere Datei Stückweise einlesen on Wed, 12 Jan 2005 13:25:52 GMT]]></title><description><![CDATA[<p>Ich danke euch beiden.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>, hat wunderbar geklappt.<br />
@Joe_M., werde mir mal TFileStream anschauen.</p>
<p>Danke schön<br />
Gruß<br />
EPMS</p>
]]></description><link>https://www.c-plusplus.net/forum/post/694189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/694189</guid><dc:creator><![CDATA[EPMS]]></dc:creator><pubDate>Wed, 12 Jan 2005 13:25:52 GMT</pubDate></item></channel></rss>