<?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[stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen]]></title><description><![CDATA[<p>hallo Ihr,</p>
<p>hab wiedermal ein kleines Problem <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="😉"
    /> und zwar hab ich eine Stringliste in der ich etwas hinzufügen will, an der nächsten freien Stelle wo nichts drin steht um genau zu sein habs mit einer for schleife versucht wo der erste Wert jeweils in einen AnsiString geladen wird un geschaut wird ob er leer ist, scheint aber irgendwie nicht zu funktionieren als erstes hat er es immer ans ende geschmissen jetzt bin ich an der 20stelle angelangt <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="🙂"
    /> woran kann das liegen gibts eine vorgegebene funktion um zu wissen ob die zelle leer ist?</p>
<p>greetz<br />
hck</p>
<pre><code class="language-cpp">//--&gt; Wiedervorlage bzw. TStringList wird gefüllt...
//Wiedervorlage vorbereiten / füllen
#define SIZEOF_BUFFER 1024
FILE *fp;
int row;
char *buffer=new char[SIZEOF_BUFFER];

// Datei zum Lesen öffnen
if((fp=fopen(&quot;c:\\wv.txt&quot;, &quot;r&quot;))==NULL)
{   ShowMessage(&quot;Datei konnte nicht geöffnet werden&quot;);
    delete buffer;
    return;
}

// Griddaten einlesen
for(row=0; fgets(buffer, SIZEOF_BUFFER, fp); row++)
    sg_wv2-&gt;Rows[row]-&gt;CommaText=buffer;

fclose(fp);
delete buffer;
//Füllen ist fertig

----------------------------

//neue wiedervorlage in StringList einfügen
AnsiString tst;
int rl,rl2;

 for(int ui;ui&lt;50;ui++)
 {
 tst = sg_wv2-&gt;Cells[0][ui];
 rl = tst.AnsiPos(&quot; &quot;);
  if(rl == 1)                                 //besagte Schleife
   rl2 = ui;
   ui = 49;
 }

sg_wv2-&gt;Cells[0][rl2-1] = e_wvdatum-&gt;Text;
sg_wv2-&gt;Cells[1][rl2-1] = e_wvuhrzeit-&gt;Text;
sg_wv2-&gt;Cells[2][rl2-1] = e_wvnotiz-&gt;Text;
sg_wv2-&gt;Cells[3][rl2-1] = Edit1-&gt;Text;
sg_wv2-&gt;Cells[4][rl2-1] = Edit2-&gt;Text;       //An dieser Stelle Dateneintrag      
sg_wv2-&gt;Cells[5][rl2-1] = Edit3-&gt;Text;
sg_wv2-&gt;Cells[6][rl2-1] = Edit4-&gt;Text;
sg_wv2-&gt;Cells[7][rl2-1] = Edit5-&gt;Text;
sg_wv2-&gt;Cells[8][rl2-1] = Edit6-&gt;Text;
sg_wv2-&gt;Cells[9][rl2-1] = Edit7-&gt;Text;

FILE *fo;
int rows, rowscount;

rowscount=sg_wv2-&gt;RowCount;

// Datei zum Schreiben öffnen
if((fo=fopen(&quot;c:\\wv.txt&quot;, &quot;w&quot;))==NULL)
{   ShowMessage(&quot;Datei konnte nicht geöffnet werden&quot;);
    return;
}

// Griddaten schreiben                                       //Daten speichern
for(rows=0; rows&lt;rowscount; rows++)
{   fputs(sg_wv2-&gt;Rows[rows]-&gt;CommaText.c_str(), fo);     
    fputc('\n', fo);
}

fclose(fo);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/166351/stringlist-speichern-laden-hinzufügen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 22:35:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166351.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Nov 2006 14:01:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:02:01 GMT]]></title><description><![CDATA[<p>hallo Ihr,</p>
<p>hab wiedermal ein kleines Problem <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="😉"
    /> und zwar hab ich eine Stringliste in der ich etwas hinzufügen will, an der nächsten freien Stelle wo nichts drin steht um genau zu sein habs mit einer for schleife versucht wo der erste Wert jeweils in einen AnsiString geladen wird un geschaut wird ob er leer ist, scheint aber irgendwie nicht zu funktionieren als erstes hat er es immer ans ende geschmissen jetzt bin ich an der 20stelle angelangt <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="🙂"
    /> woran kann das liegen gibts eine vorgegebene funktion um zu wissen ob die zelle leer ist?</p>
<p>greetz<br />
hck</p>
<pre><code class="language-cpp">//--&gt; Wiedervorlage bzw. TStringList wird gefüllt...
//Wiedervorlage vorbereiten / füllen
#define SIZEOF_BUFFER 1024
FILE *fp;
int row;
char *buffer=new char[SIZEOF_BUFFER];

// Datei zum Lesen öffnen
if((fp=fopen(&quot;c:\\wv.txt&quot;, &quot;r&quot;))==NULL)
{   ShowMessage(&quot;Datei konnte nicht geöffnet werden&quot;);
    delete buffer;
    return;
}

// Griddaten einlesen
for(row=0; fgets(buffer, SIZEOF_BUFFER, fp); row++)
    sg_wv2-&gt;Rows[row]-&gt;CommaText=buffer;

fclose(fp);
delete buffer;
//Füllen ist fertig

----------------------------

//neue wiedervorlage in StringList einfügen
AnsiString tst;
int rl,rl2;

 for(int ui;ui&lt;50;ui++)
 {
 tst = sg_wv2-&gt;Cells[0][ui];
 rl = tst.AnsiPos(&quot; &quot;);
  if(rl == 1)                                 //besagte Schleife
   rl2 = ui;
   ui = 49;
 }

sg_wv2-&gt;Cells[0][rl2-1] = e_wvdatum-&gt;Text;
sg_wv2-&gt;Cells[1][rl2-1] = e_wvuhrzeit-&gt;Text;
sg_wv2-&gt;Cells[2][rl2-1] = e_wvnotiz-&gt;Text;
sg_wv2-&gt;Cells[3][rl2-1] = Edit1-&gt;Text;
sg_wv2-&gt;Cells[4][rl2-1] = Edit2-&gt;Text;       //An dieser Stelle Dateneintrag      
sg_wv2-&gt;Cells[5][rl2-1] = Edit3-&gt;Text;
sg_wv2-&gt;Cells[6][rl2-1] = Edit4-&gt;Text;
sg_wv2-&gt;Cells[7][rl2-1] = Edit5-&gt;Text;
sg_wv2-&gt;Cells[8][rl2-1] = Edit6-&gt;Text;
sg_wv2-&gt;Cells[9][rl2-1] = Edit7-&gt;Text;

FILE *fo;
int rows, rowscount;

rowscount=sg_wv2-&gt;RowCount;

// Datei zum Schreiben öffnen
if((fo=fopen(&quot;c:\\wv.txt&quot;, &quot;w&quot;))==NULL)
{   ShowMessage(&quot;Datei konnte nicht geöffnet werden&quot;);
    return;
}

// Griddaten schreiben                                       //Daten speichern
for(rows=0; rows&lt;rowscount; rows++)
{   fputs(sg_wv2-&gt;Rows[rows]-&gt;CommaText.c_str(), fo);     
    fputc('\n', fo);
}

fclose(fo);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1183083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183083</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:19:29 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>kommt davon, wenn man C und VCL miteinander mischt.</p>
<p>Jedenfalls schmeiß die ganzen c-Funktionen (<em>fopen, fputs...</em>) raus und benutz die Mittel der VCL. Mit einer <em>TStringList</em> ist das ganze viel kürzer und übersichtlicher.</p>
<p>/Edit : und zum eigentlichen Thema :</p>
<pre><code class="language-cpp">for(int ui;ui&lt;50;ui++) // ui wird nicht initialisiert
 {
 tst = sg_wv2-&gt;Cells[0][ui];
 rl = tst.AnsiPos(&quot; &quot;); // Das überprüft nicht, ob tst leer ist!
  if(rl == 1) // Wenn ein Schleifenkörper                               mehrere Anweisungen hat, must du diese in {...} einschließen, sonst wird nur die erste ausgeführt
   rl2 = ui;
   ui = 49;
 }
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183094</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:18:57 GMT]]></title><description><![CDATA[<p>ok ist rausgeschmissen jetzt macht er es an die letzte stelle allerdings nur beim ersten mal danach werde die werte einfach immer nur überschrieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183102</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:20:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>schau dir nochmal mein Edit vom letzten Post an.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183104</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:31:51 GMT]]></title><description><![CDATA[<p>hab die schleife mal umgeschrieben --&gt;</p>
<pre><code class="language-cpp">for(int ui=0;ui&lt;50;ui++)
 {
 tst = sg_wv2-&gt;Cells[0][ui];
  if(tst.IsEmpty() == true)
   {rl2 = ui;ui = 50;}
 }
</code></pre>
<p>mitdem selben ergebnis das letzt gespeicherte wird überschrieben --&gt; bzw. auch nich direkt unter den anderen einträgen gelistet sondern irgendwo im stringgrid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183111</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:44:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>sorry ich habe den Überblick verloren, was du eigentlich machen willst und wo genau dein Problem ist.<br />
Poste nochmal deinen aktuellen, relevanten Code und beschreib dein Problem verständlicher. Am besten mit Beispiel.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183121</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 14:59:17 GMT]]></title><description><![CDATA[<p>sry <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>und zwar möchte ich ne art wiedervorlage machen mit datum, uhrzeit un nen kleinen text. das laden der wiedervorlage is kein problem, sondern in dem fall das auslesen und neu speichern --&gt; angenommen den fall ich möchte &quot;24.12.2006,<br />
10:00, Weihnachtskarten verschicken, Herr Alfred, Gurke, Strasse, PLZ, etc&quot; eintragen macht er das ganze ohne Probleme allerdings an einer komplett falschen stelle die schleife soll ja prüfen ob die erste zelle eines datensatzes leer, wenn nicht geht er weiter, ist sie leer soll schleife abgebrochen werden un in die aktuelle zelle der text reingeschrieben werden.</p>
<p>komischerweise schreibt er den datensatz nicht unter den vorhandenen sondern irgendwo im stringgrid rein (schleife hat also im endeffekt keine/kaum wirkung), bei nochmaligen aufrufen des formulars wird der letzt gespeicherte datensatz überschrieben...<br />
hoffe das war halbwegs verständlich.</p>
<pre><code class="language-cpp">AnsiString tst;
int rl,rl2;

 for(int ui=0;ui&lt;50;ui++)
 {
 tst = sg_wv2-&gt;Cells[0][ui];
  if(tst.IsEmpty() == true)   // Schleife Überprüfung ob zelle leer ist
   {rl2 = ui;ui = 49;}
 }

sg_wv2-&gt;Cells[0][rl2-1] = e_wvdatum-&gt;Text;
sg_wv2-&gt;Cells[1][rl2-1] = e_wvuhrzeit-&gt;Text;
sg_wv2-&gt;Cells[2][rl2-1] = e_wvnotiz-&gt;Text;
sg_wv2-&gt;Cells[3][rl2-1] = Edit1-&gt;Text;
sg_wv2-&gt;Cells[4][rl2-1] = Edit2-&gt;Text;
sg_wv2-&gt;Cells[5][rl2-1] = Edit3-&gt;Text;           // Datensatz wird geschrieben
sg_wv2-&gt;Cells[6][rl2-1] = Edit4-&gt;Text;
sg_wv2-&gt;Cells[7][rl2-1] = Edit5-&gt;Text;
sg_wv2-&gt;Cells[8][rl2-1] = Edit6-&gt;Text;
sg_wv2-&gt;Cells[9][rl2-1] = Edit7-&gt;Text;

TStringList *list = new TStringList();

list-&gt;Add(sg_wv2-&gt;ColCount);
for (int y = 0; y &lt; sg_wv2-&gt;RowCount; y++)
   list-&gt;Add(sg_wv2-&gt;Rows[y]-&gt;CommaText);

list-&gt;SaveToFile(&quot;c:\\wv.txt&quot;);
delete list;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1183129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183129</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 14:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 15:34:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">rl2 = sg_wv2-&gt;RowCount; // Startwert
for(int ui=0;ui&lt;sg_wv2-&gt;RowCount;ui++) // keine absolute Grenze, sondern eben alle Zeilen
 {
  if(sg_wv2-&gt;Cells[0][ui].IsEmpty())   // String nicht kopieren, Bedingung verbessert
  { 
    rl2 = ui; 
    break; // automatischer abbruch
  }
 }

if (rl2 == sg_wv2-&gt;RowCount)
{
  // etwas machen, wenn keine leere Zeile gefunden wurde
}
else
{
  sg_wv2-&gt;Cells[0][rl2] = e_wvdatum-&gt;Text; // kein -1
  ...
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183157</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Nov 2006 15:34:42 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 16:04:49 GMT]]></title><description><![CDATA[<p>öhhhhhm darauf wär ich nicht gekommen <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="😉"
    /> funzt bloß so wie du es geschrieben hast nicht hab da jetzt noch eine kleine Anpassung vorgenommen und es läuft einwandfrei für jemanden den interessiert noch kurz quelltext.</p>
<p>danke akari!!!</p>
<pre><code class="language-cpp">AnsiString tst;
int rl2;

for(int ui=0;ui&lt;sg_wv2-&gt;RowCount;ui++)
 {
  tst = sg_wv2-&gt;Cells[0][ui];
  tst = tst.Trim();
  if(tst.IsEmpty() == true)
  {
    rl2 = ui;
    break;
  }
 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1183195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183195</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 16:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 16:08:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das liegt eben, das &quot;ist leer&quot; und &quot;scheint leer zu sein&quot; nicht das gleiche ist.<br />
Leerzeichen sind eben auch Zeichen. Hättest du von Anfang an gesagt, das in den Zellen auch Leerzeichen sein können, die als leer gelten, hät ich das so geschrieben <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>
<pre><code class="language-cpp">for(int ui=0;ui&lt;sg_wv2-&gt;RowCount;ui++)
 {
  if(sg_wv2-&gt;Cells[0][ui].Trim().IsEmpty())
  {
    rl2 = ui;
    break;
  }
 }
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183197</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Nov 2006 16:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to stringlist &#x2F; speichern &#x2F; laden &#x2F; hinzufügen on Tue, 28 Nov 2006 16:19:03 GMT]]></title><description><![CDATA[<p>naja die leerzeichen dürften ja nur durch die vcl speicherweise kommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>meine datei sieht so aus deswegen, hab ich mir gedacht versuch ich das mal ^^</p>
<p>10<br />
Datum,Uhrzeit,Text,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;<br />
27.11.2006,13:18:20,&quot;keine ahnung was denkst klappt?&quot;,Cosimo,Abbruzzese,&quot;*** 3&quot;,<strong><strong>,40822,</strong></strong>,****2<br />
&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183206</guid><dc:creator><![CDATA[heckticker]]></dc:creator><pubDate>Tue, 28 Nov 2006 16:19:03 GMT</pubDate></item></channel></rss>