<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - BlitzMax Extended</title>
		<link>https://www.blitzforum.de/worklogs/503/</link>
		<description>Worklog von ProfJake</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Mon, 08 Oct 2012 20:02:21 +0200</pubDate>
		<lastBuildDate>Mon, 08 Oct 2012 20:02:21 +0200</lastBuildDate>

		<item>
			<title>Der String war's</title>
			<link>https://www.blitzforum.de/worklogs/503/#3601</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3601</guid>
			<author>ProfJake</author>
			<description>Jop, jop, jop.&lt;br /&gt;&lt;br /&gt;Der Fehler hat wurde gestellt und standesgerecht ersch.. beseitigt : )&lt;br /&gt;Es lag wohl am Code in &lt;b&gt;bbStringFind&lt;/b&gt;, den ich etwas ungl&amp;uuml;cklich verschlimmbessert hatte.&lt;br /&gt;An dieser Stelle auch einen Dank an &lt;i&gt;blackgecko&lt;/i&gt;, obwohl ich mir nicht sicher bin, wie das&lt;br /&gt;bei ihm vorher schon so problemlos durchlief – schwarze Magie wahrscheinlich.&lt;br /&gt;&lt;br /&gt;Ich hab jetzt auch gar nicht so unglaublich Zeit, deshalb jetzt nur schnell der Link und weiter geht's.&lt;br /&gt;Beim n&amp;auml;chsten Mal werde ich wohl genauer auf ein paar praktische Neuerungen im Bereich der Arrays&lt;br /&gt;eingehen. Wer Mu&amp;szlig;e hat, kann sich ja mal die Funktionen &lt;b&gt;toCArray&lt;/b&gt;, &lt;b&gt;FromCArray&lt;/b&gt; und &lt;b&gt;filterInt&lt;/b&gt;&lt;br /&gt;anschauen. Speziell bei den Filterfunktionen k&amp;ouml;nnte es aber noch &amp;Auml;nderungen geben,&lt;br /&gt;da ich noch am gr&amp;uuml;beln bin, ob ich das Array mit als Parameter &amp;uuml;bergebe oder nicht.&lt;br /&gt;&lt;br /&gt;Anyways.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12019&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;ProfJake&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;EDIT: HOT-FIX gegen Probleme mit inline und restrict&lt;/span&gt;</description>
			<pubDate>Mon, 08 Oct 2012 20:02:21 +0200</pubDate>
		</item>

		<item>
			<title>Kurz und kaputt</title>
			<link>https://www.blitzforum.de/worklogs/503/#3600</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3600</guid>
			<author>ProfJake</author>
			<description>Sch&amp;ouml;nen Sonntag euch allen,&lt;br /&gt;&lt;br /&gt;hier gibt's die neueste Portion BlitzMaxExtended. Obwohl ich einige schwerwiegende Fehler finden&lt;br /&gt;und beheben konnte, treibt sich aber immernoch ein besonders nerviger im Quelltext rum.&lt;br /&gt;&lt;br /&gt;Mir ist er erst aufgefallen als ich &lt;b&gt;makedocs&lt;/b&gt; kompilieren wollte um eine &amp;Auml;nderung im&lt;br /&gt;bekannterma&amp;szlig;en nicht ganz so sch&amp;ouml;nen Dokumentations-HTML einzubauen. Daraufhin kamen ein&lt;br /&gt;paar Fehler auf, die zum Gl&amp;uuml;ck &lt;i&gt;(?)&lt;/i&gt; das Programm mit einer netten Fehlermeldung abst&amp;uuml;rzen&lt;br /&gt;lie&amp;szlig;en. Diesen Gefallen hat mir der noch nicht beseitigte nicht getan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Macht mal was kaputt&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;Wie ihr helfen k&amp;ouml;nntet, so ihr denn gewillt seid.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es w&amp;auml;re praktisch, wenn ihr auch mal versuchen k&amp;ouml;nntet &lt;b&gt;makedocs&lt;/b&gt; zu kompilieren und auszuf&amp;uuml;hren.&lt;br /&gt;Bei mir schafft er mal mehr mal weniger Module und st&amp;uuml;rzt dann mittendrin einfach ab.&lt;br /&gt;Sang und klanglos. &lt;br /&gt;&lt;br /&gt;Meine Hoffnung ist jetzt, dass eure Systeme vielleicht musikalischer sind und in ihrem Abgesang&lt;br /&gt;noch eine hilfreiche Information ausspucken. Daran w&amp;auml;re ich dezent interessiert, wie man sich sicher&lt;br /&gt;denken kann.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12006&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das war's auch schon wieder f&amp;uuml;r heute.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;ProfJake&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Sun, 07 Oct 2012 18:30:11 +0200</pubDate>
		</item>

		<item>
			<title>Lahmarschig, aber am Leben</title>
			<link>https://www.blitzforum.de/worklogs/503/#3599</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3599</guid>
			<author>ProfJake</author>
			<description>Hi Jungs,&lt;br /&gt;&lt;br /&gt;inzwischen bin ich umgezogen und hab mich ein wenig in der Realit&amp;auml;t vergn&amp;uuml;gt, aber meine Hass-Liebe&lt;br /&gt;sitzt anscheinend tiefer als gedacht. Von daher gibt's nun mal wieder ein kleines Update,&lt;br /&gt;welches eigentlich nur die Dokumentation ein wenig aufr&amp;auml;umt sowie einige Rechtschreibfehler behebt.&lt;br /&gt;&lt;br /&gt;Mehr ein Lebenszeichen als ein Meilenstein also : )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=11996&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian </description>
			<pubDate>Sun, 30 Sep 2012 02:38:58 +0200</pubDate>
		</item>

		<item>
			<title>Pinguin: Check!</title>
			<link>https://www.blitzforum.de/worklogs/503/#3568</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3568</guid>
			<author>ProfJake</author>
			<description>Hi folks,&lt;br /&gt;&lt;br /&gt;bei der Linux-Version gab es ja noch kleinere Schwierigkeiten –&amp;nbsp;soll hei&amp;szlig;en nix ging –&amp;nbsp;die jetzt der Vergangenheit angeh&amp;ouml;ren.&lt;br /&gt;Getestet wurde es unter &lt;a href=&quot;http://de.wikipedia.org/wiki/Linux_Mint&quot; target=&quot;_blank&quot;&gt;Mint&lt;/a&gt; und &lt;a href=&quot;http://de.wikipedia.org/wiki/Debian&quot; target=&quot;_blank&quot;&gt;Debian&lt;/a&gt;. An dieser Stelle speziellen Dank an Thunder, der &lt;b&gt;einer von zwei&lt;/b&gt; Lesern ist, die mal&lt;br /&gt;eine R&amp;uuml;ckmeldung gegeben und auf ein Problem hingewiesen haben. Problem gel&amp;ouml;st, das hat er nun davon.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=11837&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;Jetzt fehlt nur noch eine Wortmeldung der Fenster-und-Sanduhr-Fraktion. Ein einfaches &lt;b&gt;true&lt;/b&gt; (l&amp;auml;uft) oder &lt;b&gt;false&lt;/b&gt; (Blut, Morde und Festplatten-Moshpit)&lt;br /&gt;in der &lt;a href=&quot;https://www.blitzforum.de/worklogs/503/comments/&quot; target=&quot;_blank&quot;&gt;Kommentarabteilung&lt;/a&gt; w&amp;uuml;rde schon reichen, um mich ruhig schlafen zu lassen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;EDIT: HOT-FIX f&amp;uuml;r Windows – der Zweite.&lt;/span&gt;</description>
			<pubDate>Tue, 17 Jul 2012 22:07:23 +0200</pubDate>
		</item>

		<item>
			<title>Husch, husch</title>
			<link>https://www.blitzforum.de/worklogs/503/#3566</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3566</guid>
			<author>ProfJake</author>
			<description>Hi, heute mal ganz kurz.&lt;br /&gt;&lt;br /&gt;Mir ist aufgefallen, dass die neuen Funktionen nur in C dokumentiert sind, bl&amp;ouml;d.&lt;br /&gt;Hier also eine erste Dokumentation in BlitzMax. Zusammenfassung:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Buf-fixes in &lt;i&gt;blitz_array.c&lt;/i&gt;&lt;br /&gt;&lt;li&gt;neue Funktionen bbArrayFind und bbArrayContains&lt;br /&gt;&lt;li&gt;minimale BlitzMax Dokumentation&lt;br /&gt;&lt;li&gt;C-Dokumentation verbessert (aus bbdoc aufrufbar)&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=11817&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;EDIT&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Die fr&amp;uuml;her schonmal erw&amp;auml;hnten Klassen (Interfaces) &lt;b&gt;IEnumerator&lt;/b&gt; und &lt;b&gt;IEnumerable&lt;/b&gt; sind jetzt&lt;br /&gt;auch mit dokumentiert worden. Sie sind einfach eine Deklaration der schon eingebauten&lt;br /&gt;Funktionalit&amp;auml;t um Klassen mit ForEach zu nutzen (z.B TList).&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Type IEnumerator Abstract&lt;br /&gt;	Method hasNext:Int() Abstract&lt;br /&gt;	Method nextObject:Object() Abstract&lt;br /&gt;End Type&lt;br /&gt;&lt;br /&gt;Type IEnumerable Abstract&lt;br /&gt;	Method objectEnumerator:IEnumerator() Abstract&lt;br /&gt;End Type[/syntax]&lt;br /&gt;&lt;br /&gt;Sie haben zwar keine eigene Funktionalit&amp;auml;t (= Interface), aber ich finde das ist sauberer als zu sagen:&lt;br /&gt;&lt;i&gt;&amp;quot;Um mit ForEach kompatibel zu sein musst du deine Methoden so und so nennen. Durch Magie klappt das&lt;br /&gt;dann und die Namen kannst du dir gef&amp;auml;lligst aus dem Quelltext oder irgendwo aus der Hilfe raussuchen.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian</description>
			<pubDate>Wed, 11 Jul 2012 20:51:12 +0200</pubDate>
		</item>

		<item>
			<title>Alpha aka Die Vorschauversion</title>
			<link>https://www.blitzforum.de/worklogs/503/#3565</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3565</guid>
			<author>ProfJake</author>
			<description>Hola, Compadres!&lt;br /&gt;&lt;br /&gt;Bei uns in der Region kommt gerade die halbe Ostsee vom Himmel geregnet. Da dachte ich mir wenn dass bei&lt;br /&gt;euch so &amp;auml;hnlich ist, habt ihr bestimmt total viel Lust darauf mal einen ersten Blick auf die Alpha-Version zu werfen.&lt;br /&gt;&lt;br /&gt;Der Deal ist folgender: Ihr k&amp;ouml;nnt damit machen was ihr wollt, aber ich w&amp;uuml;rde wirklich gerne eure Meinung dazu h&amp;ouml;ren.&lt;br /&gt;Und mit Meinung meine ich speziell &lt;b&gt;Fehlermeldungen&lt;/b&gt;. Mein System ist ein &lt;i&gt;MacOS X 10.6.8&lt;/i&gt; und hier scheint alles zu laufen.&lt;br /&gt;Getestet habe ich gr&amp;ouml;&amp;szlig;tenteils mit den beigelegten &lt;i&gt;samples&lt;/i&gt; von BlitzMax sowie MiniB3D.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=11801&quot; target=&quot;_blank&quot;&gt;Download&lt;/a&gt; (Source)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Zur Installation ganz einfach den originalen &lt;i&gt;brl.blitz&lt;/i&gt; Ordner durch diesen ersetzen (vorher Sicherheitskopie).&lt;br /&gt;&lt;br /&gt;Sch&amp;ouml;nes Wochenende,&lt;br /&gt;Fabian&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;&lt;b&gt;EDIT:&lt;/b&gt; Aktualisierte Version 0.8.10 (Fix) verlinkt.&lt;/span&gt;</description>
			<pubDate>Sat, 07 Jul 2012 21:16:18 +0200</pubDate>
		</item>

		<item>
			<title>Schon wieder kein Download, meh.</title>
			<link>https://www.blitzforum.de/worklogs/503/#3563</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3563</guid>
			<author>ProfJake</author>
			<description>Hi there,&lt;br /&gt;&lt;br /&gt;und &amp;quot;high&amp;quot; sehe ich bestimmt auch gerade aus, nach der Nacht und der 3. Badewanne voll C8H10N4O2. &lt;i&gt;[/bad-joke]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Reflection&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;Ins Innere von BlitzMax schauen.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reflection in BlitzMax setzt einen korrekt bef&amp;uuml;llten &lt;b&gt;BBDebugScope&lt;/b&gt; vorraus. Normalerweise erledigt das&lt;br /&gt;der Kompiler, indem er alles daf&amp;uuml;r notwendige aus dem Quelltext ausliest. Das ist mir nat&amp;uuml;rlich alles viel&lt;br /&gt;zu komfortabel, weshalb ich – nachdem die C Implementierung fertig war – mir schon gut 'nen halben &lt;br /&gt;Zahn daran ausgebissen habe, den ganzen Spa&amp;szlig; zum Laufen zu bekommen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem?&lt;/b&gt; &lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;aka &amp;quot;U MAD, BRO?&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Erstmal &lt;i&gt;blitz_debug.h&lt;/i&gt; und den Assembler-Output vom &lt;i&gt;bcc&lt;/i&gt; &amp;uuml;berflogen und festgestellt: Easy!&lt;br /&gt;Doch wie so oft .. ihr wisst schon: Teufel, Detail, Blut &amp;amp; Morde! Irgendwie hab ich das Problem immer weiter&lt;br /&gt;nach hinten geschoben. Denn &amp;quot;theoretisch&amp;quot; h&amp;auml;tte es funktionieren m&amp;uuml;ssen, was es aber nat&amp;uuml;rlich nicht tat.&lt;br /&gt;&lt;br /&gt;Um die folgenden zwei B&amp;ouml;sewichter geht's:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;struct BBDebugDecl&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;BBDebugDeclKind&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;kind;&lt;br /&gt;&amp;nbsp; &amp;nbsp;const char&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;*name;&lt;br /&gt;&amp;nbsp; &amp;nbsp;const char&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;*type_tag;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;union &amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBString*&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;const_value;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBSize&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;local_offset;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBSize&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;field_offset;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;void&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;*global_address;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;#125;;&lt;br /&gt;&amp;#125;;&lt;br /&gt;&lt;br /&gt;struct BBDebugScope&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;BBDebugScopeKind&amp;nbsp; &amp;nbsp;kind;&lt;br /&gt;&amp;nbsp; &amp;nbsp;const char&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;*name;&lt;br /&gt;&amp;nbsp; &amp;nbsp;BBDebugDecl&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;decls&amp;#91;1&amp;#93;; // Problem&lt;br /&gt;&amp;#125;;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Das Problem war erst, das &lt;b&gt;decls&lt;/b&gt; Feld des DebugScopes richtig zu f&amp;uuml;llen, worum sich der gute Herr&lt;br /&gt;Sibly ja in seinem C-Code gedr&amp;uuml;ckt hat. Sein Kompiler wird das Geheimnis mit ins Grab nehmen *MUHAHA* ..&lt;br /&gt;.. nicht, nat&amp;uuml;rlich. Ist ja alles sehr simpel aufgebaut. L&amp;ouml;sung folgt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution?&lt;/b&gt; &lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;aka &amp;quot;Thanks, CAPT. OBVIOUS!&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Die meiste Zeit habe ich damit verbracht, ganz klassisch an der falschen Stelle zu suchen. Die neue Helferfunktion&lt;br /&gt;&lt;b&gt;bb_class_register_multiple&lt;/b&gt; sollte einfach das Registrieren mehrerer Klassen beschleunigen, aber durch&lt;br /&gt;einen Geniestreich ohnegleichen habe ich nur den ersten Wert der &lt;a href=&quot;http://en.wikipedia.org/wiki/Stdarg.h&quot; target=&quot;_blank&quot;&gt;va_list&lt;/a&gt; registriert.&lt;br /&gt;&lt;br /&gt;Soll hei&amp;szlig;en, die neue Funktion f&amp;uuml;r mehrere Klassen gleichzeitig registriert doch nur eine.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;http://www.facepalm.de/images/facepalm.jpg&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wenn man sich dann auf sein neues Spielzeug verl&amp;auml;sst und alle anderen Code-Teile w&amp;uuml;st beschimpft, dann&lt;br /&gt;kann das schon etwas dauern, bis man die L&amp;ouml;sung findet. Nun gut, jetzt l&amp;auml;uft es ja.&lt;br /&gt;&lt;br /&gt;Das das &lt;b&gt;decls&lt;/b&gt; Feld betreffende Problem habe ich durch ein bisschen schummeln gel&amp;ouml;st.&lt;br /&gt;Es gibt jetzt einen internes struct &lt;b&gt;bb_debugscope_t&lt;/b&gt;, wo genau dieses Feld als &lt;b&gt;decls[]&lt;/b&gt;&lt;br /&gt;anstatt &lt;b&gt;decls[1]&lt;/b&gt; deklariert ist. Wird wahrscheinlich den wenigsten etwas sagen, daher ein Beispiel:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;TBaseException&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Basis-Exception-Klasse f&amp;uuml;r alle BlitzMax internen Exceptions und auch f&amp;uuml;r eure eigenen.&lt;br /&gt;Der Name &lt;b&gt;TBaseException&lt;/b&gt; r&amp;uuml;hrt daher, dass &lt;b&gt;TException&lt;/b&gt; in den Aufgabenbereich der BSL geh&amp;ouml;rt.&lt;br /&gt;Es ist wirklich nur die minimale Funktionalit&amp;auml;t, sp&amp;auml;ter mehr dazu. Hier sieht man, wie die Klasse in BlitzMax aussehen&lt;br /&gt;&lt;b&gt;w&amp;uuml;rde&lt;/b&gt;, w&amp;auml;re sie denn auch darin implementiert. F&amp;uuml;r die Anwender kommt das aber auf's Gleiche raus.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Type TBaseException Abstract&lt;br /&gt;	' Private: Nur f&amp;uuml;r C/C++&lt;br /&gt;	Field cause:TBaseException&lt;br /&gt;	&lt;br /&gt;	Method initCause(cause:TBaseException)&lt;br /&gt;		If Not Self.cause And cause &amp;lt;&amp;gt; Self Then&lt;br /&gt;			Self.cause = cause&lt;br /&gt;		End If&lt;br /&gt;	End Method&lt;br /&gt;&lt;br /&gt;	Method getCause:TBaseException() Final&lt;br /&gt;		Return Self.cause&lt;br /&gt;	End Method&lt;br /&gt;End Type&lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Da C viel zu cool ist, um sich um BlitzMax zu k&amp;uuml;mmern, findet man die Klasse in &lt;i&gt;blitz_exception.h&lt;/i&gt; / &lt;i&gt;.c&lt;/i&gt;&lt;br /&gt;als &lt;b&gt;BBException&lt;/b&gt; mit dazugeh&amp;ouml;riger &lt;b&gt;bbExceptionClass&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Der vielbesungene &lt;b&gt;BBDebugScope&lt;/b&gt; sieht intern so aus:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('1')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('1')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox1&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('1');&quot;&gt;// blitz_exception.c&lt;br /&gt;static const bb_debugscope_t ClassScope =&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;.kind&amp;nbsp; &amp;nbsp;= BBDEBUGSCOPE_USERTYPE,&lt;br /&gt;&amp;nbsp; &amp;nbsp;.name&amp;nbsp; &amp;nbsp;= &amp;quot;TBaseException&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;.decls&amp;nbsp; &amp;nbsp;= &amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#91;0&amp;#93; = &amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBDEBUGDECL_TYPEMETHOD,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;quot;initCause&amp;quot;, &amp;quot;&amp;#40;&amp;#58;TBaseException&amp;#41;i&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBCLASS_VFN_OFFSETOF&amp;#40;__BBEXCEPTION_VFN_INITCAUSE__&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#91;1&amp;#93; = &amp;#123;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBDEBUGDECL_TYPEMETHOD,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;quot;getCause&amp;quot;, &amp;quot;&amp;#40;&amp;#41;&amp;#58;TBaseException&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBCLASS_VFN_OFFSETOF&amp;#40;__BBEXCEPTION_VFN_GETCAUSE__&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;#125;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;BBDEBUGDECL_END&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;#125;&lt;br /&gt;&amp;#125;;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alles hier definierte wird dann von allen abgeleiteten Klassen &amp;uuml;bernommen, muss also nicht nochmal geschrieben&lt;br /&gt;werden und Platz wegnehmen.&lt;br /&gt;&lt;br /&gt;Hier sieht man nebenbei auch sch&amp;ouml;n einige der internen Features, dass Makro &lt;b&gt;BBCLASS_VFN_OFFSETOF&lt;/b&gt; z.B. gibt hier&lt;br /&gt;den Offset der virtuellen Funktion (Method oder Function einer Klasse) f&amp;uuml;r den &amp;uuml;bergebenen Index zur&amp;uuml;ck.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Arrays und Alpha&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;Was sonst noch so passiert&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wie man merkt, schreib ich gerade nicht mehr ganz geradeaus. Deshalb nur so viel: Es gibt noch 'ne Menge zu tun.&lt;br /&gt;Einiges wird sich &amp;auml;ndern, aufger&amp;auml;umt muss noch werden und die Dokumentation muss ich nochmal &amp;quot;glattb&amp;uuml;geln&amp;quot;.&lt;br /&gt;&lt;br /&gt;Die Arrays sind wieder ein bisschen gewachsen: um einen Parameter und eine Methode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Find*&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Neuer Parameter f&amp;uuml;r alte, neue Methode. Nutzt jetzt intern z.B das &lt;b&gt;BBIntArray&lt;/b&gt; Helfer-Object&lt;br /&gt;und unterst&amp;uuml;tzt nur noch Arrays des gleichen Typs (=schneller).&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Array.findInt:Int(num:Int, start_index:Int = 0)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;StartsWith &amp;amp; EndsWith&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Funktionieren genau wie bei Strings, das zu testende Array muss gleichen Typs wie das aufrufende sein.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Array.startsWith:Int(other:Array)&lt;br /&gt;Array.endsWith:Int(other:Array)[/syntax]&lt;br /&gt;&lt;br /&gt;Dies erm&amp;ouml;glicht recht eleganten Quelltext zu schreiben, z.B&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]If arr.startsWith([1, 2, 3]) Then [...][/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, fertig.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fragen, Anregungen und Goldbarren sind jederzeit willkommen.&lt;/b&gt;&lt;br /&gt;(Goldbarren nur Werktags zwischen 8 und 18 Uhr.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian</description>
			<pubDate>Sat, 30 Jun 2012 10:34:47 +0200</pubDate>
		</item>

		<item>
			<title>Ich kam, debugte und siegte!</title>
			<link>https://www.blitzforum.de/worklogs/503/#3562</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3562</guid>
			<author>ProfJake</author>
			<description>Guten Abend die Damen und Herren,&lt;br /&gt;&lt;br /&gt;nachdem ich das zweifelhafte Vergn&amp;uuml;gen hatte den ganzen Tag einem Bug hinterherzujagen,&lt;br /&gt;dachte ich etwas Erholung k&amp;ouml;nnte nicht schaden. Daher habe ich noch ein bisschen Features reingepackt.&lt;br /&gt;&lt;br /&gt;Schon lustig, aber neue Funktionen schreiben macht ungleich viel mehr Spa&amp;szlig; als der ganze andere&lt;br /&gt;Aufr&amp;auml;um- und Dokumentationskrams. Aber das habe ich mir ja wohl selbst zuzuschreiben.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hier hat sich ein kleines Problem ergeben, da ich die Anzahl der virtuellen Funktionen einer &lt;b&gt;BBClass&lt;/b&gt;&lt;br /&gt;mittlerweile komplett gef&amp;uuml;llt habe. Vor Urzeiten hatte ich mal getestet, ob BlitzMax selbst so ein Limit (32)&lt;br /&gt;hat und ich glaube nicht. Irgendwie muss das also gehen. Aber bis jetzt ging's ja auch mit dem was da war&lt;br /&gt;ganz gut, von daher hat das keine Priorit&amp;auml;t.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FindAny&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Durchsucht einen String nach dem ersten Vorkommen eines beliebigen Strings aus dem Such-Array.&lt;br /&gt;&lt;br /&gt;Passt keiner der gegebenen Such-Strings so recht, dann wird &lt;b&gt;String.NOT_FOUND&lt;/b&gt; zur&amp;uuml;ckgegeben.&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.FindAny:Int(all_subs:String[], start_index:Int = 0)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IsLower/IsUpper&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Pr&amp;uuml;ft ob der String komplett klein/gro&amp;szlig; geschrieben ist.&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.isLower:Int()&lt;br /&gt;String.isUpper:Int()[/syntax]&lt;br /&gt;&lt;br /&gt;Das ist viel schneller als z.B&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]If str = str.toLower() Then [...][/syntax]&lt;br /&gt;Denn hier muss keine neue Stringinstanz erzeugt werden&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IsASCII&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eher ein Gimmick was rausfliegen wird, wenn ich keinen anderen Weg finde z.B. &lt;b&gt;pad&lt;/b&gt; reinzubekommen.&lt;br /&gt;&lt;br /&gt;Pr&amp;uuml;ft ob alle Buchstaben durch den ASCII-Code repr&amp;auml;sentiert werden k&amp;ouml;nnen (keine Code Points &amp;uuml;ber 127).&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.isASCII:Int()[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Array&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ja, auch der Bug-Verursacher und Schlaf-R&amp;auml;uber des heutigen Tages kriegt ein kleines Geschenkchen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rotate&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Rotiert die Elemente eines Arrays um eine gewisse Anzahl an Positionen.&lt;br /&gt;Gibt das rotierte Array zur&amp;uuml;ck. Wenn die Anzahl der Rotationen kleiner als 2 ist,&lt;br /&gt;wird das Original unver&amp;auml;ndert zur&amp;uuml;ckgegeben.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Array.rotate:Array(count:Int = 1)[/syntax]&lt;br /&gt;&lt;br /&gt;Beispiel&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Local arr:Int[] = [1,2,3,4,5].rotate(1)&lt;br /&gt;&lt;br /&gt;Print arr[0] + &amp;quot;, &amp;quot; + arr[1] + &amp;quot;, &amp;quot; + arr[2] + &amp;quot;, &amp;quot; + arr[3] + &amp;quot;, &amp;quot; + arr[4]&lt;br /&gt;' Output: 5, 1, 2, 3, 4[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Und sonst so?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 9px;&quot;&gt;&lt;span style=&quot;color: grey; font-size: 1.1em;&quot;&gt;Was dem Backend so zugesto&amp;szlig;en ist ..&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wie schon gesagt wurde viel rausgehauen (z.B StringBuffer, Iteratoren, Exception-Hierarchien)&lt;br /&gt;weil &lt;i&gt;brl.blitz&lt;/i&gt; nicht optional ist und ALLE DAS BENUTZEN M&amp;Uuml;SSEN. Weil .. deshalb.&lt;br /&gt;&lt;br /&gt;Nein, Spa&amp;szlig; beiseite: Es geht nat&amp;uuml;rlich um Modulgr&amp;ouml;&amp;szlig;e, Kompatibilit&amp;auml;t und Einfachheit.&lt;br /&gt;Sollte die BSL in diesem Leben nochmal fertig werden, wird's ein Monster. Aber das hier&lt;br /&gt;eben nicht. Trotzdem hat sich einiges ge&amp;auml;ndert:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;neue TBaseException Klasse von der alle abgeleitet werden (auch TBlitzException)&lt;br /&gt;&lt;li&gt;TArrayBoundsException, TNullObjectException, TNullMethodException, TNullFunctionException und TOutOfDataException sind jetzt &lt;b&gt;Final&lt;/b&gt;&lt;br /&gt;&lt;li&gt;alles ist in C implementiert (auch die gerade genannten Exceptions)&lt;br /&gt;&lt;li&gt;IEnumerator und IEnumerable Interfaces (tun nix, sind aber schick &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; )&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jo.&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian</description>
			<pubDate>Fri, 29 Jun 2012 00:56:17 +0200</pubDate>
		</item>

		<item>
			<title>Ausmistungsunternehmung</title>
			<link>https://www.blitzforum.de/worklogs/503/#3560</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3560</guid>
			<author>ProfJake</author>
			<description>&amp;quot;Weniger ist mehr.&amp;quot; – &lt;i&gt;Vielzitierter Klugschei&amp;szlig;er&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Entgegen der gerade genannten Weisheit habe ich, als ich meinen Blick heute Nacht mal wieder&lt;br /&gt;&amp;uuml;ber das Projekt habe schweifen lassen, festgestellt, dass ich zu viel Funktionalit&amp;auml;t reingestopft habe.&lt;br /&gt;Funktionalit&amp;auml;t, die eigentlich besser in der BSL (da war doch was) aufgehoben w&amp;auml;re.&lt;br /&gt;Also ging es erst einmal an's Aufr&amp;auml;umen und Rausschmei&amp;szlig;en.&lt;br /&gt;&lt;br /&gt;Das war soweit auch schon alles, ich wollte nur zu Protokoll geben, dass das Projekt noch lebt.&lt;br /&gt;Es l&amp;auml;uft auch flei&amp;szlig;ig und ich denke, beim n&amp;auml;chsten Mal werde ich zumindest eine Alpha raushauen.&lt;br /&gt;Dann k&amp;ouml;nnen die zwei Personen, die das hier mitlesen (&amp;quot;H&amp;ouml;re ich drei? Wer bietet drei?&amp;quot;) mal schauen k&amp;ouml;nnen,&lt;br /&gt;was dabei alles kaputt geht : p&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;&lt;br /&gt;Fabian</description>
			<pubDate>Wed, 27 Jun 2012 06:00:02 +0200</pubDate>
		</item>

		<item>
			<title>Ein paar Neue</title>
			<link>https://www.blitzforum.de/worklogs/503/#3545</link>
			<guid>https://www.blitzforum.de/worklogs/503/#3545</guid>
			<author>ProfJake</author>
			<description>Wie beim letzten Mal versprochen, gibt's jetzt erstmal eine kurze Auflistung einiger neuer Sachen.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Die Stringklasse wurde gr&amp;ouml;&amp;szlig;tenteils unter der Haube aufgeh&amp;uuml;bscht, aber es gibt nat&amp;uuml;rlich auch auf&lt;br /&gt;Seiten von BlitzMax einige Neuerungen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Trim&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Der altbekannte Leerzeichenabschneider hat jetzt einen Parameter, der festlegt auf welcher Seite&lt;br /&gt;die unerw&amp;uuml;nschten Zeichen abgetrennt werden sollen.&lt;br /&gt;&lt;br /&gt;Es gibt die logischen drei Optionen: &lt;b&gt;String.SIDE_LEFT&lt;/b&gt;, &lt;b&gt;String.SIDE_RIGHT&lt;/b&gt; und &lt;b&gt;String.SIDE_BOTH&lt;/b&gt;&lt;br /&gt;Zur Zeit verh&amp;auml;lt sich die Methode so, als ob immer SIDE_BOTH &amp;uuml;bergeben w&amp;uuml;rde.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.trim(side:Int = String.SIDE_BOTH)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FindAll&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Will man alle gefundenen Substrings aus einem String herauskitzeln, so muss man jetzt keine&lt;br /&gt;eigene Funktion mehr schreiben.&lt;br /&gt;&lt;br /&gt;Es wird ein eindimensionales Int[] Array mit allen Indexes zur&amp;uuml;ckgegeben, oder eben Null wenn&lt;br /&gt;gar nichts gefunden wurde.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.findAll:Int[](sub:String, start_index:Int = 0)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Count&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Z&amp;auml;hlt alle enthaltenen Teilstrings. Ganz einfach.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.count(sub:String)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reverse&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Noch so ein alter Bekannter aus der BSL. Diese Methode dreht quasi den String&lt;br /&gt;komplett Zeichen f&amp;uuml;r Zeichen um.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.reverse:String()[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Times&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Gibt einen String mehrfach wiederholt zur&amp;uuml;ck. Beim Parameterwert 1 gibt's den &amp;uuml;bergebenen&lt;br /&gt;String einfach wieder. Wenn man dagegen 0 &amp;uuml;bergibt, bekommt man auch Null zur&amp;uuml;ck : )&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.times:String(count:Int)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eine alternative M&amp;ouml;glichkeit einen Teilstring zu erhalten. Im Gegensatz zu den Slices nimmt er&lt;br /&gt;aber nicht zwei Indexes und gibt alles dazwischen zur&amp;uuml;ck, sondern es wird aus einem Startindex&lt;br /&gt;und der L&amp;auml;nge des Substrings berechnet.&lt;br /&gt;&lt;br /&gt;Ist die resultierende L&amp;auml;nge zu gro&amp;szlig;, wird alles bis zum Ende des originalen Strings zur&amp;uuml;ckgegeben.&lt;br /&gt;Bei negativem Startindex, wird von hinten angefangen zu z&amp;auml;hlen, so dass man die Methode sehr&lt;br /&gt;vielf&amp;auml;ltig einsetzen kann.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.sub:String(start_index:Int, length:Int)[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Clone&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Gibt eine neue Instanz des Strings zur&amp;uuml;ck. Gleicher Inhalt in neuem String quasi. Das ist f&amp;uuml;r Strings&lt;br /&gt;nur bedingt sinnvoll, aber ich habe diktatorisch festgelegt, dass eine der sinnlos herumgammelnden&lt;br /&gt;reservierten Methoden von &lt;b&gt;BBClass&lt;/b&gt; ab jetzt eine &lt;b&gt;Clone&lt;/b&gt; Method ist.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]String.clone:String()[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Object&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Besagte Clone-Methoden-Kur wurde nat&amp;uuml;rlich auch dem Basisobjekt verpasst. Es enth&amp;auml;lt jetzt eine&lt;br /&gt;generische Methode, die von den im &lt;b&gt;BBDebugScope&lt;/b&gt; gespeicherten Werten (siehe letzter Worklog)&lt;br /&gt;ausgehend alle m&amp;ouml;glichen Objekte klonen kann.&lt;br /&gt;&lt;br /&gt;Ich bin noch am &amp;uuml;berlegen, ob da nicht vielleicht eine abstrakte Platzhaltermethode sinnvoller w&amp;auml;re,&lt;br /&gt;die einen Fehler ausgibt. Aber wenn man alles klonen kann und dass auch noch viel schneller als &amp;uuml;ber&lt;br /&gt;Reflection, warum dann nicht gleich implementieren?&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Object.clone:Object()[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;b&gt;Arrays&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Die guten alten Speicherknechte sind ja relativ leer ausgegangen als es um die Best&amp;uuml;ckung mit&lt;br /&gt;Werkzeug aka Methoden ging. Viel habe ich da auch noch nicht gemacht, aber das wird noch.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ToString&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ja gut, ToString kennt jeder. Leider ist das standardm&amp;auml;&amp;szlig;ig so unglaublich unn&amp;uuml;tz, dass es weh tut.&lt;br /&gt;Es gibt die Speicheraddresse eines Objekes aus. Aha. Hab ich ehrlich gesagt noch nie gebraucht.&lt;br /&gt;&lt;br /&gt;Ab sofort spuckt ein Aufruf oben genannter Methode eine kurze Beschreibung des Arrays aus:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Local arr1:Int[] = [1, 2, 3, 4, 5]&lt;br /&gt;Print arr1.toString() ' Ausgabe: (Array) Int[5]&lt;br /&gt;&lt;br /&gt;Local arr2:Float[1,2,3,4,5]&lt;br /&gt;Print arr2.toString() ' Ausgabe: (Array) Float[1,2,3,4,5][/syntax]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Find*&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Arrays zu durchsuchen ist ja keine ungew&amp;ouml;hnliche Aufgabe, aber durch die fehlende Funktions&amp;uuml;berladung&lt;br /&gt;in BlitzMax steht es schlecht um die datentyp-neutrale Suchwert&amp;uuml;bergabe. Ich hab das Ganze nat&amp;uuml;rlich sehr&lt;br /&gt;elegant *hust* gel&amp;ouml;st.&lt;br /&gt;&lt;br /&gt;Es haben einfach alle Datentypen ihre eigene Suchmethode. Beispiel gef&amp;auml;llig?&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Array.findInt:Int(value:Int)[/syntax]&lt;br /&gt;&lt;br /&gt;Das findet den Index, des ersten Feldes mit dem &amp;uuml;bergebenen Wert. Ich werde mal schauen, ob ich noch&lt;br /&gt;mehr hinzuf&amp;uuml;ge (FindLast, Replace, Reverse) aber ich denke das w&amp;uuml;rde Sinn ergeben.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay caffeinated,&lt;br /&gt;Fabian</description>
			<pubDate>Thu, 17 May 2012 00:38:06 +0200</pubDate>
		</item>


	</channel>
</rss>
