<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - Simple Script Max</title>
		<link>https://www.blitzforum.de/worklogs/155/</link>
		<description>Worklog von coolo</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Tue, 22 Dec 2009 15:45:18 +0100</pubDate>
		<lastBuildDate>Tue, 22 Dec 2009 15:45:18 +0100</lastBuildDate>

		<item>
			<title>Bugs vs Coolo: 1 : 0</title>
			<link>https://www.blitzforum.de/worklogs/155/#2002</link>
			<guid>https://www.blitzforum.de/worklogs/155/#2002</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;es gibt nun zwei Dinge zu Berichten. Zuerst die Traurige Nachricht: Ich finde jetzt in letzter Zeit immer mehr Bugs. Diese sind allerdings sch&amp;auml;tze ich recht harmlos.&lt;br /&gt;&lt;br /&gt;Nunja beginnen wir mal.&lt;br /&gt;Arrays sind im Moment sehr anf&amp;auml;llig. Unter anderem haben sie Probleme Strings und Floats zu speichern, weswegen wei&amp;szlig; ich nicht.&lt;br /&gt;Der Garbage Collector hat auch gro&amp;szlig;e Probleme mit Arrays, da der nicht die Arrays durchkauern kann. Wobei ich ja Reference Counting und Mark and Sweep verwende. Reference Counting funktioniert ohne Probleme, allerdings die Mark and Sweep implementation nicht.&lt;br /&gt;&lt;br /&gt;Der n&amp;auml;chste gro&amp;szlig;e Bug Punkt ist die Rekursion. Diese funktioniert nicht richtig. Ich dachte ich habe das Problem gel&amp;ouml;st, allerdings war das nur eine Teill&amp;ouml;sung. Da muss ich mir weiter den Kopf zerbrechen.&lt;br /&gt;&lt;br /&gt;Ich hoffe ich werde bald die Probleme Entbuggen.&lt;br /&gt;&lt;br /&gt;Der n&amp;auml;chste Punkt ist die IDE. Diese funktioniert einwandfrei und au&amp;szlig;reichend schnell. Sie hat au&amp;szlig;erdem eine R&amp;uuml;ckg&amp;auml;ngig/Wiederholen Funktion sowie Syntax highlighting.&lt;br /&gt;&lt;br /&gt;Jetzt ist auf meiner effektiven ToDo Liste (Also keine Bugs) nurmehr die API zu finden &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;.&lt;br /&gt;</description>
			<pubDate>Tue, 22 Dec 2009 15:45:18 +0100</pubDate>
		</item>

		<item>
			<title>Endspurt!</title>
			<link>https://www.blitzforum.de/worklogs/155/#1989</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1989</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;&lt;br /&gt;ja es ist soweit die OOP funktioniert tadellos und beherrscht die kompliziertesten Konstrukte. Rekursion sei dank   &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; .&lt;br /&gt;&lt;br /&gt;Das hei&amp;szlig;t auf meiner ToDo Liste sind nurmehr zwei Eintr&amp;auml;ge bis zur Ver&amp;ouml;ffentlichung.&lt;br /&gt;API: Diese braucht noch einige Funktionen, ich will auf keinen Fall so eine schreckliche API wie in Lua. Es soll alles leicht zug&amp;auml;nglich sein und ohne Probleme funktionieren.&lt;br /&gt;&lt;br /&gt;IDE: Diese soll recht simpel sein, aber doch mit Syntax Highlighting.&lt;br /&gt;&lt;br /&gt;Eventuell werde ich noch eine Syntax&amp;uuml;berpr&amp;uuml;fung implementieren. Diese wird allerdings nicht jeden Furz anzeigen, da die Sprache recht dynamisch ist.&lt;br /&gt;&lt;br /&gt;Nat&amp;uuml;rlich m&amp;uuml;ssen noch zahlreiche K&amp;auml;fer gefunden werden. Unter anderem hat der Garbage Collector Probleme mit den neuen Arrays. Dieser Bug wird hoffentlich bald gefixt sein.&lt;br /&gt;&lt;br /&gt;Tja f&amp;uuml;r die Version zwei ist aufjedenfall ein BB/GLBasic Port auf der Liste, sowie eine Private/Public/Protected und evtl. ein Debugger.&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Fri, 11 Dec 2009 15:03:56 +0100</pubDate>
		</item>

		<item>
			<title>Normale Arrays Ahoi!</title>
			<link>https://www.blitzforum.de/worklogs/155/#1985</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1985</guid>
			<author>coolo</author>
			<description>Neuer Tag neues Gl&amp;uuml;ck!&lt;br /&gt;&lt;br /&gt;Tja was habe ich Gemacht? Haupts&amp;auml;chlich wurden die normalen Arrays, ab jetzt &amp;quot;Bl&amp;ouml;cke&amp;quot; genannt implementiert. Diese sind sehr schnell und auch leichter zu Debuggen. Der Nachteil ist, dass diese nicht in ihrer Gr&amp;ouml;&amp;szlig;e ver&amp;auml;ndert werden k&amp;ouml;nnen, ohne das Inhalt verloren geht.&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;Local EinArray&amp;#58;Int&lt;br /&gt;Dim&amp;#40;*EinArray,10,10,100&amp;#41;&lt;br /&gt;EinArray&amp;#91;5,9,99&amp;#93;&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;=200 //Mischen von Assoziativen und normalen Arrays&lt;br /&gt;Print&amp;#40;EinArray&amp;#91;5,9,99&amp;#93;&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;&amp;#41;&lt;br /&gt;&lt;br /&gt;Local AnderesArray&amp;#58;Int&lt;br /&gt;AnderesArray&amp;#91;10,&amp;#93;=0 //Definiere ein normales Array, ohne Dim&lt;br /&gt;//&amp;#40;Der Beistrich ist nur dazu da um anzumerken, dass es &lt;br /&gt;//normales Array ist, sonst denkt der Parser es ist ein &lt;br /&gt;//assoziatives Array...&amp;#41;&lt;br /&gt;//AndresArray&amp;#91;5,1&amp;#93;=0 w&amp;uuml;rde auch gehen, bzw AnderesArray&amp;#91;4,5&amp;#93;&lt;br /&gt;AnderesArray&amp;#91;2&amp;#93;=100&lt;br /&gt;Print &amp;#40;AnderesArray&amp;#91;2&amp;#93;&amp;#41;&lt;br /&gt;&lt;br /&gt;//Mehrere Dimensionen auch m&amp;ouml;glich&lt;br /&gt;Local MehrDim&amp;#58;Int&lt;br /&gt;MehrDim&amp;#91;4,&amp;#93;&amp;#91;7,&amp;#93;&amp;#91;9,&amp;#93;&amp;#91;6,&amp;#93;&amp;#91;2,&amp;#93;=0 //Ja da haben wir 5 Dimensionen!&lt;br /&gt;MehrDim&amp;#91;1&amp;#93;&amp;#91;2&amp;#93;&amp;#91;3&amp;#93;&amp;#91;4&amp;#93;&amp;#91;1&amp;#93;=10&lt;br /&gt;Print&amp;#40;MehrDim&amp;#91;1&amp;#93;&amp;#91;2&amp;#93;&amp;#91;3&amp;#93;&amp;#91;4&amp;#93;&amp;#91;1&amp;#93;&amp;#41;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Das besondere an diesen ist, dass Asoziative und normale Arrays vermischt werden k&amp;ouml;nnen. Es sind aber leider nur maximale 4 Array Dimensionen in Normalen Arrays m&amp;ouml;glich. Dieses Manko l&amp;auml;sst sich mit Arrays of Arrays leicht l&amp;ouml;sen, ist allerdings ein wenig langsamer...&lt;br /&gt;&lt;br /&gt;Tja was gibt es sonst noch zu erz&amp;auml;hlen?&lt;br /&gt;ForEach funktioniert nun auch, aber dies ist grottenlangsam und deswegen werden nur maximal ein Dimensionale Assoziative Arrays unterst&amp;uuml;tzt.&lt;br /&gt;&lt;br /&gt;Als n&amp;auml;chstes muss unbedingt die OOP wieder laufen.&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Sun, 06 Dec 2009 11:56:54 +0100</pubDate>
		</item>

		<item>
			<title>Assoziative Arrays²</title>
			<link>https://www.blitzforum.de/worklogs/155/#1984</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1984</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;in den letzten Tagen wars etwas still um Simple Script Max. In der Tat habe ich mit Motivationsschwankungen zu k&amp;auml;mpfen, aber letzlich hat der Wille gesiegt \o/.&lt;br /&gt;&lt;br /&gt;Assoziative Arrays:&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;Local MeinArray&amp;#58;Int&lt;br /&gt;//Dim&amp;#40;*MeinArray&amp;#41; //Nicht mehr notwendig&lt;br /&gt;//Dim&amp;#40;*MeinArray&amp;#91;-10&amp;#93;&amp;#41; //Auch nicht notwendig&lt;br /&gt;MeinArray&amp;#91;-10&amp;#93;&amp;#91;-5*2&amp;#93;=100000&lt;br /&gt;MeinArray&amp;#91;-10&amp;#93;&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;=99&lt;br /&gt;Print &amp;#40;MeinArray&amp;#91;-10&amp;#93;&amp;#91;-10&amp;#93; * MeinArray&amp;#91;-10&amp;#93;&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;&amp;#41;&lt;br /&gt;Print &amp;#40;EineFunk&amp;#40;MeinArray&amp;#41;&amp;#91;10&amp;#93;&amp;#41; //Jahaa das funkt endlich &amp;#58;&amp;#41;&lt;br /&gt;&lt;br /&gt;Function EineFunk&amp;#40;EineInt&amp;#58;Int&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Local EinArray&amp;#58;Int&lt;br /&gt;&amp;nbsp; &amp;nbsp;EinArray&amp;#91;10&amp;#93;=100&lt;br /&gt;&amp;nbsp; &amp;nbsp;Return &amp;#40;EinArray&amp;#41;&lt;br /&gt;EndFunction&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Diese Arrays sind extrem flexibel, da die Arrays On The Fly deklariert werden k&amp;ouml;nnen. &lt;br /&gt;&lt;br /&gt;Die Arraybl&amp;ouml;cke kommen als n&amp;auml;chstes dran, danach wird die OOP endlich wieder auf Vordermann gebracht &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;.&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo</description>
			<pubDate>Sat, 05 Dec 2009 15:58:35 +0100</pubDate>
		</item>

		<item>
			<title>Alles neu!</title>
			<link>https://www.blitzforum.de/worklogs/155/#1981</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1981</guid>
			<author>coolo</author>
			<description>Hoi und guten morgen *g&amp;auml;hn*.&lt;br /&gt;&lt;br /&gt;Da mir in letzter Zeit sehr viele Bugs aufgefallen sind bez&amp;uuml;glich OOP Instanzzugreifsystem und Arrays in Klassen, habe ich mich entschieden diese zwei Dinge v&amp;ouml;llig neu zu schreiben. Das kann sehr lange dauern.&lt;br /&gt;&lt;br /&gt;Dazu habe ich mir &amp;uuml;berlegt die Syntax f&amp;uuml;r die Arrays neu zu erstellen. Dies w&amp;auml;re: &lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('2')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('2')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox2&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('2');&quot;&gt;Local MeinArray&amp;#58;Array // Es soll ein Array sein&lt;br /&gt;MeinArray=New MeinArray&amp;#40;Int&amp;#41; // Keine Dimensionen hei&amp;szlig;t, dass es ein assoziatives Array ist es ist vom Datentyp Int&lt;br /&gt;MeinArray&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;=New MeinArray&amp;#40;Int&amp;#41; //Unterarray erzeugen, Es ist vom Datentyp Int&lt;br /&gt;MeinArray&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;&amp;#91;-100&amp;#93;=1000&lt;/div&gt;&lt;br /&gt;Das Ziel ist auch, dass folgende Konstrukte erlaubt werden: &lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('3')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('3')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox3&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('3');&quot;&gt;&lt;br /&gt;Print &amp;#40;MeinArray&amp;#91;10&amp;#93;&amp;#91;-10&amp;#93;&amp;#91;100&amp;#93;&amp;#40;&amp;quot;Ein Parameter&amp;quot;&amp;#41;&amp;#91;&amp;quot;Das ist das r&amp;uuml;ckgabe Array&amp;quot;&amp;#93;&amp;#41; //MeinArray enth&amp;auml;llt einen Funk Ptr&lt;/div&gt;&lt;br /&gt;Au&amp;szlig;erdem habe ich mir das Konzept der &amp;quot;Speicherbl&amp;ouml;cke&amp;quot; &amp;uuml;berlegt. Speicherbl&amp;ouml;cke sind im Grunde genommen ganz normale Arrays, nur dass diese eine feste gr&amp;ouml;&amp;szlig;e haben (Also die normalen Arrays). Diese werden &amp;auml;hnlich implementiert:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('4')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('4')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox4&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('4');&quot;&gt;Local MeinBlock&amp;#58;Array&lt;br /&gt;MeinBlock=New Array&amp;#40;Int,3,4&amp;#41; //3,4 Dimensionen, mit Dimensionen hei&amp;szlig;t, dass es ein Block ist&lt;br /&gt;MeinBlock&amp;#91;2&amp;#93;&amp;#91;1&amp;#93;=100&lt;br /&gt;Print&amp;#40;MeinBlock&amp;#91;2&amp;#93;&amp;#91;1&amp;#93;&amp;#41;&lt;/div&gt;&lt;br /&gt;Der Vorteil dieser ist nat&amp;uuml;rlich, dass sie um einiges schneller sind als die normalen Arrays.&lt;br /&gt;&lt;br /&gt;Diese Dinge stehen allerdings noch in der Konzeptphase.&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem ist nun das &amp;quot;=&amp;quot; ein ganz normaler Operator. Das hei&amp;szlig;t, dass folgende Dinge ohne Probleme m&amp;ouml;glich sind: &lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox5&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('5')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox5&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('5')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox5&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('5');&quot;&gt;Local MeineVar1&amp;#58;Int&lt;br /&gt;Local MeineVar2&amp;#58;Int&lt;br /&gt;MeineVar1=&amp;#40;MeineVar2=100&amp;#41;*4&lt;/div&gt;&lt;br /&gt;MeineVar1 ist 400&lt;br /&gt;MeineVar2 ist 100&lt;br /&gt;&lt;br /&gt;Vielen Dank f&amp;uuml;r das Lesen &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;</description>
			<pubDate>Thu, 03 Dec 2009 06:58:46 +0100</pubDate>
		</item>

		<item>
			<title>Kleine Dinge.</title>
			<link>https://www.blitzforum.de/worklogs/155/#1973</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1973</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;&lt;br /&gt;ich hab in den letzten Tagen eher kleinere (aber sehr praktische Sachen) gemacht.&lt;br /&gt;&lt;br /&gt;Unter anderem kann man nun statt dem &amp;quot;-&amp;gt;&amp;quot; auch den &amp;quot;.&amp;quot; verwenden um auf Klasseninstanzen zuzugreifen.&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem wurde der Bug mt den Lokalen Variablen gefixt. Diese werden sobald eine Funktion aufgerufen wird im &amp;quot;imagin&amp;auml;ren&amp;quot; Stack (Einen richtigen Stack gibt es nicht) gespeichert, und sobald wieder aus der Funktion ausgetreten wird werden wieder die Variablen hineingesetzt.&lt;br /&gt;&lt;br /&gt;Nebenbei kann man nun auch statische Variablen deklarieren. Einfach statt &amp;quot;Local&amp;quot; &amp;quot;Static&amp;quot; schreiben.&lt;br /&gt;&lt;br /&gt;Man kann nun auch Klassen Attribute vordefinieren &amp;quot;Field MeinFeld:Int = 100&amp;quot;.&lt;br /&gt;&lt;br /&gt;Jetzt gibt es auch den &amp;quot;this&amp;quot; Zeiger, dieser ist intern nur eine Referenz auf den &amp;quot;self&amp;quot; Zeiger.&lt;br /&gt;&lt;br /&gt;Ich bin leider auf ein sehr schlimmes Problem gesto&amp;szlig;en:&lt;br /&gt;Folgende Konstrukte funktionieren nicht:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox6&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('6')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox6&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('6')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox6&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('6');&quot;&gt;MeineInstanz-&amp;gt;GetIrgendwas&amp;#40;Hallo-&amp;gt;was&amp;#41;-&amp;gt;Methode&amp;#40;&amp;#41; //Ger&amp;auml;t in eine Endlos schleife weil der parser denkt &amp;quot;Hallo-&amp;gt;was&amp;quot; geh&amp;ouml;rt zu MeineInstanz&lt;br /&gt;MeineReferenz&amp;#91;&amp;quot;Hallo Welt&amp;quot;&amp;#93;-&amp;gt;Gaga&amp;#40;Bu&amp;#40;&amp;#41;&amp;#91;10&amp;#93;&amp;#41;-&amp;gt;Wasdenn&amp;#40;&amp;#41; //Arrays werden v&amp;ouml;llig ignoriert...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo</description>
			<pubDate>Sun, 29 Nov 2009 08:03:52 +0100</pubDate>
		</item>

		<item>
			<title>\o/ \o/ \o/ \o/</title>
			<link>https://www.blitzforum.de/worklogs/155/#1971</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1971</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;&lt;br /&gt;puh ich hab in den letzten drei Tagen soviel gemacht, dass ich glatt vergessen hab einen WL Eintrag zu verfassen.&lt;br /&gt;&lt;br /&gt;Nundenn hier ist er nun.&lt;br /&gt;Die wichtigste Erneuerung:&lt;br /&gt;&lt;b&gt;Garbage Collector&lt;/b&gt;&lt;br /&gt;Dieser ist eine hybride L&amp;ouml;sung. Einerseits verwendet er simples Reference Counting (Das was BlitzMax verwender) andererseits auch einen Mark and Sweep Algorithmus.&lt;br /&gt;Reference Counting hat den entscheidenden Nachteil, dass es Cycling Objects nicht erkennt. (Type TTest; Field Val:TTest = Self; EndType)&lt;br /&gt;Darum wurde der Mark and Sweep Algorithmus implementiert, dieser wird alle 10 Sekunden (einstellbar) oder manuell aufgerufen.&lt;br /&gt;Der GC l&amp;auml;uft mittlerweile sehr stabil und ohne Probleme.&lt;br /&gt;Code:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Type TTest&lt;br /&gt;	Field Val:TTest2&lt;br /&gt;	Field Zahl:Int&lt;br /&gt;EndType&lt;br /&gt;&lt;br /&gt;Type TTest2&lt;br /&gt;	Field Val:TTest&lt;br /&gt;EndType&lt;br /&gt;&lt;br /&gt;Local Test:TTest=New(TTest)&lt;br /&gt;Test-&amp;gt;Zahl=100&lt;br /&gt;Local Test2:TTest&lt;br /&gt;&lt;br /&gt;Test-&amp;gt;Val=New(TTest2)&lt;br /&gt;Test2=Test-&amp;gt;Val&lt;br /&gt;Test2-&amp;gt;Val=Test&lt;br /&gt;&lt;br /&gt;Test=Null&lt;br /&gt;Test2=Null&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Collect() //Langsames Collecten[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Statische Funktionen/Attribute.&lt;/b&gt;&lt;br /&gt;Funktionieren genauso wie in BMax.&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Type TTest&lt;br /&gt;	Global Val:Int&lt;br /&gt;	&lt;br /&gt;	Function Test(sdfdf:int, Huhu:int)&lt;br /&gt;		Print(&amp;quot;In Funktion&amp;quot;)&lt;br /&gt;	EndFunction&lt;br /&gt;EndType&lt;br /&gt;&lt;br /&gt;Local Test:TTest=New(TTest)&lt;br /&gt;Test.Test()&lt;br /&gt;Test.Val=100&lt;br /&gt;Local Test2:TTest=New TTest()&lt;br /&gt;Test2.Test()&lt;br /&gt;TTest.Test()&lt;br /&gt;Print(&amp;quot;Statisches Attribut: &amp;quot; + TTest.Val)&lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;Meine ToDo Liste enth&amp;auml;lt nurmehr 5 EIntr&amp;auml;ge (einer davon ist allerdings ein sehr hartn&amp;auml;ckiger Bug...)&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo&lt;br /&gt;</description>
			<pubDate>Fri, 27 Nov 2009 20:23:39 +0100</pubDate>
		</item>

		<item>
			<title>Klassen funktionieren wieder</title>
			<link>https://www.blitzforum.de/worklogs/155/#1969</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1969</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;&lt;br /&gt;nach Stunden des Bug suchens habe ich nun endlich das Klassen System auf den alten Stand gebracht. Das hei&amp;szlig;t das Referenzsystem ist nun um einiges Stabiler (und schneller...) als das zuvor verwendete Int Handle System.&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem k&amp;ouml;nnen nun folgende Ausdr&amp;uuml;cke geparst und ausgef&amp;uuml;hrt werden (Das Beispiel ist eig. sinnlos):&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Test1 CastTo TBaseType CastTo Object CastTo TBaseType CastTo TTest-&amp;gt;ToString()[/syntax]&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem habe ich einen furchtbaren Bug im FUnktionssystem gefunden: Rekursive Funktionsaufrufe funktionieren nicht. Um dieses problem zu umgehen habe ich 2 L&amp;ouml;sungen parat:&lt;br /&gt;&lt;br /&gt;*1. Einen neuen Variablen Deklarationstype implementieren, dieser w&amp;uuml;rde bei jedem Funktionsaufruf im Speicher intern kopiert werden und dann mit dem zu arbeiten.&lt;br /&gt;&lt;br /&gt;*2. Alle Lokale Variablen werden beim Funktionsaufruf intern kopiert. Dies w&amp;uuml;rde zwar einfacher sein, w&amp;auml;re allerdings um einiges langsamer.&lt;br /&gt;&lt;br /&gt;*3. Ein mittelding aus den zwei Varianten. Man definiert eine Rekursive Funktion (Diese darf sich dann selber aufrufen) und die anderen d&amp;uuml;rfen das nicht. Dies w&amp;auml;re ein gutes Mittelding aus den Varianten.&lt;br /&gt;&lt;br /&gt;Ich muss mir &amp;uuml;berlegen wie ich das nun implementiere. Am liebsten w&amp;auml;re mir nat&amp;uuml;rlich Variante 2. Ich werde schauen was sich da Geschwindigkeits Fresser verbergen.&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo&lt;br /&gt;</description>
			<pubDate>Wed, 25 Nov 2009 17:32:01 +0100</pubDate>
		</item>

		<item>
			<title>Tschüss Int Handles, Hallo Referenzen!</title>
			<link>https://www.blitzforum.de/worklogs/155/#1966</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1966</guid>
			<author>coolo</author>
			<description>Hall&amp;ouml;chen,&lt;br /&gt;gestern habe ich leider vergessen einen Worklog Eintrag zu erstellen. Dies hole ich nun nach.&lt;br /&gt;&lt;br /&gt;Das Problem am alten Klassensystem war, dass ich mit Int Handles gearbeitet habe. Dadurch war es zwar kinderleicht sie als Funktionsparameter zu verwenden, oder in Arrays zu speichern. Hatte aber einen gravierenden Nachteil: Einen Garbage Collector mit diesem System zu implementieren ist nahezu unm&amp;ouml;glich. Au&amp;szlig;erdem sind Int handles auch nicht die schnellsten &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;.&lt;br /&gt;&lt;br /&gt;Dadurch das nun auch Referenzen unterst&amp;uuml;tzt werden habe ich auch diese verwendet um dieses Problem zu beseitigen.&lt;br /&gt;Im moment arbeiten Klassen _fast_ wie vorher, nur dass es noch Probleme mit dem zur&amp;uuml;ckgeben von Klassen in Funktionen gibt.&lt;br /&gt;&lt;br /&gt;Folgender Code war fr&amp;uuml;her praktikabel:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox7&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('7')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox7&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('7')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox7&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('7');&quot;&gt;Type MeineInt&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Field Val&amp;#58;Int&lt;br /&gt;EndType&lt;br /&gt;Local MeineInstanz&amp;#58;Int=New&amp;#40;MeineInt&amp;#41; //Man sieht es man konnte Ints verwenden&lt;/div&gt;&lt;br /&gt;Solch ein Code ist mittlerweile strikt untersagt.&lt;br /&gt;&lt;br /&gt;Nebenbei habe ich nun das letzte Sprachkonstrukt implementiert, das noch ausst&amp;auml;ndig war:&lt;br /&gt;&lt;b&gt;Select - Case - Default - EndSelect&lt;/b&gt;&lt;br /&gt;Arbeitet genauso wie in BlitzMax.&lt;br /&gt;Code:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox8&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('8')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox8&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('8')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox8&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('8');&quot;&gt;Select 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Case 5&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Print&amp;#40;&amp;quot;Butter&amp;quot;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Case 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Print&amp;#40;&amp;quot;Salami&amp;quot;&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Default&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Print&amp;#40;&amp;quot;Nichts&amp;quot;&amp;#41;&lt;br /&gt;EndSelect&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo</description>
			<pubDate>Tue, 24 Nov 2009 07:15:31 +0100</pubDate>
		</item>

		<item>
			<title>Referenzen sind cool!</title>
			<link>https://www.blitzforum.de/worklogs/155/#1962</link>
			<guid>https://www.blitzforum.de/worklogs/155/#1962</guid>
			<author>coolo</author>
			<description>Hallo,&lt;br /&gt;in den letzten Stunden habe ich die Funktions und Variablen Referenzen implementiert. Dazu musste ich dem &amp;quot;*&amp;quot; eine neue F&amp;auml;higkeit beibringen. Dieser Operator gibt die interne ID der Variable/Funktion zur&amp;uuml;ck, somit kann diese dann intern &amp;quot;erkannt&amp;quot; werden und der Referenz zugef&amp;uuml;gt werden.&lt;br /&gt;&lt;br /&gt;Diese Referenzen fungieren als v&amp;ouml;llig normale Variablen. Sie k&amp;ouml;nnen sogar Arrays beinhalten, oder ganze Klassen (Diese sind aber von Haus aus schon Referenzen).&lt;br /&gt;Au&amp;szlig;erdem ist es m&amp;ouml;glich Referenzen wieder zur&amp;uuml;ckzusetzen, dadurch ist das Debugging um einiges leichter.&lt;br /&gt;&lt;br /&gt;Variablen:[syntax=&amp;quot;bmax&amp;quot;]Local MeineRef:Ref&lt;br /&gt;Local MeineInt:Int&lt;br /&gt;MeineInt=100&lt;br /&gt;MeineRef=*MeineInt&lt;br /&gt;Print(MeineRef) &lt;br /&gt;&lt;br /&gt;Local RefVar:Int[]&lt;br /&gt;RefVar[100]=10&lt;br /&gt;EineFunc(*RefVar)&lt;br /&gt;Unref(*MeineRef) //Nicht n&amp;ouml;tig aber zum veranschaulichen gut&lt;br /&gt;&lt;br /&gt;Function EineFunc(var:Ref)&lt;br /&gt;	Print(var[100])&lt;br /&gt;EndFunction[/syntax]&lt;br /&gt;&lt;br /&gt;Die Funktions Refernzen funktionieren ebenfalls. Es ist m&amp;ouml;glich auch Methoden zu referenzieren, es wird aber geraten dies nicht zutun, da es manchmal zu unvorhergesehenen Dinge kommt (Der Self Pointer wird falsch &amp;uuml;bernommen) warum das so ist wei&amp;szlig; ich nicht, aber das wird sich schon irgendwann zeigen.&lt;br /&gt;&lt;br /&gt;Funkionen:[syntax=&amp;quot;bmax&amp;quot;]Local FuncRef:Ref&lt;br /&gt;FuncRef=*MeineRefFunc&lt;br /&gt;FuncRef(10)&lt;br /&gt;print(&amp;quot;Ende&amp;quot;)&lt;br /&gt;&lt;br /&gt;Function MeineRefFunc(EinPara:int)&lt;br /&gt;	Print(&amp;quot;In Funktion! &amp;quot;+EinPara)&lt;br /&gt;EndFunction[/syntax]&lt;br /&gt;&lt;br /&gt;Nebenbei hab ich einen Bug bei den Globalen Variablen festgestellt, der etwas tiefer im System versteckt ist.&lt;br /&gt;&lt;br /&gt;MfG&lt;br /&gt;Coolo</description>
			<pubDate>Sun, 22 Nov 2009 10:38:54 +0100</pubDate>
		</item>


	</channel>
</rss>
