<?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[Vector wird nicht geleert]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein kleines Problem mit meinem Prog..<br />
Das Programm soll eine Datei auslesen und dann je nach Bestimmung entweder die Nutzer mit oder ohne Telefonnummer anzeigen. Dabei soll es egal sein wie viele Datensätze in der Datei enthalten sind.<br />
Ich hab mich für eine Lösung mittels Vektor entschieden, die auch soweit funktioniert.<br />
Nur gibt es noch ein kleines Problem. Beim ersten Durchluaf funktioniert das Prog noch einwandfrei. Sobald jedoch der zweite Durchlauf gestartet wird, werden alle Datensätze doppelt angezeigt, bei dritten Durchlauf driefach usw..<br />
Dies liegt wohl daran, dass bei jedem Durchlauf die Datei neu ausgelesen wird und das Ergebniss an den schon vorhandenen Vektor angefügt wird.<br />
Kann mir bitte jemdand helfen, dass ich den Vektor wieder leer bekomme, bevor der neue Durclauf beginnt und damit die Datensätze auch beim zweiten, dritten usw. Auslesen nur einmal angezeigt werden?</p>
<p>Ich danke Euc schonmal im Vorraus.</p>
<p>Hier der Quelltext:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &lt;stdio.h&gt;
#include &lt;io.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
#include &lt;vector.h&gt;

#include &quot;Telefonliste.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::I1Click(TObject *Sender)
{
ShowMessage(&quot;Dieses Programm wurde erstellt von:\n\nIngmar Wunderlich\nBWL\n022021/2\n\n__.__.2005&quot;);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Beenden1Click(TObject *Sender)
{
ShowMessage(&quot;Vielen Dank für die Benutzung dieses Programmes&quot;);
exit(1);
}
//---------------------------------------------------------------------------
typedef struct  {
       char Geb_tag[3];
       char Name[21];
       char Vorname[21];
       char PLZ[7];
       char Ort[21];
       char Strasse[21];
       char TelefonNr[8];
       char Geburtsort[31];
       } Tsatz;

// using namespace std;

 vector&lt;Tsatz&gt; v(0);    //offenbar bei Init.=0 15 Felder vorgegeben,Auffüllen ab
                        //0.Stelle; sonst Auffüllen ab Stelle des Init-parameters

 bool operator&lt; (const Tsatz &amp;t1, const Tsatz &amp;t2)
 {
 return (strcmp(t1.Name, t2.Name)&lt;0);}

 typedef  vector&lt;Tsatz&gt;::iterator iter;

void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
int y=0;       // Variable für die Listnummer
int z=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Name) aufsteigen
int a=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Telefonnr) aufsteigen
int b=0;      // Hilfsvaribale, um sicherzustellen, dass Listnr.(Ort) aufsteigen
int handle;
Tsatz h;

_fmode=O_BINARY;            //Datei im Bin„rmodus ”ffnen
  if ((handle=open(&quot;Auskunft.dtc&quot;,O_RDONLY))==-1)
     {
     printf(&quot;Datei kann nicht geöffnet werden \n&quot;);
     getchar();
     exit(1);
     }

  while (!eof(handle))
    {
     read(handle,&amp;h,sizeof(Tsatz));
     v.push_back(h);                    //Anfügen am Ende
     }
     close(handle);

ListBox1-&gt;Clear();
ListBox2-&gt;Clear();
ListBox3-&gt;Clear();
ListBox4-&gt;Clear();
sort(v.begin(), v.end());
    for (iter i=v.begin();i!=v.end();i++)
     {
     if (strcmp(i-&gt;TelefonNr,&quot;&quot;)!=0){
     ListBox1-&gt;Items-&gt;Insert(y,i-&gt;Name);
     y++;
     ListBox2-&gt;Items-&gt;Insert(a,i-&gt;Vorname);
     a++;
     ListBox3-&gt;Items-&gt;Insert(b,i-&gt;Ort);
     b++;
     ListBox4-&gt;Items-&gt;Insert(z,i-&gt;TelefonNr);
     z++; }}
Label5-&gt;Caption=&quot;Telefonnummer&quot;;         //Label5 wird mit Telefonnummer beschrifftet
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
int y=0;       // Variable für die Listnummer
int z=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Name) aufsteigen
int a=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Telefonnr) aufsteigen
int b=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Ort) aufsteigen
int handle;
Tsatz h;

_fmode=O_BINARY;            //Datei im Binärmodus ”ffnen
  if ((handle=open(&quot;Auskunft.dtc&quot;,O_RDONLY))==-1)
     {
     printf(&quot;Datei kann nicht ge”ffnet werden \n&quot;);
     getchar();
     exit(1);
     }

  while (!eof(handle))
    {
     read(handle,&amp;h,sizeof(Tsatz));
     v.push_back(h);                    //Anfügen am Ende
     }
     close(handle);

ListBox1-&gt;Clear();
ListBox2-&gt;Clear();
ListBox3-&gt;Clear();
ListBox4-&gt;Clear();
sort(v.begin(), v.end());
    for (iter i=v.begin();i!=v.end();i++)
     {
     if (strcmp(i-&gt;TelefonNr,&quot;&quot;)==0){
     ListBox1-&gt;Items-&gt;Insert(y,i-&gt;Name);
     y++;
     ListBox2-&gt;Items-&gt;Insert(a,i-&gt;Vorname);
     a++;
     ListBox3-&gt;Items-&gt;Insert(b,i-&gt;Ort);
     b++;
     ListBox4-&gt;Items-&gt;Insert(z,i-&gt;Strasse);
     z++; }}
Label5-&gt;Caption=&quot;Strasse&quot;;         //Label5 wird mit Telefonnummer beschrifftet
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/111124/vector-wird-nicht-geleert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 21:59:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/111124.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 May 2005 09:22:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector wird nicht geleert on Sat, 28 May 2005 09:22:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein kleines Problem mit meinem Prog..<br />
Das Programm soll eine Datei auslesen und dann je nach Bestimmung entweder die Nutzer mit oder ohne Telefonnummer anzeigen. Dabei soll es egal sein wie viele Datensätze in der Datei enthalten sind.<br />
Ich hab mich für eine Lösung mittels Vektor entschieden, die auch soweit funktioniert.<br />
Nur gibt es noch ein kleines Problem. Beim ersten Durchluaf funktioniert das Prog noch einwandfrei. Sobald jedoch der zweite Durchlauf gestartet wird, werden alle Datensätze doppelt angezeigt, bei dritten Durchlauf driefach usw..<br />
Dies liegt wohl daran, dass bei jedem Durchlauf die Datei neu ausgelesen wird und das Ergebniss an den schon vorhandenen Vektor angefügt wird.<br />
Kann mir bitte jemdand helfen, dass ich den Vektor wieder leer bekomme, bevor der neue Durclauf beginnt und damit die Datensätze auch beim zweiten, dritten usw. Auslesen nur einmal angezeigt werden?</p>
<p>Ich danke Euc schonmal im Vorraus.</p>
<p>Hier der Quelltext:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &lt;stdio.h&gt;
#include &lt;io.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
#include &lt;vector.h&gt;

#include &quot;Telefonliste.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::I1Click(TObject *Sender)
{
ShowMessage(&quot;Dieses Programm wurde erstellt von:\n\nIngmar Wunderlich\nBWL\n022021/2\n\n__.__.2005&quot;);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Beenden1Click(TObject *Sender)
{
ShowMessage(&quot;Vielen Dank für die Benutzung dieses Programmes&quot;);
exit(1);
}
//---------------------------------------------------------------------------
typedef struct  {
       char Geb_tag[3];
       char Name[21];
       char Vorname[21];
       char PLZ[7];
       char Ort[21];
       char Strasse[21];
       char TelefonNr[8];
       char Geburtsort[31];
       } Tsatz;

// using namespace std;

 vector&lt;Tsatz&gt; v(0);    //offenbar bei Init.=0 15 Felder vorgegeben,Auffüllen ab
                        //0.Stelle; sonst Auffüllen ab Stelle des Init-parameters

 bool operator&lt; (const Tsatz &amp;t1, const Tsatz &amp;t2)
 {
 return (strcmp(t1.Name, t2.Name)&lt;0);}

 typedef  vector&lt;Tsatz&gt;::iterator iter;

void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
int y=0;       // Variable für die Listnummer
int z=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Name) aufsteigen
int a=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Telefonnr) aufsteigen
int b=0;      // Hilfsvaribale, um sicherzustellen, dass Listnr.(Ort) aufsteigen
int handle;
Tsatz h;

_fmode=O_BINARY;            //Datei im Bin„rmodus ”ffnen
  if ((handle=open(&quot;Auskunft.dtc&quot;,O_RDONLY))==-1)
     {
     printf(&quot;Datei kann nicht geöffnet werden \n&quot;);
     getchar();
     exit(1);
     }

  while (!eof(handle))
    {
     read(handle,&amp;h,sizeof(Tsatz));
     v.push_back(h);                    //Anfügen am Ende
     }
     close(handle);

ListBox1-&gt;Clear();
ListBox2-&gt;Clear();
ListBox3-&gt;Clear();
ListBox4-&gt;Clear();
sort(v.begin(), v.end());
    for (iter i=v.begin();i!=v.end();i++)
     {
     if (strcmp(i-&gt;TelefonNr,&quot;&quot;)!=0){
     ListBox1-&gt;Items-&gt;Insert(y,i-&gt;Name);
     y++;
     ListBox2-&gt;Items-&gt;Insert(a,i-&gt;Vorname);
     a++;
     ListBox3-&gt;Items-&gt;Insert(b,i-&gt;Ort);
     b++;
     ListBox4-&gt;Items-&gt;Insert(z,i-&gt;TelefonNr);
     z++; }}
Label5-&gt;Caption=&quot;Telefonnummer&quot;;         //Label5 wird mit Telefonnummer beschrifftet
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
int y=0;       // Variable für die Listnummer
int z=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Name) aufsteigen
int a=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Telefonnr) aufsteigen
int b=0;       // Hilfsvaribale, um sicherzustellen, dass Listnr.(Ort) aufsteigen
int handle;
Tsatz h;

_fmode=O_BINARY;            //Datei im Binärmodus ”ffnen
  if ((handle=open(&quot;Auskunft.dtc&quot;,O_RDONLY))==-1)
     {
     printf(&quot;Datei kann nicht ge”ffnet werden \n&quot;);
     getchar();
     exit(1);
     }

  while (!eof(handle))
    {
     read(handle,&amp;h,sizeof(Tsatz));
     v.push_back(h);                    //Anfügen am Ende
     }
     close(handle);

ListBox1-&gt;Clear();
ListBox2-&gt;Clear();
ListBox3-&gt;Clear();
ListBox4-&gt;Clear();
sort(v.begin(), v.end());
    for (iter i=v.begin();i!=v.end();i++)
     {
     if (strcmp(i-&gt;TelefonNr,&quot;&quot;)==0){
     ListBox1-&gt;Items-&gt;Insert(y,i-&gt;Name);
     y++;
     ListBox2-&gt;Items-&gt;Insert(a,i-&gt;Vorname);
     a++;
     ListBox3-&gt;Items-&gt;Insert(b,i-&gt;Ort);
     b++;
     ListBox4-&gt;Items-&gt;Insert(z,i-&gt;Strasse);
     z++; }}
Label5-&gt;Caption=&quot;Strasse&quot;;         //Label5 wird mit Telefonnummer beschrifftet
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/797707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/797707</guid><dc:creator><![CDATA[Oegg]]></dc:creator><pubDate>Sat, 28 May 2005 09:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vector wird nicht geleert on Sat, 28 May 2005 11:04:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich hab mit den Code nur überflogen, aber die Elemente eines vectors kann man ganz schnell mit <em>vector::clear()</em> löschen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/797769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/797769</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 28 May 2005 11:04:26 GMT</pubDate></item></channel></rss>