<?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[Zugriff auf 1-D int vector array]]></title><description><![CDATA[<p>Hallo,<br />
warum kann ich in OnShow und OnTimer nicht auf das vector array zugreifen und bekomme access violation. Auf int Test funktioniert der Zugriff. Habe ich da in der Deklaration *.h etwas falsch gemacht ?</p>
<p>*.cpp</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
 AnzahlBilder = 100;
 std::vector&lt;int&gt; idxBildArray( AnzahlBilder, -1 );

 Test = 99;

 ShowMessage( &quot;Constructor BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
 ShowMessage( &quot;Constructor Test = &quot; + IntToStr( Test ) );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
	int bld = 0;

	ShowMessage( &quot;FormShow BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
	ShowMessage( &quot;FormShow Test = &quot; + IntToStr( Test ) );

	for ( int i = 0; i &lt; AnzahlBilder; i++ )
	{
	 if ( idxBildArray[i] != -1 )
		bld++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
	int bld = 0;

	ShowMessage( &quot;Timer BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
	ShowMessage( &quot;Timer Test = &quot; + IntToStr( Test ) );

	for ( int i = 0; i &lt; AnzahlBilder; i++ )
	{
	 if ( idxBildArray[i] != -1 )
		bld++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Timer1-&gt;Enabled = true;
}
//---------------------------------------------------------------------------
</code></pre>
<p>*.h</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include &lt;System.Classes.hpp&gt;
#include &lt;Vcl.Controls.hpp&gt;
#include &lt;Vcl.StdCtrls.hpp&gt;
#include &lt;Vcl.Forms.hpp&gt;
#include &lt;Vcl.ExtCtrls.hpp&gt;
#include &lt;vector&gt;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
	TTimer *Timer1;
	TMemo *Memo1;
	TButton *Button1;
	TButton *Button2;
	void __fastcall FormShow(TObject *Sender);
	void __fastcall Timer1Timer(TObject *Sender);
	void __fastcall Button2Click(TObject *Sender);

private:	// Benutzer-Deklarationen
	std::vector&lt;int&gt; idxBildArray;
	int AnzahlBilder;
	int Test;

public:		// Benutzer-Deklarationen
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/354326/zugriff-auf-1-d-int-vector-array</link><generator>RSS for Node</generator><lastBuildDate>Sun, 08 Mar 2026 07:41:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/354326.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Oct 2023 10:29:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf 1-D int vector array on Thu, 05 Oct 2023 10:29:00 GMT]]></title><description><![CDATA[<p>Hallo,<br />
warum kann ich in OnShow und OnTimer nicht auf das vector array zugreifen und bekomme access violation. Auf int Test funktioniert der Zugriff. Habe ich da in der Deklaration *.h etwas falsch gemacht ?</p>
<p>*.cpp</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
 AnzahlBilder = 100;
 std::vector&lt;int&gt; idxBildArray( AnzahlBilder, -1 );

 Test = 99;

 ShowMessage( &quot;Constructor BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
 ShowMessage( &quot;Constructor Test = &quot; + IntToStr( Test ) );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
	int bld = 0;

	ShowMessage( &quot;FormShow BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
	ShowMessage( &quot;FormShow Test = &quot; + IntToStr( Test ) );

	for ( int i = 0; i &lt; AnzahlBilder; i++ )
	{
	 if ( idxBildArray[i] != -1 )
		bld++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
	int bld = 0;

	ShowMessage( &quot;Timer BA size = &quot; + IntToStr( (int)idxBildArray.size() ) );
	ShowMessage( &quot;Timer Test = &quot; + IntToStr( Test ) );

	for ( int i = 0; i &lt; AnzahlBilder; i++ )
	{
	 if ( idxBildArray[i] != -1 )
		bld++;
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Timer1-&gt;Enabled = true;
}
//---------------------------------------------------------------------------
</code></pre>
<p>*.h</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include &lt;System.Classes.hpp&gt;
#include &lt;Vcl.Controls.hpp&gt;
#include &lt;Vcl.StdCtrls.hpp&gt;
#include &lt;Vcl.Forms.hpp&gt;
#include &lt;Vcl.ExtCtrls.hpp&gt;
#include &lt;vector&gt;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
	TTimer *Timer1;
	TMemo *Memo1;
	TButton *Button1;
	TButton *Button2;
	void __fastcall FormShow(TObject *Sender);
	void __fastcall Timer1Timer(TObject *Sender);
	void __fastcall Button2Click(TObject *Sender);

private:	// Benutzer-Deklarationen
	std::vector&lt;int&gt; idxBildArray;
	int AnzahlBilder;
	int Test;

public:		// Benutzer-Deklarationen
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2618320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2618320</guid><dc:creator><![CDATA[Ronco]]></dc:creator><pubDate>Thu, 05 Oct 2023 10:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf 1-D int vector array on Thu, 05 Oct 2023 11:21:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/38313">@Ronco</a> sagte in <a href="/forum/post/2618320">Zugriff auf 1-D int vector array</a>:</p>
<blockquote>
<p>AnzahlBilder = 100;<br />
std::vector&lt;int&gt; idxBildArray( AnzahlBilder, -1 );</p>
</blockquote>
<p>Das erstellt die einen NEUEN vector idxBildArray INNERHALB der Funktion Form1. Dieser hat NICHTS mit dem idxBildArray der Form zu tun.</p>
<p>Du hast ja auch nicht <code>int AnzahlBilder = 100</code> geschrieben, sondern das korrekt ohne das <code>int</code> gemacht, damit eben keine neue Variable erzeugt wird. Weise einfach zu: <code>idxBildArray = std::vector&lt;int&gt;(AnzahlBilder, -1)</code>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2618323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2618323</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Thu, 05 Oct 2023 11:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf 1-D int vector array on Thu, 05 Oct 2023 11:32:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/33261">@wob</a> : Ah, ok, vielen Dank für die schnelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2618324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2618324</guid><dc:creator><![CDATA[Ronco]]></dc:creator><pubDate>Thu, 05 Oct 2023 11:32:23 GMT</pubDate></item></channel></rss>