<?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[TFileStream - Datei enthält nicht die korrekten Daten]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 4 Edit Felder, dass 1. gibt den Ort der Datei an, de anderen kann man per Button1 speichern, mit einem Klick auf Button 2 sollen die Daten in ein Memo Feld eingelesen werden:</p>
<p>Speichern:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
  const int anzahl = 3;
  int i, ii;
  int Zahl;
  int *ZeigerAufZahl = &amp;Zahl;
  AnsiString Wort;
  AnsiString *ZeigerAufWort = &amp;Wort;
  AnsiString eintrag[3];

  for (i = 0; anzahl&gt;i; i++)
  {
	  TEdit *Zeiger = dynamic_cast&lt;TEdit*&gt;(FindComponent(&quot;Edit&quot;+IntToStr(i+2)));
	  eintrag[i] = Zeiger-&gt;Text;
  }

  TFileStream* Stream;
  Stream = new TFileStream(Edit1-&gt;Text, fmCreate);

  Zahl = anzahl;

  Stream-&gt;Write(ZeigerAufZahl ,sizeof(Zahl));

  for (ii = 0; anzahl&gt;ii; ii++)
  {
	  Zahl = eintrag[ii].Length();
	  Stream-&gt;Write(ZeigerAufZahl,sizeof(Zahl));
	  Wort = eintrag[ii];
	  Stream-&gt;Write(ZeigerAufWort,Zahl);
  }

  delete Stream;
}
</code></pre>
<p>zum Öffnen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button2Click(TObject *Sender)
{
  const int anzahl = 3;
  int Zahl;
  int *ZeigerAufZahl = &amp;Zahl;
  int i;
  AnsiString Wort;
  AnsiString *ZeigerAufWort = &amp;Wort;
  AnsiString eintrag[3];

  TFileStream* Stream;
  Stream = new TFileStream(Edit1-&gt;Text, fmOpenRead);

  Stream-&gt;Read(ZeigerAufZahl, sizeof(Zahl));

  for (i=0; i&lt;anzahl; i++)
  {
	 Stream-&gt;Read(ZeigerAufZahl, sizeof(Zahl));
	 Stream-&gt;Read(ZeigerAufWort, Zahl);
	 Memo1-&gt;Lines-&gt;Add(Wort);
	 eintrag[i] = Wort;
  }

 delete Stream;
}
</code></pre>
<p>Beim Öffnen kommt eine Invalide Pointer Fehlermeldung und beim Speichern habe ich gemerkt, dass die Datei nicht die Daten der Edit Felder enthält.</p>
<p>Ich weiß das lange Codes nicht gern gesehen sind, aber ich habe absollut keine Ahnung wo ich ansetzen soll.</p>
<p>Vielen Dank für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206332/tfilestream-datei-enthält-nicht-die-korrekten-daten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 01:26:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206332.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Feb 2008 16:25:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TFileStream - Datei enthält nicht die korrekten Daten on Sat, 23 Feb 2008 16:25:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 4 Edit Felder, dass 1. gibt den Ort der Datei an, de anderen kann man per Button1 speichern, mit einem Klick auf Button 2 sollen die Daten in ein Memo Feld eingelesen werden:</p>
<p>Speichern:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
  const int anzahl = 3;
  int i, ii;
  int Zahl;
  int *ZeigerAufZahl = &amp;Zahl;
  AnsiString Wort;
  AnsiString *ZeigerAufWort = &amp;Wort;
  AnsiString eintrag[3];

  for (i = 0; anzahl&gt;i; i++)
  {
	  TEdit *Zeiger = dynamic_cast&lt;TEdit*&gt;(FindComponent(&quot;Edit&quot;+IntToStr(i+2)));
	  eintrag[i] = Zeiger-&gt;Text;
  }

  TFileStream* Stream;
  Stream = new TFileStream(Edit1-&gt;Text, fmCreate);

  Zahl = anzahl;

  Stream-&gt;Write(ZeigerAufZahl ,sizeof(Zahl));

  for (ii = 0; anzahl&gt;ii; ii++)
  {
	  Zahl = eintrag[ii].Length();
	  Stream-&gt;Write(ZeigerAufZahl,sizeof(Zahl));
	  Wort = eintrag[ii];
	  Stream-&gt;Write(ZeigerAufWort,Zahl);
  }

  delete Stream;
}
</code></pre>
<p>zum Öffnen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button2Click(TObject *Sender)
{
  const int anzahl = 3;
  int Zahl;
  int *ZeigerAufZahl = &amp;Zahl;
  int i;
  AnsiString Wort;
  AnsiString *ZeigerAufWort = &amp;Wort;
  AnsiString eintrag[3];

  TFileStream* Stream;
  Stream = new TFileStream(Edit1-&gt;Text, fmOpenRead);

  Stream-&gt;Read(ZeigerAufZahl, sizeof(Zahl));

  for (i=0; i&lt;anzahl; i++)
  {
	 Stream-&gt;Read(ZeigerAufZahl, sizeof(Zahl));
	 Stream-&gt;Read(ZeigerAufWort, Zahl);
	 Memo1-&gt;Lines-&gt;Add(Wort);
	 eintrag[i] = Wort;
  }

 delete Stream;
}
</code></pre>
<p>Beim Öffnen kommt eine Invalide Pointer Fehlermeldung und beim Speichern habe ich gemerkt, dass die Datei nicht die Daten der Edit Felder enthält.</p>
<p>Ich weiß das lange Codes nicht gern gesehen sind, aber ich habe absollut keine Ahnung wo ich ansetzen soll.</p>
<p>Vielen Dank für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461597</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 23 Feb 2008 16:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to TFileStream - Datei enthält nicht die korrekten Daten on Sat, 23 Feb 2008 19:01:31 GMT]]></title><description><![CDATA[<p>Zeiger auf AnsiString mit Wort.c_str() !</p>
<p>Für deine 4 Edit-Felder bist du schneller wenn du Sie Direkt anspreichst,..</p>
<p>eintrag[0]=Edit1-&gt;Text;<br />
eintrag[1]=Edit2-&gt;Text;<br />
eintrag[2]=Edit3-&gt;Text;<br />
eintrag[3]=Edit4-&gt;Text;</p>
<p>Stream-&gt;Write(Zeiger auf Daten,Länge in Byte)</p>
<p>somit heists richtig</p>
<p>Stream-&gt;Write(Wort.c_str(),Wort.Length()+1) //Wegen 0-Terminierung von AnsiString<br />
zum lesen<br />
Stream-&gt;Read(Wort.c_str(),Stream-&gt;Size)</p>
<p>Mit dem Wissen sollte es funktionier, was du genau willst habe ich noch nicht genau verstanden ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461656</guid><dc:creator><![CDATA[christianz]]></dc:creator><pubDate>Sat, 23 Feb 2008 19:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to TFileStream - Datei enthält nicht die korrekten Daten on Sat, 23 Feb 2008 19:08:11 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Zum Speichern von AnsiString ist TStringList besser geeignet, da must du nicht mit C-Strings rumhantieren. Näheres findest du über die SuFu, in der TOP3 der FAQ hier im Forum und in der BCB-Hilfe.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461661</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 23 Feb 2008 19:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to TFileStream - Datei enthält nicht die korrekten Daten on Sat, 23 Feb 2008 19:23:24 GMT]]></title><description><![CDATA[<p>Vielen Dank für diie Antworten. Die Variante von christianz hat mit einer kleinen änderung geklappt - was das für einen Sinn macht? Keinen! Ich wollte nur probieren wie ich Daten (auch Integers) abspeichern kann. In Delphi habe ich oft Streams verwendet - für reine AnsiStrings hat akari recht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461667</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 23 Feb 2008 19:23:24 GMT</pubDate></item></channel></rss>