<?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[Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem mit dem Delphi Operator &quot;as&quot; - wie implementiere ich die<br />
Funtkionalität in BCB?<br />
Konkret geht es um die Scheduler Komponenten von Jcl/Jvcl.<br />
Ich möchte dynamisch Ereignisse hinzufügen und deren Eigenschaften ändern.<br />
Erstelle ich ein neues Ereignis bekomme ich das Interface IJclSchedule aus der<br />
Eigenschaft Schedule des erzeugten Ereignisses. Wie komme ich aber an das<br />
Interface IJclDailySchedule, das gleichfalls in der Eigenschaft Schedule steckt?<br />
In Delphi hab ich das probiert und es funktioniert so:</p>
<pre><code>var Event : TJvEventCollectionItem;
    JclSchedule : IJclSchedule;
    JclDailySchedule : IJclDailySchedule;
begin
  Event:=JvScheduledEvents.Events.Add;
  Event.Name:='Event1';
  JclSchedule:=Event.Schedule;
  JclSchedule.RecurringType:=srkDaily;
  JclDailySchedule:=JclSchedule as IJclDailySchedule;
end;
</code></pre>
<p>Daraus habe ich im BCB gemacht:</p>
<pre><code>TJvEventCollectionItem *Event;
 IJclSchedule *JclSchedule;
 IJclDailySchedule *JclDailySchedule;

 Event=JvScheduledEvents-&gt;Events-&gt;Add();
 Event-&gt;Name=&quot;Event1&quot;;
 JclSchedule=Event-&gt;Schedule;
 JclSchedule-&gt;RecurringType=srkDaily;
 JclDailySchedule=(IJclDailySchedule*)JclSchedule;
</code></pre>
<p>was allerdings beim Zugriff auf Eigenschaften von JclDailySchedule kläglich<br />
daneben geht (Zugriffsverletzungen). Das ist auch nicht wirklich verwunderlich,<br />
da sich die Interfacezeiger in der Delphivariante voneinander unterscheiden,<br />
während sie in BCB natürlich identisch sind (was den referenzierten Speicher<br />
angeht).<br />
Normalerweise nehme ich ja sonst bei der Programmierung unter Benutzung von<br />
Interfaces die Funktion QueryInterface - aber die verlangt eine GUID, die ich<br />
nicht habe.<br />
Hat jemand einen Tipp für mich?<br />
Vielen Dank -<br />
Ulf</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128809/delphi-quot-as-quot-operator-gt-bcb</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 14:40:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128809.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Dec 2005 11:42:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB on Wed, 07 Dec 2005 11:42:26 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem mit dem Delphi Operator &quot;as&quot; - wie implementiere ich die<br />
Funtkionalität in BCB?<br />
Konkret geht es um die Scheduler Komponenten von Jcl/Jvcl.<br />
Ich möchte dynamisch Ereignisse hinzufügen und deren Eigenschaften ändern.<br />
Erstelle ich ein neues Ereignis bekomme ich das Interface IJclSchedule aus der<br />
Eigenschaft Schedule des erzeugten Ereignisses. Wie komme ich aber an das<br />
Interface IJclDailySchedule, das gleichfalls in der Eigenschaft Schedule steckt?<br />
In Delphi hab ich das probiert und es funktioniert so:</p>
<pre><code>var Event : TJvEventCollectionItem;
    JclSchedule : IJclSchedule;
    JclDailySchedule : IJclDailySchedule;
begin
  Event:=JvScheduledEvents.Events.Add;
  Event.Name:='Event1';
  JclSchedule:=Event.Schedule;
  JclSchedule.RecurringType:=srkDaily;
  JclDailySchedule:=JclSchedule as IJclDailySchedule;
end;
</code></pre>
<p>Daraus habe ich im BCB gemacht:</p>
<pre><code>TJvEventCollectionItem *Event;
 IJclSchedule *JclSchedule;
 IJclDailySchedule *JclDailySchedule;

 Event=JvScheduledEvents-&gt;Events-&gt;Add();
 Event-&gt;Name=&quot;Event1&quot;;
 JclSchedule=Event-&gt;Schedule;
 JclSchedule-&gt;RecurringType=srkDaily;
 JclDailySchedule=(IJclDailySchedule*)JclSchedule;
</code></pre>
<p>was allerdings beim Zugriff auf Eigenschaften von JclDailySchedule kläglich<br />
daneben geht (Zugriffsverletzungen). Das ist auch nicht wirklich verwunderlich,<br />
da sich die Interfacezeiger in der Delphivariante voneinander unterscheiden,<br />
während sie in BCB natürlich identisch sind (was den referenzierten Speicher<br />
angeht).<br />
Normalerweise nehme ich ja sonst bei der Programmierung unter Benutzung von<br />
Interfaces die Funktion QueryInterface - aber die verlangt eine GUID, die ich<br />
nicht habe.<br />
Hat jemand einen Tipp für mich?<br />
Vielen Dank -<br />
Ulf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936537</guid><dc:creator><![CDATA[JFierce7]]></dc:creator><pubDate>Wed, 07 Dec 2005 11:42:26 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB on Wed, 07 Dec 2005 11:54:56 GMT]]></title><description><![CDATA[<p>Wenn ich den Delphi-Code richtig interpretiere (nein ich kann kein Object-Pascal), dann schau Dir mal die verschiedenen cast Operatoren an.<br />
dynamic_cast,<br />
static_cast,<br />
const_cast und<br />
reinterpret_cast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936550</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Dec 2005 11:54:56 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB on Wed, 07 Dec 2005 13:22:05 GMT]]></title><description><![CDATA[<p>Danke für den Tipp!</p>
<p>Leider habe ich es damit nicht hin bekommen -<br />
dynamic_cast&lt;IJclDailySchedule*&gt;(JclSchedule)<br />
führt noch in dieser Quelltextzeile zu einer Zugriffsverletzung,<br />
reinterpret_cast ist effektiv die C++ Version meiner alten C Typumwandlung<br />
und const_cast/static_cast kompilieren gar nicht erst (sind nach meiner Auffassung<br />
auch nur Typumwandlungen zur Kompilierungszeit).</p>
<p>Ulf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936565</guid><dc:creator><![CDATA[JFierce7]]></dc:creator><pubDate>Wed, 07 Dec 2005 13:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB on Wed, 07 Dec 2005 13:22:07 GMT]]></title><description><![CDATA[<p>Danke für den Tipp!</p>
<p>Leider habe ich es damit nicht hin bekommen -<br />
dynamic_cast&lt;IJclDailySchedule*&gt;(JclSchedule)<br />
führt noch in dieser Quelltextzeile zu einer Zugriffsverletzung,<br />
reinterpret_cast ist effektiv die C++ Version meiner alten C Typumwandlung<br />
und const_cast/static_cast kompilieren gar nicht erst (sind nach meiner Auffassung<br />
auch nur Typumwandlungen zur Kompilierungszeit).</p>
<p>Ulf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936566</guid><dc:creator><![CDATA[JFierce7]]></dc:creator><pubDate>Wed, 07 Dec 2005 13:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi &amp;quot;as&amp;quot; Operator -&amp;gt; BCB on Wed, 07 Dec 2005 13:38:41 GMT]]></title><description><![CDATA[<p>Sorry für die beiden gleichlautenden Einträge - gab wohl Probleme bei der Übertragung.</p>
<p>Ich habe die Umwandlung nun endlich hinbekommen. Die Lösung lautet:<br />
hr=JclSchedule-&gt;QueryInterface&lt;IJclDailySchedule&gt;(&amp;JclDailySchedule);<br />
(hr ist vom Typ HResult und kann verwendet werden, um den Erfolg der Umwandlung<br />
zu überprüfen (sollte S_OK sein))</p>
<p>Das hatte ich zwar prinzipiell schon vorher mal probiert, aber irgendwie nicht<br />
durch den Compiler bekommen.</p>
<p>Viele Grüße<br />
Ulf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936567</guid><dc:creator><![CDATA[JFierce7]]></dc:creator><pubDate>Wed, 07 Dec 2005 13:38:41 GMT</pubDate></item></channel></rss>