<?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[komprimieren... wer kann helfen]]></title><description><![CDATA[<p>hi ihr code gurus,<br />
ich hab ein kleines problem, ich muss projekt ein kleines komprimierungs und dekomprimierungsprogramm schreiben das bmp und text (andre auch) komprimieren soll..</p>
<p>Das Verfahren:<br />
Bei dem Verfahren werden die Zeichen byteweise eingelesen und gezählt. Folgen mehr als 3 gleiche Zeichen aufeinander, so werden sie gegen ein [Schlüsselzeichen], einen[Zähler] und das mehrfach vorkommende [Zeichen] ersetzt.<br />
Das Schlüsselzeichen wird für den Expander in die Datei geschrieben um ihm zu sagen, dass eine Ausnahme folgt und er sich dem Zähler entsprechend verhalten soll.</p>
<p>so das als kleine anleitung <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="🙂"
    /> und nu zu meinen problem...</p>
<p>ich kann zwar textdateien komprimieren und auch wieder entpacken aber beim komprimieren von bmp´s gibs fehler <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>
<p>ich kann die einfach nicht wieder entpacken...</p>
<p>so und hier mal ein code... ich hoffe ihr könnt mir helfen</p>
<pre><code class="language-cpp">void CRled3Dlg::Komprimieren(CFile &amp;QuellDatei, CFile &amp;ZielDatei)
{
	unsigned char cZeichen;
	unsigned char cNaechstesZeichen;
	unsigned char cZaehler = (unsigned char)1;
	unsigned char cEsc = (unsigned char)0x90;
	unsigned char cTempEsc = (unsigned char)0x0;
	int nEscWechsel = 1024;
	int nZaehlerBytes = 1;

	//Header in Zieldatei schreiben
	unsigned char cHeader[4]  ={'R','L','3',(unsigned char)0x90};
	ZielDatei.Write(cHeader,4);

	if (QuellDatei.Read(&amp;cZeichen,1))
	{
		//solange lesen wie ein Zeichen gefunden wird
		while (QuellDatei.Read (&amp;cNaechstesZeichen,1))
		{
			nZaehlerBytes++;

			if (cZeichen == cEsc)
			{
				ZielDatei.Write(&amp;cEsc,1);
				ZielDatei.Write(&amp;cTempEsc,1);
				cZaehler = 1;
				cZeichen = cNaechstesZeichen;
			}
			else
			{
				if(cZeichen == cNaechstesZeichen &amp;&amp; cZaehler &lt; 255)
				{
					cZaehler++;

				}
				else
				{
					if ((int)cZaehler &gt; 3)
					{
						ZielDatei.Write(&amp;cEsc,1);
						ZielDatei.Write(&amp;cZaehler,1);
						ZielDatei.Write(&amp;cZeichen,1);
						cZaehler = (unsigned char)1;
						cZeichen = cNaechstesZeichen;
					}
					else
					{
						for (int nI = 0; nI &lt; (int)cZaehler; nI++)
						{
							ZielDatei.Write(&amp;cZeichen,1);
						}
						cZaehler = (unsigned char)1;
						cZeichen = cNaechstesZeichen;

					}

				}

			}

		}// Ende while (QuellDatei.Read (&amp;cNaechstesZeichen,1)

		if (cZaehler &gt; 3)
		{
			ZielDatei.Write(&amp;cEsc,1);
			ZielDatei.Write(&amp;cZaehler,1);
			ZielDatei.Write(&amp;cZeichen,1);
			cZaehler = 1;
			cZeichen = cNaechstesZeichen;

		}
		else
		{
			for (int nI = 0; nI &lt; cZaehler; nI++)
			{
				ZielDatei.Write(&amp;cZeichen,1);
			}
		}

	}//ende if (QuellDatei.Read(&amp;cZeichen,1)

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/53234/komprimieren-wer-kann-helfen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 01 Jun 2026 06:17:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/53234.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Oct 2003 14:01:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to komprimieren... wer kann helfen on Mon, 27 Oct 2003 14:01:17 GMT]]></title><description><![CDATA[<p>hi ihr code gurus,<br />
ich hab ein kleines problem, ich muss projekt ein kleines komprimierungs und dekomprimierungsprogramm schreiben das bmp und text (andre auch) komprimieren soll..</p>
<p>Das Verfahren:<br />
Bei dem Verfahren werden die Zeichen byteweise eingelesen und gezählt. Folgen mehr als 3 gleiche Zeichen aufeinander, so werden sie gegen ein [Schlüsselzeichen], einen[Zähler] und das mehrfach vorkommende [Zeichen] ersetzt.<br />
Das Schlüsselzeichen wird für den Expander in die Datei geschrieben um ihm zu sagen, dass eine Ausnahme folgt und er sich dem Zähler entsprechend verhalten soll.</p>
<p>so das als kleine anleitung <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="🙂"
    /> und nu zu meinen problem...</p>
<p>ich kann zwar textdateien komprimieren und auch wieder entpacken aber beim komprimieren von bmp´s gibs fehler <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>
<p>ich kann die einfach nicht wieder entpacken...</p>
<p>so und hier mal ein code... ich hoffe ihr könnt mir helfen</p>
<pre><code class="language-cpp">void CRled3Dlg::Komprimieren(CFile &amp;QuellDatei, CFile &amp;ZielDatei)
{
	unsigned char cZeichen;
	unsigned char cNaechstesZeichen;
	unsigned char cZaehler = (unsigned char)1;
	unsigned char cEsc = (unsigned char)0x90;
	unsigned char cTempEsc = (unsigned char)0x0;
	int nEscWechsel = 1024;
	int nZaehlerBytes = 1;

	//Header in Zieldatei schreiben
	unsigned char cHeader[4]  ={'R','L','3',(unsigned char)0x90};
	ZielDatei.Write(cHeader,4);

	if (QuellDatei.Read(&amp;cZeichen,1))
	{
		//solange lesen wie ein Zeichen gefunden wird
		while (QuellDatei.Read (&amp;cNaechstesZeichen,1))
		{
			nZaehlerBytes++;

			if (cZeichen == cEsc)
			{
				ZielDatei.Write(&amp;cEsc,1);
				ZielDatei.Write(&amp;cTempEsc,1);
				cZaehler = 1;
				cZeichen = cNaechstesZeichen;
			}
			else
			{
				if(cZeichen == cNaechstesZeichen &amp;&amp; cZaehler &lt; 255)
				{
					cZaehler++;

				}
				else
				{
					if ((int)cZaehler &gt; 3)
					{
						ZielDatei.Write(&amp;cEsc,1);
						ZielDatei.Write(&amp;cZaehler,1);
						ZielDatei.Write(&amp;cZeichen,1);
						cZaehler = (unsigned char)1;
						cZeichen = cNaechstesZeichen;
					}
					else
					{
						for (int nI = 0; nI &lt; (int)cZaehler; nI++)
						{
							ZielDatei.Write(&amp;cZeichen,1);
						}
						cZaehler = (unsigned char)1;
						cZeichen = cNaechstesZeichen;

					}

				}

			}

		}// Ende while (QuellDatei.Read (&amp;cNaechstesZeichen,1)

		if (cZaehler &gt; 3)
		{
			ZielDatei.Write(&amp;cEsc,1);
			ZielDatei.Write(&amp;cZaehler,1);
			ZielDatei.Write(&amp;cZeichen,1);
			cZaehler = 1;
			cZeichen = cNaechstesZeichen;

		}
		else
		{
			for (int nI = 0; nI &lt; cZaehler; nI++)
			{
				ZielDatei.Write(&amp;cZeichen,1);
			}
		}

	}//ende if (QuellDatei.Read(&amp;cZeichen,1)

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/380602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/380602</guid><dc:creator><![CDATA[devil_1978]]></dc:creator><pubDate>Mon, 27 Oct 2003 14:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to komprimieren... wer kann helfen on Mon, 27 Oct 2003 14:44:06 GMT]]></title><description><![CDATA[<p>Ich Tip mal darauf, dass Du Dein Esc-Zeichen nicht richtig behandelst.<br />
Beim Kompremieren schauste schon nach. Aber vieleicht verpaßte das beim Endpacken? Schreib Dir einfach mal eine Datei mit z.B. folgenes Inhalt &quot;0x90 0x00 x90 x90&quot;. Wenn die nicht geht weißte ja wodran es liegt.<br />
MfG Gabriel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/380645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/380645</guid><dc:creator><![CDATA[Gabriel]]></dc:creator><pubDate>Mon, 27 Oct 2003 14:44:06 GMT</pubDate></item><item><title><![CDATA[Reply to komprimieren... wer kann helfen on Mon, 27 Oct 2003 15:01:42 GMT]]></title><description><![CDATA[<p>hallo gabriel,</p>
<p>danke für deine antwort...<br />
leider muss auch noch ein fehler beim komprimieren sein.. im gegensatz du dem progi von meinen prof sind die dateien von meinen progi 2kb zu gross <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>
<p>so damit ihr alle nochmal einen überblick habt nochmal der code zum dekomprimieren</p>
<pre><code class="language-cpp">void CRled3Dlg::Dekomprimieren(CStdioFile &amp;QuellDatei, CStdioFile &amp;ZielDatei)
{
	unsigned char cHeader[4];
	unsigned char cEsc;
	unsigned char cZeichen;
	int nZaehler = 0;

	QuellDatei.Read(cHeader,3);
	cHeader[3] = NULL;
	QuellDatei.Read(&amp;cEsc,1);

	if( cHeader[0] == 'R' &amp;&amp; cHeader[1] == 'L' &amp;&amp; cHeader[2] == '3' )  // wenn tatsächlich 4 Zeichen gelesen
	{
		while (QuellDatei.Read(&amp;cZeichen,1))
		{
			if (cZeichen == cEsc)
			{
				QuellDatei.Read(&amp;cZeichen,1);

				if (cZeichen == (unsigned char) 0)
				{
					ZielDatei.Write(&amp;cEsc,1);

				}
				else
				{
					if (cZeichen == (unsigned char) 1)
					{
						QuellDatei.Read(&amp;cZeichen,1);
						cEsc = cZeichen;

					}
					else
					{
						if ( ((int)cZeichen &gt;  3 ))
						{
							nZaehler = (int) cZeichen;
							QuellDatei.Read(&amp;cZeichen,1);

							for ( int nI = 0; nI &lt; nZaehler; nI++ )
							{
								ZielDatei.Write(&amp;cZeichen,1);
							}

						}

					}

				}

			}
			else
			{
				ZielDatei.Write(&amp;cZeichen,1);
			}
		}

	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/380659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/380659</guid><dc:creator><![CDATA[devil*]]></dc:creator><pubDate>Mon, 27 Oct 2003 15:01:42 GMT</pubDate></item><item><title><![CDATA[Reply to komprimieren... wer kann helfen on Mon, 27 Oct 2003 19:28:10 GMT]]></title><description><![CDATA[<p>kann denn keiner bischen helfen <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/380862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/380862</guid><dc:creator><![CDATA[devil_1978]]></dc:creator><pubDate>Mon, 27 Oct 2003 19:28:10 GMT</pubDate></item></channel></rss>