<?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[Spezielles Abspeichern eines TStringGrids]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich speichere bis jetzt ein TStringGrid folgendermaßen ab:</p>
<pre><code class="language-cpp">TStringList *list = new TStringList();
list-&gt;Add(StringGrid1-&gt;ColCount);

for (int i = 0; i &lt; StringGrid1-&gt;RowCount; i++)
   list-&gt;Add(StringGrid1-&gt;Rows[i]-&gt;CommaText);

list-&gt;SaveToFile(&quot;D:\\test.txt&quot;);
delete list;
</code></pre>
<p>Der Eintrag in &quot;test.txt&quot; sieht dann zum Beispiel so aus:</p>
<pre><code>3
1,1,1
-5,4,-30
-4.32,45.921,-200.11
</code></pre>
<p>Kann ich denn das ganze so abspeichern, dass eine Art Blocksatz entsteht bzw. das alle Kommata untereinander stehen?</p>
<p>Bsp:</p>
<pre><code>3
    1,     1,      1
   -5,     4,    -30
-4.32,45.921,-200.11
</code></pre>
<p>Danke und liebe Grüße</p>
<p>Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188238/spezielles-abspeichern-eines-tstringgrids</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 22:21:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188238.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Jul 2007 14:16:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Spezielles Abspeichern eines TStringGrids on Sun, 29 Jul 2007 14:16:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich speichere bis jetzt ein TStringGrid folgendermaßen ab:</p>
<pre><code class="language-cpp">TStringList *list = new TStringList();
list-&gt;Add(StringGrid1-&gt;ColCount);

for (int i = 0; i &lt; StringGrid1-&gt;RowCount; i++)
   list-&gt;Add(StringGrid1-&gt;Rows[i]-&gt;CommaText);

list-&gt;SaveToFile(&quot;D:\\test.txt&quot;);
delete list;
</code></pre>
<p>Der Eintrag in &quot;test.txt&quot; sieht dann zum Beispiel so aus:</p>
<pre><code>3
1,1,1
-5,4,-30
-4.32,45.921,-200.11
</code></pre>
<p>Kann ich denn das ganze so abspeichern, dass eine Art Blocksatz entsteht bzw. das alle Kommata untereinander stehen?</p>
<p>Bsp:</p>
<pre><code>3
    1,     1,      1
   -5,     4,    -30
-4.32,45.921,-200.11
</code></pre>
<p>Danke und liebe Grüße</p>
<p>Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334373</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Spezielles Abspeichern eines TStringGrids on Sun, 29 Jul 2007 14:20:37 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nicht wenn du die CommaText-Eigenschaft benutzt. Du müßtest schon selber die einzelnen Zellen pro Zeile behandeln und bei jedem entsprechende Leerzeichen einfügen, je nach Länge des Zelleninhaltes.<br />
Wenn du aber gleich std::fstream anstelle TStringList benutzt kannst du dort den width-Manipulator benutzen um eine feste Spaltenbreite vorzugeben.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334377</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 29 Jul 2007 14:20:37 GMT</pubDate></item><item><title><![CDATA[Reply to Spezielles Abspeichern eines TStringGrids on Mon, 30 Jul 2007 07:19:34 GMT]]></title><description><![CDATA[<p>Danke akari,</p>
<p>das hat geholfen.</p>
<p>Liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334747</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 30 Jul 2007 07:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Spezielles Abspeichern eines TStringGrids on Mon, 30 Jul 2007 14:33:53 GMT]]></title><description><![CDATA[<p>Okay zu früh gefreut.</p>
<p>Wenn ich die Spaltenbreite einheitlich für jede Spalte mache funkioniert es. Ich möchte aber die Spaltenbreite anpassen, je nach der Stringlänge der einzelnen Einträge reihenweise innerhalb einer Spalte:</p>
<p>Beispiel wie es sein soll (dynamische Spaltenbreite):</p>
<pre><code>5
11111,    0,     0,     0,        0,
    0,    1,     2,     3,        4,
    0,    2,     4,     6,        8,
    0,    3,     6,     9,       12,
    0,    4,     8,    12,  1600000,
</code></pre>
<p>Man sieht, dass z.B. die zweite Spalte schmaler ist als die letzte, auf Grund des<br />
langen Eintrags '1600000';</p>
<p>Ich habe jetzt versucht das ganze zu steuern, aber ich denke ich habe einen kleinen Denkfehler drin. Vielleicht sieht ihn ja jemand und kann mir einen Tipp geben warum das ganze noch nicht funktioniert:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;Unit1.h&quot;

#include &lt;fstream&gt;
using namespace std;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
int spaltenbreite(int);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//------Einfaches Auffüllen des StringGrids----------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 for (int i=0;i&lt;StringGrid1-&gt;ColCount;++i)
 {
  for (int j=0;j&lt;StringGrid1-&gt;RowCount;++j)
  StringGrid1-&gt;Cells[i][j]=i*j;
 }
}
//-----Schreiben in das File-------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 int i,j;
 AnsiString file=&quot;H:\\test.txt&quot;;
 fstream f(file.c_str(),ios::out);

 f&lt;&lt;right;
 f&lt;&lt;StringGrid1-&gt;ColCount&lt;&lt;endl;

 f.width(spaltenbreite(0)+2);                    //Spaltenbreite 1.Spalte
 f&lt;&lt;right; 

 for (i=0;i&lt;StringGrid1-&gt;ColCount;i++)
 {
  for (j=0;j&lt;StringGrid1-&gt;RowCount;j++)
  {
   f&lt;&lt;StringGrid1-&gt;Cells[j][i].c_str()&lt;&lt;',';
   f.width(spaltenbreite(j)+2);                 //Spaltenbreite je Spalte
                                                //vielleicht überflüssig
  }
 f&lt;&lt;endl;
 }
 f.close();
}
//-----Versuch die maximale StringLänge je Spalte zu finden-------------------
int maxs;
int spaltenbreite(int i)
{
 maxs=0;                                      //Initialisierung der max. 
                                              //Spaltenbreite
 for (int ii=i;ii&lt;=i;ii++)
 {
  for (int jj=0;jj&lt;Form1-&gt;StringGrid1-&gt;RowCount;jj++)
  {
   if (maxs&lt;Form1-&gt;StringGrid1-&gt;Cells[ii][jj].Length())
       maxs=Form1-&gt;StringGrid1-&gt;Cells[ii][jj].Length();
  }
 }

 if (maxs&lt;5)                                  //setzen der Spaltenbreite auf 
                                              //mind. 5(+2 von oben);
     maxs=5;

 return maxs;                
}
</code></pre>
<p>Das ganze sieht bei ungleich langen Strings so aus:</p>
<pre><code>5
  111111,       0,      0,      0,      0,
      0,       1,      2,      3,      4,
      0,       2,      4,      6,      8,
      0,       3,      6,      9,     12,
      0,       4,      8,     12,     16,
</code></pre>
<p>Danke und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335010</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 30 Jul 2007 14:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to Spezielles Abspeichern eines TStringGrids on Tue, 31 Jul 2007 07:43:00 GMT]]></title><description><![CDATA[<p>Okay,</p>
<p>ich musste nur die Zeilen 47/48 tauschen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Danke und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335435</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Tue, 31 Jul 2007 07:43:00 GMT</pubDate></item></channel></rss>