<?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[Struktur mit Feld in einer Klasse dynamisch reservieren]]></title><description><![CDATA[<p>Mein Projekt besteht aus folgenden Dateien:</p>
<p>unit1.cpp<br />
unit1.h<br />
adressen.cpp<br />
adressen.h</p>
<p>Meine Fragen stehen als Kommentar im Text.</p>
<p><strong>adressen.h:</strong></p>
<pre><code class="language-cpp">struct person
{
  char pvorname[25];
  char pzuname[25];
  char pstrasse[25];
  char port[25];
  int plz;
};

class TAdressen
{
 private:
         int *anzahl;
         int wert;
         person daten[50];//Wie kann ich die 50 mit einer Variablen ersetzen?
 public:
         TAdressen();
         TAdressen(int soviel);
         ~TAdressen();
         void einlesen(void);
         int wieviel(int soviel);
         int nulloderwas(void);
         const person *Get_daten();
         void Setplz(int Newplz);
         int Get_plz();
         void Setpvorname(char *Newpvorname);
         void Setpzuname(char *Newpzuname);
         void Setpstrasse(char *Newpstrasse);
         void Setport(char *Newport);
         AnsiString Get_pvorname();
         AnsiString Get_pzuname();
         AnsiString Get_pstrasse();
         AnsiString Get_port();
         int Get_wieviel();
};
</code></pre>
<p><strong>adressen.cpp:</strong></p>
<pre><code class="language-cpp">TAdressen::TAdressen()
{
 anzahl = new int[25];
 wert = 20;
}
//***************************************************************************
TAdressen::TAdressen(int soviel)
{
 anzahl = new int[soviel];
 wert = 0;
 daten[soviel].plz = 99999;
 strcpy(daten[soviel].pvorname, &quot;Vorname&quot;);
 strcpy(daten[soviel].pzuname, &quot;Zuname&quot;);
 strcpy(daten[soviel].port, &quot;Ort&quot;);
 strcpy(daten[soviel].pstrasse, &quot;Straße&quot;);
}
//***************************************************************************
TAdressen::~TAdressen()
{
 delete anzahl;
}
//---------------------------------------------------------------------------
void TAdressen::einlesen(void)
{
 if (wert == 0)
 {
  Application-&gt;MessageBoxA(&quot;Datensätze sind 0&quot;, &quot;Pech&quot;);
  return;
 }
}
//---------------------------------------------------------------------------
int TAdressen::wieviel(int soviel)
{
 wert = soviel;
 return(wert);
}
//---------------------------------------------------------------------------
int TAdressen::nulloderwas(void)
{
 return anzahl[wert];
}
//---------------------------------------------------------------------------
void TAdressen::Setplz(int Newplz)
{
 daten[wert].plz = Newplz;
}
//***************************************************************************
int TAdressen::Get_plz()
{ 
 return(daten[wert].plz);
}
//---------------------------------------------------------------------------
void TAdressen::Setpvorname(char *Newpvorname)
{
 strcpy(daten[wert].pvorname, Newpvorname);
}
//***************************************************************************
AnsiString TAdressen::Get_pvorname()
{
 return(daten[wert].pvorname);
}
//---------------------------------------------------------------------------
void TAdressen::Setpzuname(char *Newpzuname)
{
 strcpy(daten[wert].pzuname, Newpzuname);
}
//***************************************************************************
AnsiString TAdressen::Get_pzuname()
{
 return(daten[wert].pzuname);
}
//---------------------------------------------------------------------------
void TAdressen::Setpstrasse(char *Newpstrasse)
{
 strcpy(daten[wert].pstrasse, Newpstrasse);
}
//***************************************************************************
AnsiString TAdressen::Get_pstrasse()
{
 return(daten[wert].pstrasse);
}
//---------------------------------------------------------------------------
void TAdressen::Setport(char *Newport)
{
 strcpy(daten[wert].port, Newport);
}
//***************************************************************************
AnsiString TAdressen::Get_port()
{
 return(daten[wert].port);
}
//---------------------------------------------------------------------------
int TAdressen::Get_wieviel()
{
 return(wert);
}
</code></pre>
<p><strong>unit1.cpp:</strong></p>
<pre><code class="language-cpp">TAdressen *ObjektAdressen;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 ObjektAdressen = new TAdressen(0);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ButtonDatSatzEinlesenClick(TObject *Sender)
{
 int soundsoviel = 0, anzahl;
 if (EditDatSatzInput-&gt;Text.Length())
 soundsoviel = StrToInt(EditDatSatzInput-&gt;Text);
 ObjektAdressen = new TAdressen(soundsoviel = StrToInt(EditDatSatzInput-&gt;Text));
 anzahl = ObjektAdressen-&gt;wieviel(soundsoviel);
 EditDatSatzOutput-&gt;Text = ObjektAdressen-&gt;wieviel(anzahl);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonDatenEinlesenClick(TObject *Sender)
{
 ObjektAdressen-&gt;einlesen();
 if (int count = StrToInt(ListBoxDaten-&gt;Items-&gt;Count)
     == ObjektAdressen-&gt;Get_wieviel() &amp;&amp; ObjektAdressen-&gt;Get_wieviel() != 0)
 {
  Application-&gt;MessageBoxA(&quot;Voll&quot;,&quot;Schluss&quot;);
  return;
 }
 char buf[150];
 for (int i=0; i&lt;ObjektAdressen-&gt;Get_wieviel(); i++)
 {
  if (EditPLZ-&gt;Text.Length())
  ObjektAdressen-&gt;Setplz(StrToInt(EditPLZ-&gt;Text));
  if (EditOrt-&gt;Text.Length())
  ObjektAdressen-&gt;Setport(EditOrt-&gt;Text.c_str());
  if (EditStrasse-&gt;Text.Length())
  ObjektAdressen-&gt;Setpstrasse(EditStrasse-&gt;Text.c_str());
  if (EditVorname-&gt;Text.Length())
  ObjektAdressen-&gt;Setpvorname(EditVorname-&gt;Text.c_str());
  if (EditZuname-&gt;Text.Length())
  ObjektAdressen-&gt;Setpzuname(EditZuname-&gt;Text.c_str());
  sprintf(buf,&quot;%i %s %s %s %i %s&quot;,ObjektAdressen-&gt;Get_wieviel(),
                                  ObjektAdressen-&gt;Get_pvorname(),
                                  ObjektAdressen-&gt;Get_pzuname(),
                                  ObjektAdressen-&gt;Get_pstrasse(),
                                  ObjektAdressen-&gt;Get_plz(),
                                  ObjektAdressen-&gt;Get_port());
  ListBoxDaten-&gt;Items-&gt;Add(buf);
  break;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonWelcherDatensatzClick(TObject *Sender)
{
 //Wie kann ich einen bestimmten Datensatz (zum Beispiel den 12.) an die
 //ListBox ausgeben? Ich meine wie sage ich welches Feld ich will?
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/105471/struktur-mit-feld-in-einer-klasse-dynamisch-reservieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:11:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/105471.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Mar 2005 20:32:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struktur mit Feld in einer Klasse dynamisch reservieren on Wed, 30 Mar 2005 20:32:38 GMT]]></title><description><![CDATA[<p>Mein Projekt besteht aus folgenden Dateien:</p>
<p>unit1.cpp<br />
unit1.h<br />
adressen.cpp<br />
adressen.h</p>
<p>Meine Fragen stehen als Kommentar im Text.</p>
<p><strong>adressen.h:</strong></p>
<pre><code class="language-cpp">struct person
{
  char pvorname[25];
  char pzuname[25];
  char pstrasse[25];
  char port[25];
  int plz;
};

class TAdressen
{
 private:
         int *anzahl;
         int wert;
         person daten[50];//Wie kann ich die 50 mit einer Variablen ersetzen?
 public:
         TAdressen();
         TAdressen(int soviel);
         ~TAdressen();
         void einlesen(void);
         int wieviel(int soviel);
         int nulloderwas(void);
         const person *Get_daten();
         void Setplz(int Newplz);
         int Get_plz();
         void Setpvorname(char *Newpvorname);
         void Setpzuname(char *Newpzuname);
         void Setpstrasse(char *Newpstrasse);
         void Setport(char *Newport);
         AnsiString Get_pvorname();
         AnsiString Get_pzuname();
         AnsiString Get_pstrasse();
         AnsiString Get_port();
         int Get_wieviel();
};
</code></pre>
<p><strong>adressen.cpp:</strong></p>
<pre><code class="language-cpp">TAdressen::TAdressen()
{
 anzahl = new int[25];
 wert = 20;
}
//***************************************************************************
TAdressen::TAdressen(int soviel)
{
 anzahl = new int[soviel];
 wert = 0;
 daten[soviel].plz = 99999;
 strcpy(daten[soviel].pvorname, &quot;Vorname&quot;);
 strcpy(daten[soviel].pzuname, &quot;Zuname&quot;);
 strcpy(daten[soviel].port, &quot;Ort&quot;);
 strcpy(daten[soviel].pstrasse, &quot;Straße&quot;);
}
//***************************************************************************
TAdressen::~TAdressen()
{
 delete anzahl;
}
//---------------------------------------------------------------------------
void TAdressen::einlesen(void)
{
 if (wert == 0)
 {
  Application-&gt;MessageBoxA(&quot;Datensätze sind 0&quot;, &quot;Pech&quot;);
  return;
 }
}
//---------------------------------------------------------------------------
int TAdressen::wieviel(int soviel)
{
 wert = soviel;
 return(wert);
}
//---------------------------------------------------------------------------
int TAdressen::nulloderwas(void)
{
 return anzahl[wert];
}
//---------------------------------------------------------------------------
void TAdressen::Setplz(int Newplz)
{
 daten[wert].plz = Newplz;
}
//***************************************************************************
int TAdressen::Get_plz()
{ 
 return(daten[wert].plz);
}
//---------------------------------------------------------------------------
void TAdressen::Setpvorname(char *Newpvorname)
{
 strcpy(daten[wert].pvorname, Newpvorname);
}
//***************************************************************************
AnsiString TAdressen::Get_pvorname()
{
 return(daten[wert].pvorname);
}
//---------------------------------------------------------------------------
void TAdressen::Setpzuname(char *Newpzuname)
{
 strcpy(daten[wert].pzuname, Newpzuname);
}
//***************************************************************************
AnsiString TAdressen::Get_pzuname()
{
 return(daten[wert].pzuname);
}
//---------------------------------------------------------------------------
void TAdressen::Setpstrasse(char *Newpstrasse)
{
 strcpy(daten[wert].pstrasse, Newpstrasse);
}
//***************************************************************************
AnsiString TAdressen::Get_pstrasse()
{
 return(daten[wert].pstrasse);
}
//---------------------------------------------------------------------------
void TAdressen::Setport(char *Newport)
{
 strcpy(daten[wert].port, Newport);
}
//***************************************************************************
AnsiString TAdressen::Get_port()
{
 return(daten[wert].port);
}
//---------------------------------------------------------------------------
int TAdressen::Get_wieviel()
{
 return(wert);
}
</code></pre>
<p><strong>unit1.cpp:</strong></p>
<pre><code class="language-cpp">TAdressen *ObjektAdressen;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 ObjektAdressen = new TAdressen(0);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ButtonDatSatzEinlesenClick(TObject *Sender)
{
 int soundsoviel = 0, anzahl;
 if (EditDatSatzInput-&gt;Text.Length())
 soundsoviel = StrToInt(EditDatSatzInput-&gt;Text);
 ObjektAdressen = new TAdressen(soundsoviel = StrToInt(EditDatSatzInput-&gt;Text));
 anzahl = ObjektAdressen-&gt;wieviel(soundsoviel);
 EditDatSatzOutput-&gt;Text = ObjektAdressen-&gt;wieviel(anzahl);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonDatenEinlesenClick(TObject *Sender)
{
 ObjektAdressen-&gt;einlesen();
 if (int count = StrToInt(ListBoxDaten-&gt;Items-&gt;Count)
     == ObjektAdressen-&gt;Get_wieviel() &amp;&amp; ObjektAdressen-&gt;Get_wieviel() != 0)
 {
  Application-&gt;MessageBoxA(&quot;Voll&quot;,&quot;Schluss&quot;);
  return;
 }
 char buf[150];
 for (int i=0; i&lt;ObjektAdressen-&gt;Get_wieviel(); i++)
 {
  if (EditPLZ-&gt;Text.Length())
  ObjektAdressen-&gt;Setplz(StrToInt(EditPLZ-&gt;Text));
  if (EditOrt-&gt;Text.Length())
  ObjektAdressen-&gt;Setport(EditOrt-&gt;Text.c_str());
  if (EditStrasse-&gt;Text.Length())
  ObjektAdressen-&gt;Setpstrasse(EditStrasse-&gt;Text.c_str());
  if (EditVorname-&gt;Text.Length())
  ObjektAdressen-&gt;Setpvorname(EditVorname-&gt;Text.c_str());
  if (EditZuname-&gt;Text.Length())
  ObjektAdressen-&gt;Setpzuname(EditZuname-&gt;Text.c_str());
  sprintf(buf,&quot;%i %s %s %s %i %s&quot;,ObjektAdressen-&gt;Get_wieviel(),
                                  ObjektAdressen-&gt;Get_pvorname(),
                                  ObjektAdressen-&gt;Get_pzuname(),
                                  ObjektAdressen-&gt;Get_pstrasse(),
                                  ObjektAdressen-&gt;Get_plz(),
                                  ObjektAdressen-&gt;Get_port());
  ListBoxDaten-&gt;Items-&gt;Add(buf);
  break;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonWelcherDatensatzClick(TObject *Sender)
{
 //Wie kann ich einen bestimmten Datensatz (zum Beispiel den 12.) an die
 //ListBox ausgeben? Ich meine wie sage ich welches Feld ich will?
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/756077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/756077</guid><dc:creator><![CDATA[HardRock]]></dc:creator><pubDate>Wed, 30 Mar 2005 20:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur mit Feld in einer Klasse dynamisch reservieren on Wed, 30 Mar 2005 20:36:00 GMT]]></title><description><![CDATA[<p>zu 1.)<br />
CPP: Siehe DynamicArray / std::vector.<br />
C: Siehe calloc / malloc.</p>
<p>zu 2.)<br />
Entweder du definierst dir einen eigenen Operator für deine Klasse oder mittels Getter/Setter - Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/756081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/756081</guid><dc:creator><![CDATA[Dasd]]></dc:creator><pubDate>Wed, 30 Mar 2005 20:36:00 GMT</pubDate></item></channel></rss>