<?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[TRichEdit - Fehler in eigener Format-Funktion]]></title><description><![CDATA[<p>Huhu Leute,<br />
vielleicht findet ihr ja den Fehler, wieso funktioniert diese Funktion bei zu langen Zeilen nicht?</p>
<p><strong>Was macht die Funktion?</strong><br />
Die Funktion soll das Formatieren von Bereichen in einem TRichEdit erleichtern. Man übergibt die Zeile und dann entsprechende Formatierungseigentschaften. Da mit Default-Werten gearbeitet wird, muss man allerdings nicht immer alle Parameter angeben! (Das RichEdit heißt in diesem Fall &quot;display&quot; und ich will kein TFont übergeben, um schonmal Posts dieser Art zu sparen ;D)</p>
<p>Die Funktion formatiert bei zu langen Zeilen die falsche Stelle (nicht die Übergebene), obwohl die anderen kürzeren Zeilen, problemlos funktionieren. Ich habe im Code gekennzeichnet wo der Fehler liegen müsste (Hier's), hab aber im Moment garkeinen Durchblick mehr, durch das ganze Rumprobieren und drüber Grübeln.<br />
Wenn man einmal eine zu lange Zeile hinzugefügt und formatiert hat, funktionieren danach auch die kurzen nicht mehr richtig!</p>
<pre><code class="language-cpp">void TfrmMain::Format(int line,TColor color=clBlack,bool bold=false,bool italic=false,int size=8,int start=0,int len=-1)
{
	if(len==-1) len=display-&gt;Lines-&gt;Strings[line].Length();

	int firstchar=1; //Hier
	for(int i=0;i&lt;line;i++) //Hier
		firstchar+=display-&gt;Lines-&gt;Strings[i].Length()+2; //Hier
	display-&gt;SelStart=firstchar-1+start; // Hier
	display-&gt;SelLength = len;
	display-&gt;SelAttributes-&gt;Color=color;
	display-&gt;SelAttributes-&gt;Size=size;

	if(bold) display-&gt;SelAttributes-&gt;Style=TFontStyles()&lt;&lt; fsBold;
	if(italic) display-&gt;SelAttributes-&gt;Style=TFontStyles()&lt;&lt; fsItalic;

	display-&gt;SelLength = 0;
};
</code></pre>
<p>Schonmal Vielen Dank!</p>
<p>mfg<br />
cb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183638/trichedit-fehler-in-eigener-format-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 05:01:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183638.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Jun 2007 22:12:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TRichEdit - Fehler in eigener Format-Funktion on Wed, 06 Jun 2007 22:12:17 GMT]]></title><description><![CDATA[<p>Huhu Leute,<br />
vielleicht findet ihr ja den Fehler, wieso funktioniert diese Funktion bei zu langen Zeilen nicht?</p>
<p><strong>Was macht die Funktion?</strong><br />
Die Funktion soll das Formatieren von Bereichen in einem TRichEdit erleichtern. Man übergibt die Zeile und dann entsprechende Formatierungseigentschaften. Da mit Default-Werten gearbeitet wird, muss man allerdings nicht immer alle Parameter angeben! (Das RichEdit heißt in diesem Fall &quot;display&quot; und ich will kein TFont übergeben, um schonmal Posts dieser Art zu sparen ;D)</p>
<p>Die Funktion formatiert bei zu langen Zeilen die falsche Stelle (nicht die Übergebene), obwohl die anderen kürzeren Zeilen, problemlos funktionieren. Ich habe im Code gekennzeichnet wo der Fehler liegen müsste (Hier's), hab aber im Moment garkeinen Durchblick mehr, durch das ganze Rumprobieren und drüber Grübeln.<br />
Wenn man einmal eine zu lange Zeile hinzugefügt und formatiert hat, funktionieren danach auch die kurzen nicht mehr richtig!</p>
<pre><code class="language-cpp">void TfrmMain::Format(int line,TColor color=clBlack,bool bold=false,bool italic=false,int size=8,int start=0,int len=-1)
{
	if(len==-1) len=display-&gt;Lines-&gt;Strings[line].Length();

	int firstchar=1; //Hier
	for(int i=0;i&lt;line;i++) //Hier
		firstchar+=display-&gt;Lines-&gt;Strings[i].Length()+2; //Hier
	display-&gt;SelStart=firstchar-1+start; // Hier
	display-&gt;SelLength = len;
	display-&gt;SelAttributes-&gt;Color=color;
	display-&gt;SelAttributes-&gt;Size=size;

	if(bold) display-&gt;SelAttributes-&gt;Style=TFontStyles()&lt;&lt; fsBold;
	if(italic) display-&gt;SelAttributes-&gt;Style=TFontStyles()&lt;&lt; fsItalic;

	display-&gt;SelLength = 0;
};
</code></pre>
<p>Schonmal Vielen Dank!</p>
<p>mfg<br />
cb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300400</guid><dc:creator><![CDATA[carstenbauer]]></dc:creator><pubDate>Wed, 06 Jun 2007 22:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to TRichEdit - Fehler in eigener Format-Funktion on Wed, 13 Jun 2007 16:10:41 GMT]]></title><description><![CDATA[<p>Keiner ne Idee, oder keine Lust/Zeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305030</guid><dc:creator><![CDATA[carstenbauer]]></dc:creator><pubDate>Wed, 13 Jun 2007 16:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to TRichEdit - Fehler in eigener Format-Funktion on Wed, 13 Jun 2007 17:22:50 GMT]]></title><description><![CDATA[<p>Was genau heisst &quot;zu lang&quot;? Kann es sein, dass dir der Zeilenumbruch in die Quere kommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305067</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 13 Jun 2007 17:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to TRichEdit - Fehler in eigener Format-Funktion on Thu, 14 Jun 2007 02:22:43 GMT]]></title><description><![CDATA[<p>wahrscheinlich liegt es einfach daran, dass der text manchmal (also wenn er lang genug ist), einen zeilenumbruch drin hat, auch wenn du das nicht willst... hab ich gerad keine idee, wie du das umgehen kannst, kannst ja mal gucken, obs irgendwelche properties gibt, wo du ne scrollleiste anmachen kannst oder was weiß ich oder einfach den ganzen text ausgibst und wenn du glück hast, dann lässt der da den zeilenumbruch weg, den er nur hingemacht hat, weil die zeile zu lang ist... falls du mit lang aber 2'147'483'648 als länge start oder zeile (oder größe ^^) mit lang meinst, dann liegt das daran, dass deine variablen ne so lang geht... wenn du wirklich mehr, als 2Mrd Zeichen brauchst, wirste die variablen einfach umdeklarieren müssen (würd ja auch so unsigned __int64 vorschlagen) und für len den default-wert auf 0 setzen und nicht auf -1...</p>
<p>Ansonsten solltest du vll mal genauer mit &quot;lang / zu lang&quot; werden und am allerbesten mal ein explizites bsp. posten (du willst eigtl, du bekommst aber... bzw. du willst das und bekommst das).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305293</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 14 Jun 2007 02:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to TRichEdit - Fehler in eigener Format-Funktion on Thu, 14 Jun 2007 05:09:22 GMT]]></title><description><![CDATA[<p>Ok ich poste nacher ein Beispiel, aber in der Regel sollte man unter Textlänge einfach langen Text, also Text mit vielen Zeichen (Wörtern) verstehen, dass es mehr wie 2 Mrd sind, bezweifel ich jetzt mal stark, geht eher so in die Kategorie: Ein Text mit rund 200 Zeichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305299</guid><dc:creator><![CDATA[carstenbauer]]></dc:creator><pubDate>Thu, 14 Jun 2007 05:09:22 GMT</pubDate></item></channel></rss>