<?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 mit CRect]]></title><description><![CDATA[<p>hallo,</p>
<p>Ich hab ein Problem mit CRect und zwar:<br />
ich hab in einer SDI-Anwendung ein TabCtrl welches sich in der view befindet da es im Hauptfenster angezeigt werden soll. Auf jeder Seite des TabCtrl soll ein ListCtrl angezeigt werden. Dieses ListCtrl hab ich dann auf der PropertyPage inplementiert und wird auch da initialisiert.<br />
das TabCtrl wird in der OnDraw() funktion initialisiert.<br />
In der OnDraw() Funktion wird auch das CRect erstellt wo das TabCtrl rein kommt.<br />
im TabCtrl befindet sich eine Funktion SetRectangle(void) welche dafür zuständig ist die PropertyPage einzugrenzen.</p>
<p>Das Problem ist wenn das Programm die funktion ausführt gibt es einen Assert fehler und wenn es sie nicht ausführt sitzt das ListCtrl an der falschen stelle!</p>
<p>Bitte helft mir!</p>
<pre><code>//View.cpp/////////////////////////////////////////////////////
void CKabelstPrfView::OnDraw(CDC* pDC)
{
  :arrow:    RECT ClientRect;  //bestimmt das CRect das das TabCtrl beinhaltet!

    GetClientRect(&amp;ClientRect); 
    ClientRect.bottom = 500; 
    ClientRect.left = 10; 
    ClientRect.right = 700; 
    ClientRect.top= 1; 

    m_AusgabeTab.Create( WS_CHILD | WS_VISIBLE, ClientRect, this, 255 ); 
    m_AusgabeTab.SetExtendedStyle( TCS_EX_FLATSEPARATORS|TCS_BUTTONS | TCS_FLATBUTTONS ); 
    m_AusgabeTab.InsertItem(0,_T(&quot;Stecker Tabelle&quot;)); 
    m_AusgabeTab.InsertItem(1,_T(&quot;Knoten Tabelle&quot;));
	CKabelstPrfDoc* pmyDoc=GetDocument();
	m_AusgabeTab.m_fnInit2(pmyDoc);
}
//TabCtrl/////////////////////////////////////////////////////
void CErgCtrl::m_fnInit2(CKabelstPrfDoc* pmyDoc)
{
//	InsertItem(0,_T(&quot;Stecker Tabelle&quot;),0); 
//  InsertItem(1,_T(&quot;Knoten Tabelle&quot;),1);
	m_nNumberOfPages=2;
	m_DocBasisPage=new CDocBasisPage[2];
    m_tabCurrent=0;

 //   InsertItem(2,_T(Übersetzung));
	for(int i=0;i&lt;m_nNumberOfPages;i++)
	{
		m_DocBasisPage[i].AddPage(&amp;m_DocBasisPage[i].m_SeiteA);
		m_DocBasisPage[i].m_SeiteA.Create(IDD_AUSGABE_1,this);
		m_DocBasisPage[i].m_SeiteA.Pageinit(pmyDoc,i);
		m_DocBasisPage[i].m_SeiteA.ShowWindow(SW_SHOW);
	}
 :arrow: 	SetRectangle(); //Ruft die funktion zur eingrenzung der PropertyPages
}

 :arrow: void CErgCtrl::SetRectangle(void) 
{ 
    CRect tabRect, itemRect; 
    int nX, nY, nXc, nYc; 

    GetClientRect(&amp;tabRect); 
    GetItemRect(0, &amp;itemRect); 

    nX=itemRect.left; 
    nY=itemRect.bottom+1; 
    nXc=tabRect.right-itemRect.left-1; 
    nYc=tabRect.bottom-nY-1; 

	for(int nCount=0; nCount &lt; m_nNumberOfPages; nCount++)
	{
		m_DocBasisPage[nCount].m_SeiteA.SetWindowPos(&amp;wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW); 
	}
}
//PropertyPage welche sich in der Propertysheet befindet/////////
void CAusgabe::Pageinit(CKabelstPrfDoc* pmyDoc, int PageTyp)
{
	pDoc=pmyDoc;
	int KnGroesse=0;
	int SpaltenZahl=0;
	int nColInterval=0;
	int e=0;
	char msg[20]=&quot;&quot;;
	AusgabeListe.ModifyStyle(0, LVS_REPORT);
 :arrow: 	CRect rect;                         //für den inhalt der ListCtrl!
	AusgabeListe.GetClientRect(&amp;rect);
	switch(PageTyp)
	{
	case 0:
		nColInterval = rect.Width()/5;

		AusgabeListe.InsertColumn(0, _T(&quot;Stecker Nr:&quot;), LVCFMT_LEFT, nColInterval);
		AusgabeListe.InsertColumn(1, _T(&quot;Stecker Bez.:&quot;), LVCFMT_LEFT, nColInterval*3);
		AusgabeListe.InsertColumn(2, _T(&quot;Kammer Anzahl&quot;), LVCFMT_LEFT, rect.Width()-4*nColInterval);
		break;
	case 1:
		for(int i=0;i&lt;pDoc-&gt;m_pcks.m_ckmKnMenge.m_nTatsaechlicheKnotenmenge;i++)
		{
			if(pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse&gt;KnGroesse)
			{
				KnGroesse=pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse;
			}
		}
		SpaltenZahl=(2+(KnGroesse*2));
		nColInterval = (rect.Width()/SpaltenZahl);

		AusgabeListe.InsertColumn(0, _T(&quot;Knoten Nr:&quot;), LVCFMT_LEFT, nColInterval);
		AusgabeListe.InsertColumn(1, _T(&quot;Knotengroesse:&quot;), LVCFMT_LEFT, nColInterval);
		for(i=2;i&lt;SpaltenZahl;i++)
		{
			if(i%2==0)
			{
				wsprintf(msg,&quot;Anschl.%d Bez:&quot;,e);
				AusgabeListe.InsertColumn(i,msg, LVCFMT_LEFT,nColInterval);
			}
			else
			{
				wsprintf(msg,&quot;Anschl.%d Kammer Nr.:&quot;,e);
				AusgabeListe.InsertColumn(i, msg, LVCFMT_LEFT,nColInterval);
				e++;
			}
		}
		break;
	}
	m_fnListDaten(PageTyp);

}

void CAusgabe::m_fnListDaten(int typ)
{
	AusgabeListe.DeleteAllItems();

	// Use the LV_ITEM structure to insert the items
	LVITEM lvi;
	CString strItem;
	switch(typ)
	{
	case 0:
		for (int i = 0; i &lt; pDoc-&gt;m_pcks.m_csmStMeng.m_nSteckerMenge; i++)
		{
			// Insert the first item
			strItem.Format(_T(&quot;%i&quot;), i);
			lvi.iItem = i;
			lvi.iSubItem = 0;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.InsertItem(&amp;lvi);

			// Set subitem 1
			strItem=pDoc-&gt;m_pcks.m_csmStMeng.m_pcstSteckEingang[i].m_szSteckerBezeichnung;
			lvi.iSubItem =1;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);

			// Set subitem 2
			strItem.Format((_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_csmStMeng.m_pcstSteckEingang[i].m_nPinAnz));
			lvi.iSubItem =2;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);

		}
		break;
	case 1:
		for (int i = 0; i &lt; pDoc-&gt;m_pcks.m_ckmKnMenge.m_nTatsaechlicheKnotenmenge; i++)
		{
			// Insert the first item
			strItem.Format(_T(&quot;%i&quot;), i);
			lvi.iItem = i;
			lvi.iSubItem = 0;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.InsertItem(&amp;lvi);

			// Set subitem 1
			strItem.Format(_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse);
			lvi.iSubItem =1;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);
			int f=0;
			for(int e=2;e&lt;(2+(pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse*2));e++)
			{
				if(e%2==0)
				{
					// Set subitem 2
					strItem=pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_pszKnSteck[f];
					lvi.iSubItem =e;
					lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
					AusgabeListe.SetItem(&amp;lvi);
				}
				else
				{
					strItem.Format(_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_pnKnPin[f]);
					lvi.iSubItem =e;
					lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
					AusgabeListe.SetItem(&amp;lvi);
					f++;
				}

			}
         }
}
</code></pre>
<p>Was ist da Falsch gelaufen?</p>
<p>Bitte helft mir!!!</p>
<p>Mit freundlichen Grüssen!</p>
<p>Twist</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/72583/problem-mit-crect</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 18:15:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72583.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Apr 2004 07:33:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit CRect on Fri, 30 Apr 2004 07:33:26 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>Ich hab ein Problem mit CRect und zwar:<br />
ich hab in einer SDI-Anwendung ein TabCtrl welches sich in der view befindet da es im Hauptfenster angezeigt werden soll. Auf jeder Seite des TabCtrl soll ein ListCtrl angezeigt werden. Dieses ListCtrl hab ich dann auf der PropertyPage inplementiert und wird auch da initialisiert.<br />
das TabCtrl wird in der OnDraw() funktion initialisiert.<br />
In der OnDraw() Funktion wird auch das CRect erstellt wo das TabCtrl rein kommt.<br />
im TabCtrl befindet sich eine Funktion SetRectangle(void) welche dafür zuständig ist die PropertyPage einzugrenzen.</p>
<p>Das Problem ist wenn das Programm die funktion ausführt gibt es einen Assert fehler und wenn es sie nicht ausführt sitzt das ListCtrl an der falschen stelle!</p>
<p>Bitte helft mir!</p>
<pre><code>//View.cpp/////////////////////////////////////////////////////
void CKabelstPrfView::OnDraw(CDC* pDC)
{
  :arrow:    RECT ClientRect;  //bestimmt das CRect das das TabCtrl beinhaltet!

    GetClientRect(&amp;ClientRect); 
    ClientRect.bottom = 500; 
    ClientRect.left = 10; 
    ClientRect.right = 700; 
    ClientRect.top= 1; 

    m_AusgabeTab.Create( WS_CHILD | WS_VISIBLE, ClientRect, this, 255 ); 
    m_AusgabeTab.SetExtendedStyle( TCS_EX_FLATSEPARATORS|TCS_BUTTONS | TCS_FLATBUTTONS ); 
    m_AusgabeTab.InsertItem(0,_T(&quot;Stecker Tabelle&quot;)); 
    m_AusgabeTab.InsertItem(1,_T(&quot;Knoten Tabelle&quot;));
	CKabelstPrfDoc* pmyDoc=GetDocument();
	m_AusgabeTab.m_fnInit2(pmyDoc);
}
//TabCtrl/////////////////////////////////////////////////////
void CErgCtrl::m_fnInit2(CKabelstPrfDoc* pmyDoc)
{
//	InsertItem(0,_T(&quot;Stecker Tabelle&quot;),0); 
//  InsertItem(1,_T(&quot;Knoten Tabelle&quot;),1);
	m_nNumberOfPages=2;
	m_DocBasisPage=new CDocBasisPage[2];
    m_tabCurrent=0;

 //   InsertItem(2,_T(Übersetzung));
	for(int i=0;i&lt;m_nNumberOfPages;i++)
	{
		m_DocBasisPage[i].AddPage(&amp;m_DocBasisPage[i].m_SeiteA);
		m_DocBasisPage[i].m_SeiteA.Create(IDD_AUSGABE_1,this);
		m_DocBasisPage[i].m_SeiteA.Pageinit(pmyDoc,i);
		m_DocBasisPage[i].m_SeiteA.ShowWindow(SW_SHOW);
	}
 :arrow: 	SetRectangle(); //Ruft die funktion zur eingrenzung der PropertyPages
}

 :arrow: void CErgCtrl::SetRectangle(void) 
{ 
    CRect tabRect, itemRect; 
    int nX, nY, nXc, nYc; 

    GetClientRect(&amp;tabRect); 
    GetItemRect(0, &amp;itemRect); 

    nX=itemRect.left; 
    nY=itemRect.bottom+1; 
    nXc=tabRect.right-itemRect.left-1; 
    nYc=tabRect.bottom-nY-1; 

	for(int nCount=0; nCount &lt; m_nNumberOfPages; nCount++)
	{
		m_DocBasisPage[nCount].m_SeiteA.SetWindowPos(&amp;wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW); 
	}
}
//PropertyPage welche sich in der Propertysheet befindet/////////
void CAusgabe::Pageinit(CKabelstPrfDoc* pmyDoc, int PageTyp)
{
	pDoc=pmyDoc;
	int KnGroesse=0;
	int SpaltenZahl=0;
	int nColInterval=0;
	int e=0;
	char msg[20]=&quot;&quot;;
	AusgabeListe.ModifyStyle(0, LVS_REPORT);
 :arrow: 	CRect rect;                         //für den inhalt der ListCtrl!
	AusgabeListe.GetClientRect(&amp;rect);
	switch(PageTyp)
	{
	case 0:
		nColInterval = rect.Width()/5;

		AusgabeListe.InsertColumn(0, _T(&quot;Stecker Nr:&quot;), LVCFMT_LEFT, nColInterval);
		AusgabeListe.InsertColumn(1, _T(&quot;Stecker Bez.:&quot;), LVCFMT_LEFT, nColInterval*3);
		AusgabeListe.InsertColumn(2, _T(&quot;Kammer Anzahl&quot;), LVCFMT_LEFT, rect.Width()-4*nColInterval);
		break;
	case 1:
		for(int i=0;i&lt;pDoc-&gt;m_pcks.m_ckmKnMenge.m_nTatsaechlicheKnotenmenge;i++)
		{
			if(pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse&gt;KnGroesse)
			{
				KnGroesse=pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse;
			}
		}
		SpaltenZahl=(2+(KnGroesse*2));
		nColInterval = (rect.Width()/SpaltenZahl);

		AusgabeListe.InsertColumn(0, _T(&quot;Knoten Nr:&quot;), LVCFMT_LEFT, nColInterval);
		AusgabeListe.InsertColumn(1, _T(&quot;Knotengroesse:&quot;), LVCFMT_LEFT, nColInterval);
		for(i=2;i&lt;SpaltenZahl;i++)
		{
			if(i%2==0)
			{
				wsprintf(msg,&quot;Anschl.%d Bez:&quot;,e);
				AusgabeListe.InsertColumn(i,msg, LVCFMT_LEFT,nColInterval);
			}
			else
			{
				wsprintf(msg,&quot;Anschl.%d Kammer Nr.:&quot;,e);
				AusgabeListe.InsertColumn(i, msg, LVCFMT_LEFT,nColInterval);
				e++;
			}
		}
		break;
	}
	m_fnListDaten(PageTyp);

}

void CAusgabe::m_fnListDaten(int typ)
{
	AusgabeListe.DeleteAllItems();

	// Use the LV_ITEM structure to insert the items
	LVITEM lvi;
	CString strItem;
	switch(typ)
	{
	case 0:
		for (int i = 0; i &lt; pDoc-&gt;m_pcks.m_csmStMeng.m_nSteckerMenge; i++)
		{
			// Insert the first item
			strItem.Format(_T(&quot;%i&quot;), i);
			lvi.iItem = i;
			lvi.iSubItem = 0;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.InsertItem(&amp;lvi);

			// Set subitem 1
			strItem=pDoc-&gt;m_pcks.m_csmStMeng.m_pcstSteckEingang[i].m_szSteckerBezeichnung;
			lvi.iSubItem =1;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);

			// Set subitem 2
			strItem.Format((_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_csmStMeng.m_pcstSteckEingang[i].m_nPinAnz));
			lvi.iSubItem =2;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);

		}
		break;
	case 1:
		for (int i = 0; i &lt; pDoc-&gt;m_pcks.m_ckmKnMenge.m_nTatsaechlicheKnotenmenge; i++)
		{
			// Insert the first item
			strItem.Format(_T(&quot;%i&quot;), i);
			lvi.iItem = i;
			lvi.iSubItem = 0;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.InsertItem(&amp;lvi);

			// Set subitem 1
			strItem.Format(_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse);
			lvi.iSubItem =1;
			lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
			AusgabeListe.SetItem(&amp;lvi);
			int f=0;
			for(int e=2;e&lt;(2+(pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_nKnGroesse*2));e++)
			{
				if(e%2==0)
				{
					// Set subitem 2
					strItem=pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_pszKnSteck[f];
					lvi.iSubItem =e;
					lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
					AusgabeListe.SetItem(&amp;lvi);
				}
				else
				{
					strItem.Format(_T(&quot;%d&quot;),pDoc-&gt;m_pcks.m_ckmKnMenge.m_pcknKnotenSpringer[i].m_pnKnPin[f]);
					lvi.iSubItem =e;
					lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
					AusgabeListe.SetItem(&amp;lvi);
					f++;
				}

			}
         }
}
</code></pre>
<p>Was ist da Falsch gelaufen?</p>
<p>Bitte helft mir!!!</p>
<p>Mit freundlichen Grüssen!</p>
<p>Twist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/511560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/511560</guid><dc:creator><![CDATA[Twist]]></dc:creator><pubDate>Fri, 30 Apr 2004 07:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit CRect on Fri, 30 Apr 2004 13:49:34 GMT]]></title><description><![CDATA[<p><strong>1. Ob das da richtig is weis ich net, kann es aber auch so lauten?:</strong></p>
<pre><code class="language-cpp">m_DocBasisPage[i].SetRectangle(); //Ruft die funktion zur eingrenzung der PropertyPages
</code></pre>
<p><strong>2. Müsste es zuoberst nicht das heissen?:</strong></p>
<pre><code class="language-cpp">CRect ClientRect;
</code></pre>
<p><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="➡"
    /> hast nur RECT geschrieben... ?</p>
<p><strong>Und 3.</strong><br />
Ich weiss es ja nicht aber könnte es <strong>auch</strong> an dieser Stelle da liegen?<br />
Bitte erst obiges versuchen, und dann mal hier unten weiterfahrn. Will Dir net den Code verpfuschen *grins* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">CRect rect;                         //für den inhalt der ListCtrl! 
    AusgabeListe.GetClientRect(&amp;rect);
</code></pre>
<p>Du definierst eine Variable CRect rect; und schreibst untendrann ▭ aber die Variable ist leer. Da die Variable mindestens 1 (&quot;Nenner&quot; ?) haben muss, könnte das Progg dann abstürzen. ?</p>
<p>Vielleicht das da:</p>
<pre><code class="language-cpp">CRect rect;
rect.bottom = -1;
rect.right = -1;
rect.left = -1;
rect.top = -1;¨

    AusgabeListe.GetClientRect(&amp;rect);
</code></pre>
<p>Eventuell 0 oder 1 einsetzen.<br />
Versuchs mal so.</p>
<p>mfg<br />
Pro</p>
]]></description><link>https://www.c-plusplus.net/forum/post/511869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/511869</guid><dc:creator><![CDATA[Programmer]]></dc:creator><pubDate>Fri, 30 Apr 2004 13:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit CRect on Fri, 30 Apr 2004 15:03:58 GMT]]></title><description><![CDATA[<p>Ja. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> RECT war aus nem alten Quelltext rauskopiert worden und da war das ein Typdev.</p>
<p>Danke vielmals!<br />
hast mir sehr geholfen.<br />
Funzt jetzt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/511940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/511940</guid><dc:creator><![CDATA[Twist]]></dc:creator><pubDate>Fri, 30 Apr 2004 15:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit CRect on Fri, 30 Apr 2004 15:15:25 GMT]]></title><description><![CDATA[<p>Gerngeschehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/511947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/511947</guid><dc:creator><![CDATA[Programmer]]></dc:creator><pubDate>Fri, 30 Apr 2004 15:15:25 GMT</pubDate></item></channel></rss>