<?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[Datei einlesen Vereinfachen]]></title><description><![CDATA[<p>Moin, Moin ihr leut,<br />
hab da ma ne frage.<br />
Ich habe ein kleines Programm geschrieben, welches daten in ein Array Speichert.<br />
Klappt auch alles wunderbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
jetzt hab ich das programm erweitert, das ich den Inhalt des Arrays in eine Datei speichere. Klappt auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Jetzt zum Öffnen der Datei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Quellcode:</p>
<pre><code>void __fastcall TMain_Frame::Oeffnen(TObject *Sender)
{

char zeile[MCHAR];
AnsiString platz1;
double platz2;
int platz3;
int i=0, x=0;

istrstream eingabe (zeile,MCHAR);
ifstream datei (&quot;save.csv&quot;);

if(datei)
{
datei.getline(zeile,MCHAR);
eingabe.getline(zeile,MCHAR);

while(!datei.eof())
{
Daten[i].nname=&quot;&quot;;
Daten[i].vname=&quot;&quot;;
x++;
        for(int j=0;j&lt;=MCHAR; j++) //Vorname
        {
                if(zeile[j] == ';')
                {
                        for(int k=j+1; k&lt;=MCHAR;k++) //Nachname
                        {
                                if(zeile[k] == ';')
                                {
                                        platz1=&quot;&quot;;
                                        for(int l=k+1;l&lt;=MCHAR;l++) //Betriebszugehörigkeit
                                        {
                                                if(zeile[l] == ';')
                                                {
                                                        platz1=&quot;&quot;;
                                                        for(int m=l+1;m&lt;=MCHAR;m++) //Gehalt
                                                        {
                                                                if(zeile[m] == ';') break; //Abbruch für m-Schleife
                                                                else {
                                                                        platz1 = platz1+ zeile[m];
                                                                        Daten[i].ggehalt = StrToFloat(platz1);
                                                                     }
                                                        } break; //Abbruch für l-Schleife
                                                } else { platz1 = platz1 + zeile[l];
                                                         Daten[i].zeit = StrToInt(platz1); }
                                        } break; //Abbruch für k-Schleife
                                } else Daten[i].nname = Daten[i].nname + zeile[k];
                        } break; //Abbruch für j-Schleife
                } else Daten[i].vname = Daten[i].vname + zeile[j];
        }
datei.getline(zeile, MCHAR);
fkt_berechnen(i, false);
i++;}
datei.close(); }
Main_Frame-&gt;ScrollBar1-&gt;Position=2;
Main_Frame-&gt;ScrollBar1-&gt;Position=1;
}
</code></pre>
<p>geht das auch einfacher... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Datensätze sind immer durch ein Semikolon (;) getrennt.</p>
<p>Danke, MFG ARO</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/138993/datei-einlesen-vereinfachen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 18:22:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/138993.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Mar 2006 20:29:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei einlesen Vereinfachen on Thu, 02 Mar 2006 20:29:34 GMT]]></title><description><![CDATA[<p>Moin, Moin ihr leut,<br />
hab da ma ne frage.<br />
Ich habe ein kleines Programm geschrieben, welches daten in ein Array Speichert.<br />
Klappt auch alles wunderbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
jetzt hab ich das programm erweitert, das ich den Inhalt des Arrays in eine Datei speichere. Klappt auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Jetzt zum Öffnen der Datei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Quellcode:</p>
<pre><code>void __fastcall TMain_Frame::Oeffnen(TObject *Sender)
{

char zeile[MCHAR];
AnsiString platz1;
double platz2;
int platz3;
int i=0, x=0;

istrstream eingabe (zeile,MCHAR);
ifstream datei (&quot;save.csv&quot;);

if(datei)
{
datei.getline(zeile,MCHAR);
eingabe.getline(zeile,MCHAR);

while(!datei.eof())
{
Daten[i].nname=&quot;&quot;;
Daten[i].vname=&quot;&quot;;
x++;
        for(int j=0;j&lt;=MCHAR; j++) //Vorname
        {
                if(zeile[j] == ';')
                {
                        for(int k=j+1; k&lt;=MCHAR;k++) //Nachname
                        {
                                if(zeile[k] == ';')
                                {
                                        platz1=&quot;&quot;;
                                        for(int l=k+1;l&lt;=MCHAR;l++) //Betriebszugehörigkeit
                                        {
                                                if(zeile[l] == ';')
                                                {
                                                        platz1=&quot;&quot;;
                                                        for(int m=l+1;m&lt;=MCHAR;m++) //Gehalt
                                                        {
                                                                if(zeile[m] == ';') break; //Abbruch für m-Schleife
                                                                else {
                                                                        platz1 = platz1+ zeile[m];
                                                                        Daten[i].ggehalt = StrToFloat(platz1);
                                                                     }
                                                        } break; //Abbruch für l-Schleife
                                                } else { platz1 = platz1 + zeile[l];
                                                         Daten[i].zeit = StrToInt(platz1); }
                                        } break; //Abbruch für k-Schleife
                                } else Daten[i].nname = Daten[i].nname + zeile[k];
                        } break; //Abbruch für j-Schleife
                } else Daten[i].vname = Daten[i].vname + zeile[j];
        }
datei.getline(zeile, MCHAR);
fkt_berechnen(i, false);
i++;}
datei.close(); }
Main_Frame-&gt;ScrollBar1-&gt;Position=2;
Main_Frame-&gt;ScrollBar1-&gt;Position=1;
}
</code></pre>
<p>geht das auch einfacher... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Datensätze sind immer durch ein Semikolon (;) getrennt.</p>
<p>Danke, MFG ARO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007135</guid><dc:creator><![CDATA[Arogarth]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen Vereinfachen on Thu, 02 Mar 2006 21:40:06 GMT]]></title><description><![CDATA[<p>Ein Ansatz mit TStringList:</p>
<pre><code class="language-cpp">// Beispielzeile aus datei.csv
  // Name;Vorname;Alter
  String Daten[3][100];

  TStringList *list = new TStringList();
  list-&gt;LoadFromFile(&quot;datei.csv&quot;);
  TStringList *line = new TStringList();
  line-&gt;Delimiter = ';';
  for (int y = 0; y &lt; list-&gt;Count; y++)     // Zeilen abklappern
  {
    line-&gt;DelimitedText = list-&gt;Strings[y]; // aktuelle Zeile einlesen
    for (int x = 0; x &lt; line-&gt;Count; x++)   
      Daten[x][y] = line-&gt;Strings[x];          // Zeile aufsplitten
  }
  delete line;
  delete list;
</code></pre>
<p>DelimitedText und Delimiter gibt es allerdings erst ab BCB6. In früheren Versionen liesse sich CommaText verwenden, das ist aber, da auf Kommas als Trennzeichen beschränkt, nicht ganz so elagant einzusetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007180</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 02 Mar 2006 21:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen Vereinfachen on Fri, 03 Mar 2006 13:29:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Eine Alternative wäre die Verwendung von std::string statt char* oder AnsiString. Hier gibt es z.Bsp die Funktion find und substr.<br />
Also</p>
<pre><code class="language-cpp">string zeile;
ifstream datei (&quot;save.csv&quot;);

if(datei)
{
getline(datei,zeile); // Zeile einlesen

while(!datei.eof())
{
   size_t pos = zeile.find(0,&quot;;&quot;); // erstes ; suchen und Position zurückgeben
   if( pos != string::npos ) // Zeichen gefunden ?
   {
       string first = zeile.substr(0,pos-1);
       size_t pos2 = zeile.find(pos+1,&quot;;&quot;); // zweites; suchen und Position zurückgeben
       if( pos2 != string::npos ) // Zeichen gefunden ?
       {
           string first = zeile.substr(pos+1,pos2-1);
// usw.
       }
    }
}
</code></pre>
<p>Dies ist natürlich nicht vollständig. Du mußt das noch anpassen.<br />
Man könnte natürlich auch eine Funktion schreiben, die einen gegebenen String an Semikolons aufteilt.<br />
Hier mal ein Beispiel</p>
<pre><code class="language-cpp">int DivideString(const string &amp;src, vector&lt;string&gt; &amp;res, char delim)
{
  res.clear();
  if( src.empty() ) return 0;
  vector&lt;string::size_type&gt; posvect;
  string::size_type pos(0);
  while( (pos = src.find(delim,pos)) != string::npos )
  {
       posvect.push_back(pos);
       pos++;
  }
  if( posvect.size() == 0)
  {
      res.push_back(src);
      return 1;
  }
  if( posvect[0] == 0 ) res.push_back(&quot;&quot;);
  else res.push_back(src.substr(0,posvect[0]));
  for( vector&lt;string::size_type&gt;::iterator it = posvect.begin() ; it != posvect.end()-1; ++it)
  {
       if( *it+1 == *(it+1)) res.push_back(&quot;&quot;);
       else res.push_back(src.substr(*it+1, *(it+1) - *it - 1));
  }
  res.push_back(src.substr(posvect.back()+1, src.length() - posvect.back()));
  return res.size();
}
</code></pre>
<p>Bei dir würde in delim ';' stehen und dann in res die Einzelstrings.</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007644</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen Vereinfachen on Sat, 04 Mar 2006 13:19:37 GMT]]></title><description><![CDATA[<p>ABA, kann mir mal jemand erklären, wofür die einzelnen Zeilen sind?</p>
<p>Haputschächlich</p>
<pre><code class="language-cpp">TStringList *list = new TStringList();
  list-&gt;LoadFromFile(&quot;save.csv&quot;);
  TStringList *line = new TStringList();
  line-&gt;Delimiter = ';';
</code></pre>
<p>die zweite und die letzte Zeile kann ich mir ja noch erklaeren, aber die andern Beiden Zeilen leider nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Bitte um hilfe... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>MFG ARO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008408</guid><dc:creator><![CDATA[Arogarth]]></dc:creator><pubDate>Sat, 04 Mar 2006 13:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen Vereinfachen on Sat, 04 Mar 2006 13:58:34 GMT]]></title><description><![CDATA[<p>Da werden Instanzen der Klasse TStringList erstellt und entsprechend Speicher reserviert. In eine Liste wird die komplette Datei geladen, die andere dient als Puffer für die einzelnen Zeilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008455</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sat, 04 Mar 2006 13:58:34 GMT</pubDate></item></channel></rss>