<?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[Problem überhaupt lösbar ?]]></title><description><![CDATA[<pre><code>private: System::Void MeasureVoltage (String^ error_out, int deflection, float definition, unsigned int channel) 
{

	float DataValue=0;
    DaqBoard = gcnew MccDaq::MccBoard(0);
    ULState = gcnew MccDaq::ErrorInfo(0);

	if(DaqBoard != nullptr)
				{	

					/* VIn measuaring */
					ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
				    /*A/D range code*/

					if (ULState-&gt;Value == MccDaq::ErrorInfo::ErrorCode::NoErrors)
					{

						if((definition/100*(100-deflection)) &lt;= DataValue &lt;= (DataValue/100*(100+definition)))
						{
						print(&quot;VS_CH_IN - OK - Voltage&quot;);
						File::AppendAllText(DIRECTION,&quot;VS_CH_IN - OK - Voltage: &quot;+ DataValue.ToString()+ &quot;V&quot; + Environment::NewLine + Environment::NewLine);
						}
						else
						{
						print(&quot;VS_CH_IN - NOK - Wrong Voltage&quot;);
						print(error_out);
						File::AppendAllText(DIRECTION,&quot;VS_CH_IN - NOK - Wrong Voltage: &quot; + DataValue.ToString()+ &quot;V&quot; + Environment::NewLine + error_out + Environment::NewLine + Environment::NewLine);
						}
					/**/
					}
					else
					{
					print(ULState-&gt;Message);
					File::AppendAllText(DIRECTION,ULState-&gt;Message + Environment::NewLine + Environment::NewLine);
					}
		      }

   }
</code></pre>
<p>Ich habe diese Funktion geschrieben, das Problem liegt in dieser Zeile:</p>
<pre><code>ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
<p>Und zwar beim dritten Parameter, die MccDaq ist eine DLL und eig. für C# weshalb der aufruf in den examples so aussieht:</p>
<pre><code>ULStat = DaqBoard.VIn( Chan, RangeSelected, out DataValue, Options );
</code></pre>
<p>Man berücksichtige das <strong>out</strong> vor dem DataValue welches in C# als eine Art Referenz fungiert. (keine Erfahrung in C#)</p>
<p>Das will aber einfach nicht funktionieren, wenn ich eine Referenz übergebe also<br />
&amp;Datavalue gibt der Compiler mir ein Fehler aus. Lege ich davor eine an:<br />
float Datavalue1=0;<br />
float&amp; Datavalue=Datavalue;</p>
<p>kommt immernoch der Feheler und zwar der folgende: (Runtime)</p>
<blockquote>
<p>Eine nicht behandelte Ausnahme des Typs &quot;System.NullReferenceException&quot; ist in MccDaq.dll aufgetreten.</p>
<p>Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.</p>
</blockquote>
<p>Vielleicht hat ja jemand ne Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300679/problem-überhaupt-lösbar</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 17:21:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300679.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Mar 2012 10:59:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 10:59:30 GMT]]></title><description><![CDATA[<pre><code>private: System::Void MeasureVoltage (String^ error_out, int deflection, float definition, unsigned int channel) 
{

	float DataValue=0;
    DaqBoard = gcnew MccDaq::MccBoard(0);
    ULState = gcnew MccDaq::ErrorInfo(0);

	if(DaqBoard != nullptr)
				{	

					/* VIn measuaring */
					ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
				    /*A/D range code*/

					if (ULState-&gt;Value == MccDaq::ErrorInfo::ErrorCode::NoErrors)
					{

						if((definition/100*(100-deflection)) &lt;= DataValue &lt;= (DataValue/100*(100+definition)))
						{
						print(&quot;VS_CH_IN - OK - Voltage&quot;);
						File::AppendAllText(DIRECTION,&quot;VS_CH_IN - OK - Voltage: &quot;+ DataValue.ToString()+ &quot;V&quot; + Environment::NewLine + Environment::NewLine);
						}
						else
						{
						print(&quot;VS_CH_IN - NOK - Wrong Voltage&quot;);
						print(error_out);
						File::AppendAllText(DIRECTION,&quot;VS_CH_IN - NOK - Wrong Voltage: &quot; + DataValue.ToString()+ &quot;V&quot; + Environment::NewLine + error_out + Environment::NewLine + Environment::NewLine);
						}
					/**/
					}
					else
					{
					print(ULState-&gt;Message);
					File::AppendAllText(DIRECTION,ULState-&gt;Message + Environment::NewLine + Environment::NewLine);
					}
		      }

   }
</code></pre>
<p>Ich habe diese Funktion geschrieben, das Problem liegt in dieser Zeile:</p>
<pre><code>ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
<p>Und zwar beim dritten Parameter, die MccDaq ist eine DLL und eig. für C# weshalb der aufruf in den examples so aussieht:</p>
<pre><code>ULStat = DaqBoard.VIn( Chan, RangeSelected, out DataValue, Options );
</code></pre>
<p>Man berücksichtige das <strong>out</strong> vor dem DataValue welches in C# als eine Art Referenz fungiert. (keine Erfahrung in C#)</p>
<p>Das will aber einfach nicht funktionieren, wenn ich eine Referenz übergebe also<br />
&amp;Datavalue gibt der Compiler mir ein Fehler aus. Lege ich davor eine an:<br />
float Datavalue1=0;<br />
float&amp; Datavalue=Datavalue;</p>
<p>kommt immernoch der Feheler und zwar der folgende: (Runtime)</p>
<blockquote>
<p>Eine nicht behandelte Ausnahme des Typs &quot;System.NullReferenceException&quot; ist in MccDaq.dll aufgetreten.</p>
<p>Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.</p>
</blockquote>
<p>Vielleicht hat ja jemand ne Idee <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189699</guid><dc:creator><![CDATA[ComNet1]]></dc:creator><pubDate>Thu, 08 Mar 2012 10:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 11:28:37 GMT]]></title><description><![CDATA[<p>ComNet1 schrieb:</p>
<blockquote>
<p>Ich habe diese Funktion geschrieben, das Problem liegt in dieser Zeile:</p>
<pre><code>ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
</blockquote>
<p>Die Zeile sieht eigentlich gut aus. Der Parameter müsste vom Typ <code>float%</code> sein (<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://msdn.microsoft.com/en-us/library/8903062a.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/8903062a.aspx</a> ) Was für eine Fehlermeldung bekommst du denn damit?</p>
<blockquote>
<p>Das will aber einfach nicht funktionieren, wenn ich eine Referenz übergebe also<br />
&amp;Datavalue gibt der Compiler mir ein Fehler aus.</p>
</blockquote>
<p>Mit &amp;Datavalue erzeugt man keine Referenz.</p>
<p>Mal was zu dem Code.</p>
<pre><code class="language-cli">private: System::Void MeasureVoltage (String^ error_out, int deflection, float definition, unsigned int channel) // (1)
{
  float DataValue=0;
  DaqBoard = gcnew MccDaq::MccBoard(0);
  ULState = gcnew MccDaq::ErrorInfo(0);

  if(DaqBoard != nullptr) // (2)
  {	
/* ... */
      if((definition/100*(100-deflection)) &lt;= DataValue &lt;= (DataValue/100*(100+definition))) // (3)
</code></pre>
<p>(1) Warum nicht void? Du schreibst doch auch int und nicht System::Int32<br />
(2) Wozu? gcnew kann keine Nullreferenz zurückgeben.<br />
(3) Was soll das sein? Die mathematische Schreibweise A ≤ B ≤ C kann man nicht 1:1 übertragen (A &lt;= B &lt;= C würde zuerst A &lt;= B auswerten, das ergibt true oder false, also 1 oder 0, und diese Zahl würde dann mit C verglichen werden). Das schreibt man so: <code>(A &lt;= B &amp;&amp; B &lt;= C)</code></p>
<p>Achja, das ganze ist natürlich kein C++, sondern C++/CLI. Mach dich aufs Verschieben deines Beitrages gefasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189707</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Mar 2012 11:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 12:44:03 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Antwort!!!<br />
Ehrlich gesagt war ich nur für den Funktionsaufruf zuständig.</p>
<p>Stimmt, wie genau müsste jetzt die richtige Tracking Reference aussehen ?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>float% Datavalue=0;<br />
wohl kaum ?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189752</guid><dc:creator><![CDATA[ComNet1]]></dc:creator><pubDate>Thu, 08 Mar 2012 12:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 12:49:49 GMT]]></title><description><![CDATA[<p>ComNet1 schrieb:</p>
<blockquote>
<p>Stimmt, wie genau müsste jetzt die richtige Tracking Reference aussehen ?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>float% Datavalue=0;<br />
wohl kaum ?</p>
</blockquote>
<p>Die Referenz gibts doch schon, das ist der Funktionsparameter. Du musst überhaupt nichts weiter tun:</p>
<pre><code class="language-cli">float DataValue;
ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
<p>Und wie gesagt, falls das nicht funktioniert, bitte mehr Details. &quot;Geht nicht&quot; reicht nicht. Die Fehlermeldung und die Deklaration der Funktion bräuchte man.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189759</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Mar 2012 12:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 12:57:42 GMT]]></title><description><![CDATA[<pre><code>float DataValue1=0;
	float% DataValue=DataValue1;

    DaqBoard = gcnew MccDaq::MccBoard(0);
    ULState = gcnew MccDaq::ErrorInfo(0);

	if(DaqBoard != nullptr)
				{	

					/* VIn measuaring */
					ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
<p>Neuer Versuch, und leider immernoch Runtime error <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189765</guid><dc:creator><![CDATA[ComNet1]]></dc:creator><pubDate>Thu, 08 Mar 2012 12:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 13:48:21 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe erstmal!</p>
<p>Also der Fehler kommt wie folgt (beim Debuggen) wenn das Prog. versucht die Fkt aufzurufen:</p>
<blockquote>
<p>Eine nicht behandelte Ausnahme des Typs &quot;System.NullReferenceException&quot; ist in MccDaq.dll aufgetreten.</p>
<p>Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.</p>
</blockquote>
<p>Mit der Fkt mein ich jetzt diese Zeile hier:</p>
<pre><code class="language-cli">ULState=DaqBoard-&gt;VIn(channel, MccDaq::Range::Bip10Volts , DataValue , MccDaq::VInOptions::Default);
</code></pre>
<p>Der Fehler ist irgendwo in diesem Aufruf, das einzige was ich noch habe ist ein Aufruf von der Fkt in C# aus dem Example:</p>
<pre><code>MccDaq.ErrorInfo ULStat;
			float DataValue;
			int Chan;
		    MccDaq.VInOptions Options;

			tmrConvert.Stop();

			//  Collect the data by calling VIn memeber function of MccBoard object
			//   Parameters:
			//     Chan       :the input channel number
			//     Range      :the Range for the board.
			//     DataValue  :the name for the value collected

			Chan = int.Parse(txtNumChan.Text); //  set input channel
		    Options = VInOptions.Default;

			ULStat = DaqBoard.VIn( Chan, RangeSelected, out DataValue, Options );
</code></pre>
<p><a href="ftp://ftp.measurementcomputing.com/Customer/JBR/ULHelp/Function_Reference/Analog_IO_Functions_for_NET/VIn.htm" rel="nofollow">ftp://ftp.measurementcomputing.com/Customer/JBR/ULHelp/Function_Reference/Analog_IO_Functions_for_NET/VIn.htm</a></p>
<p>Vielleicht hilft es ja.<br />
Mhh bin ziemlich ratlos.</p>
<p>Gruß, vielen Dank!</p>
<p>Ps. ach so der Aufruf war also soweit in Ordnung mit dem:</p>
<pre><code class="language-cli">float DataValue=0
</code></pre>
<p>---------</p>
<blockquote>
<p>(2) Wozu? gcnew kann keine Nullreferenz zurückgeben.</p>
</blockquote>
<p>Weil der Aufruf insgesamt so lauten muss laut Dll:</p>
<pre><code class="language-cli">private MccDaq.MccBoard DaqBoard;
DaqBoard= new MccDaq.MccBoard(0);
</code></pre>
<p>Meiner ist:</p>
<pre><code class="language-cli">MccDaq::MccBoard^ DaqBoard;
//....
DaqBoard = gcnew MccDaq::MccBoard(0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2189766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189766</guid><dc:creator><![CDATA[ComNet]]></dc:creator><pubDate>Thu, 08 Mar 2012 13:48:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem überhaupt lösbar ? on Thu, 08 Mar 2012 16:26:29 GMT]]></title><description><![CDATA[<p>ComNet schrieb:</p>
<blockquote>
<p>Also der Fehler kommt wie folgt (beim Debuggen) wenn das Prog. versucht die Fkt aufzurufen:</p>
<blockquote>
<p>Eine nicht behandelte Ausnahme des Typs &quot;System.NullReferenceException&quot; ist in MccDaq.dll aufgetreten.</p>
<p>Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.</p>
</blockquote>
</blockquote>
<p>Das liegt dann aber zumindest nicht an dem out-Parameter. Die anderen Parameter können es auch nicht sein, das sind alles Werttypen.</p>
<blockquote>
<p>Ps. ach so der Aufruf war also soweit in Ordnung mit dem:</p>
<pre><code class="language-cli">float DataValue=0
</code></pre>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>---------</p>
<blockquote>
<p>(2) Wozu? gcnew kann keine Nullreferenz zurückgeben.</p>
</blockquote>
<p>Weil der Aufruf insgesamt so lauten muss laut Dll:</p>
<pre><code class="language-cli">private MccDaq.MccBoard DaqBoard;
DaqBoard= new MccDaq.MccBoard(0);
</code></pre>
<p>Meiner ist:</p>
<pre><code class="language-cli">MccDaq::MccBoard^ DaqBoard;
//....
DaqBoard = gcnew MccDaq::MccBoard(0);
</code></pre>
</blockquote>
<p>Das ist jetzt irgendwie keine Antwort. Ob die Variable lokal oder eine Membervariable ist hat damit nichts zu tun. Du musst nicht auf nullptr testen, wenn die Referenz an der Stelle nicht null sein kann, weil direkt davor eine Zuweisung mit einem gcnew-Ausdruck stattfindet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189855</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Mar 2012 16:26:29 GMT</pubDate></item></channel></rss>