<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>VHPD Blog &#187; Programmierung</title>
	<atom:link href="http://www.vhpd.de/category/software/programmierung/feed" rel="self" type="application/rss+xml" />
	<link>http://www.vhpd.de</link>
	<description>Blog for [V]ideo, [H]ardware, [P]rograms, [D]ata and more..</description>
	<lastBuildDate>Sun, 02 Oct 2011 15:31:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Grundlagen der Informatik: Memory Management Unit MMU</title>
		<link>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-memory-management-unit-mmu</link>
		<comments>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-memory-management-unit-mmu#comments</comments>
		<pubDate>Mon, 20 Dec 2010 18:02:05 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Grundwissen Informatik]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Basics]]></category>
		<category><![CDATA[Grundlagen der Informatik]]></category>
		<category><![CDATA[Hauptspeicher]]></category>
		<category><![CDATA[MMU]]></category>
		<category><![CDATA[Rahmen Nr.]]></category>
		<category><![CDATA[Seiten Nr.]]></category>
		<category><![CDATA[Seitengröße]]></category>
		<category><![CDATA[Seitentabelle]]></category>
		<category><![CDATA[Speichergröße]]></category>
		<category><![CDATA[Swaping]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1356</guid>
		<description><![CDATA[Grundlagen der Informatik: Memory Management Unit MMU Damit unser Prozessor nicht selbst die logischen Adressen umrechnen muss zu den tatsächlich Adresse im Hauptspeicher gibt es eine MMU. Warum man diesen Teil Hardwaretechnisch ausgelagert hat versteht sich von selbst, da durch diese Rechnungen vom Prozessor pro Zugriff wertvolle Zeit verloren geht. Bei dieser Grafik wird deutlich, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1175" title="informatik_basics_vhpd_2" src="http://www.vhpd.de/wp-content/uploads/2010/09/informatik_basics_vhpd_2.png" alt="" width="64" height="64" /><strong>Grundlagen der Informatik: Memory Management Unit MMU</strong></p>
<p>Damit unser Prozessor nicht selbst die logischen Adressen umrechnen muss zu den tatsächlich Adresse im Hauptspeicher gibt es eine MMU. Warum man diesen Teil Hardwaretechnisch ausgelagert hat versteht sich von selbst, da durch diese Rechnungen vom Prozessor pro Zugriff wertvolle Zeit verloren geht.</p>

<a href="http://www.vhpd.de/wp-content/gallery/grundlagen-der-informatik/memory_management_unit_vhpd.png" title="" class="thickbox" rel="singlepic304" >
	<img class="ngg-singlepic ngg-center" src="http://www.vhpd.de/wp-content/gallery/cache/304__640x480_memory_management_unit_vhpd.png" alt="memory_management_unit_vhpd" title="memory_management_unit_vhpd" />
</a>

<p>Bei dieser Grafik wird deutlich, dass der CPU vom die <strong>logische Adresse</strong> weitergereicht wird, an die <strong>MMU</strong>, diese überprüft zuerst, ob sich die<strong> logische Adresse überhaupt in dem freigegebenen Adressraum des Programms befindet</strong>. Die Überprüfung ist ganz simpel, da einfach überprüft wird, ob die Adresse größer ist, als das Grenzregister der Anwendung.<br />
Dadurch kann das Programm <strong>nicht eine logische Adresse anfordern, die weit über dem Programm freigegebenen Speicher liegt,</strong> um Daten von einem anderen Programm auslesen zu können.</p>
<p>Nun wird die<strong> Seiten Nr. ermittelt</strong>, dieser Vorgang ist nicht weiter komplex, da die logische Adresse binär maskiert wird. Um das nachrechnen zu können mit dezimalen Adressen, kann man die <strong>gesamte logische Adresse durch die Seitengröße teilen</strong>. Sollte das Ergebnis nicht ganzzahlig sein, so wird einfach alles nach dem Komma weggestrichen.</p>
<p>Im Nächsten Schritt wird die <strong>Prozess/Programm abhängige Seitentabelle geladen</strong> und die herausgefundene <strong>Seiten Nr. gesucht</strong>. Sobald diese gefunden wurde, wird die <strong>Rahmen Nr.</strong>, bzw. die genaue Block-Anfangs-Adresse im Hauptspeicher<strong> herausgeladen und ersetzt die Seiten Nr. </strong>der logischen Adresse. Das kann man dezimal mit einer einfachen Addition erledigen.</p>
<blockquote><p>logische Adresse - Seiten Nr. * Seitengröße = Displacement</p>
<p>2055 - 1 * 2048 = 7 -&gt; Das Ergebnis ist das Displacement (Seitengröße in diesem Beispiel: 2 KByte)</p></blockquote>
<p>Nun wurde bereits oft über das Displacement geschrieben, das <strong>Displacement</strong> ist die Adresse innerhalb eines Speicherblocks zu dem gewünschten Dateninhalt.</p>
<p>Hierbei wird auch das PresentBit überprüft, wenn dieses <strong>nicht 1 (true) ist</strong>, dann befindet sich unser gewünschter Speicherblock <strong>nicht im Hauptspeicher</strong> sondern wurde Geswaped. Der <strong>Swap (Auslagerung)</strong> lagert unbenutzte Speicherblöcke auf die Festplatte aus, damit wir mehrere Programme öffnen können und auch Inhalte bearbeiten können, die größer sind als unser Hauptspeicher (z. B. Videobearbeitung von HD-Filmen). Jedoch verzögert das Swapen das Ausführen von einem Programm. Wenn auf einen solchen Block zugegriffen wird, wird das Programm blockiert und der Speicherblog wieder in den Hauptspeicher geladen (<strong>Pagefoult</strong>).<br />
Dieses Phänomen kann man heute auch noch sehen, indem man viele Programme gleichzeitig öffnet und parallel laufen lässt, dadurch wird das System deutlich langsamer und die Programme werden wegen den Pagefoult immer kurzzeitig blockiert, hierbei entsteht die Wartezeit.</p>
<p>Zu der Block-Anfangs-Adresse (Rahmen Nr. * Seitengröße) wird nun das Displacement Addiert.</p>
<p>Nun haben wir die physikalische Adresse, diese kann nun auf den Datenbus gelegt werden, mit der Anweisung auf den Steuerungsbus.</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-memory-management-unit-mmu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grundlagen der Informatik: Der Hauptspeicher</title>
		<link>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-der-hauptspeicher</link>
		<comments>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-der-hauptspeicher#comments</comments>
		<pubDate>Mon, 20 Dec 2010 16:56:14 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Grundwissen Informatik]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Arbeitsspeicher]]></category>
		<category><![CDATA[Grundlage der Informatik]]></category>
		<category><![CDATA[Hauptpseicher]]></category>
		<category><![CDATA[MMU]]></category>
		<category><![CDATA[Ram]]></category>
		<category><![CDATA[Speicherzugriff]]></category>
		<category><![CDATA[Trap]]></category>
		<category><![CDATA[Zugriff]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1354</guid>
		<description><![CDATA[Grundlagen der Informatik: Der Hauptspeicher Jeder weis wie wichtig der Arbeitsspeicher bzw. Hauptspeicher bei einem PC ist, doch was macht er wirklich? Wie organisiert er seinen Inhalt und wie greifen die Programme darauf zu? Ein Programm oder genauer gesagt, ein laufender Prozess, brauch im (Haupt-)Speicher Daten (Variablen, Attribute) und auch der Programmcode (Funktionen, Prozeduren). Früher [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1175" title="informatik_basics_vhpd_2" src="http://www.vhpd.de/wp-content/uploads/2010/09/informatik_basics_vhpd_2.png" alt="" width="64" height="64" /><strong>Grundlagen der Informatik: Der Hauptspeicher</strong></p>
<p>Jeder weis wie wichtig der Arbeitsspeicher bzw. Hauptspeicher bei einem PC ist, doch was macht er wirklich? Wie organisiert er seinen Inhalt und wie greifen die Programme darauf zu?</p>
<p>Ein Programm oder genauer gesagt, ein laufender Prozess, brauch im (Haupt-)Speicher Daten (Variablen, Attribute) und auch der Programmcode (Funktionen, Prozeduren).</p>

<a href="http://www.vhpd.de/wp-content/gallery/gemischt/ram_2_vhpd.jpg" title="" class="thickbox" rel="singlepic302" >
	<img class="ngg-singlepic ngg-center" src="http://www.vhpd.de/wp-content/gallery/cache/302__320x240_ram_2_vhpd.jpg" alt="ram_2_vhpd" title="ram_2_vhpd" />
</a>

<p>Früher zu DOS Zeiten hat der Compiler/Linker die absoluten Adressen zu den Attributen, Variablen bzw. zu den Funktionen gelegt. Das ist auch einer der Gründe, warum DOS nicht Multitasking fähig war.</p>
<p>Heutzutage erstellt der Compiler/Linker bei dem kompilieren logische Adressen (beginnend ab 0) zu den Bestandteilen im Hauptspeicher, diese kann dann das Betriebssystem selbstständig verwalten und die logischen Adressen können dynamisch berechnet werden.</p>
<p><strong>Logische Adressen</strong> kann man sich somit als eine vereinfachte Adresse vorstellen, die unser Betriebssystem frei verwalten kann und einer physikalischen Adresse zuteilen kann.</p>
<p>Ein weiterer Vorteil ist das <strong>dynamische Laden</strong>. Diese Bestandteile werden erst in den Hauptspeicher geladen, wenn sie für die Laufzeit notwendig werden. Vor allem bei Multitasking Systemen kommt es oft vor, dass 2 oder mehr Programme auf dieselbe Bibliothek zugreifen.</p>
<p>Natürlich wird auch hier jetzt klar, dass unser Betriebssystem jetzt die logischen Adressen frei Verwalten kann und den Arbeitsspeicher effizient verwenden kann. Mittels <strong>Paging</strong> wird der benötigte Speicher in Seiten bzw. Blöcken aufgeteilt und auf dem Arbeitsspeicher verteilt. In einer <strong>Seitentabelle</strong> kann nun nachgeschaut werden, wo sich der eigentliche Speicherplatz auf dem Hauptspeicher befindet.</p>
<p><strong>Gemeinsam genutzte Bibliotheken</strong> - Bei dem ersten Aufruf des Programms einer Bibliothek, wird ein Platzhalter ("stab") erstellt, dieser untersucht dann ob die Bibliothek bereits geladen wurde. Wenn die Bibliothek noch nicht geladen wurde, wird sie geladen und der Platzhalter bekommt einen Link zu der geladenen Bibliothek. Wenn aber die benötigte Bibliothek vorhanden ist, wird sofort der Platzhalter entfernt und zeigt direkt auf die geladene Bibliothek.<br />
Wenn das unser Betriebssystem das nicht verwalten würde, dann hätte jedes Programm die Bibliothek geladen und das würde unnötig den Speicher beanspruchen.</p>
<p><strong>Jedes Programm hat seinen eigenen Speicherbereich und kann NICHT auf den anderen Speicherbereich zugreifen.<br />
</strong>Dies ist aus Sicherheitsgründen notwendig, da sonst Viren oder andere Programme den Inhalt aus anderen Programmen einfach lesen können bzw. diese beeinflussen kann. Diese Schutzvorrichtung ist in der MMU verankert.</p>
<p>Damit unser Prozessor nicht selbstständig alle Speicherbereiche von der logischen Adresse zur physikalischen Adresse berechnen muss, gibt es auf unserer Hardware eine Memory Management Unit MMU</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/programmierung/grundlagen-der-informatik-der-hauptspeicher/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grundlagen der Informatik &#8211; Thread Zustände</title>
		<link>http://www.vhpd.de/software/grundlagen-der-informatik-thread-zustande</link>
		<comments>http://www.vhpd.de/software/grundlagen-der-informatik-thread-zustande#comments</comments>
		<pubDate>Wed, 27 Oct 2010 22:17:47 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Grundwissen Informatik]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Grundlagen der Informatik]]></category>
		<category><![CDATA[Thread]]></category>
		<category><![CDATA[Threads]]></category>
		<category><![CDATA[Übergänge]]></category>
		<category><![CDATA[Zustände]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1262</guid>
		<description><![CDATA[Grundlagen der Informatik - Thread Zustände Immer mehr Programme verwenden Threads, aber viele kennen nicht mal die Zustände und Übergänge diese "Kontrollfäden". Hier ist eine "kleine" Übersicht der Zustände, die ein Thread bekommen kann: Da dieses Bild recht groß ist, sollte man es im Vollbildmodus anschauen . Update: kleiner Pfeilfehler wurde verbessert.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1175" title="informatik_basics_vhpd_2" src="http://www.vhpd.de/wp-content/uploads/2010/09/informatik_basics_vhpd_2.png" alt="" width="64" height="64" /><strong>Grundlagen der Informatik - Thread Zustände</strong></p>
<p>Immer mehr Programme verwenden Threads, aber viele kennen nicht mal die Zustände und Übergänge diese "Kontrollfäden". Hier ist eine "kleine" Übersicht der Zustände, die ein Thread bekommen kann:</p>

<a href="http://www.vhpd.de/wp-content/gallery/grundlagen-der-informatik/threadzustande_2.jpg" title="" class="thickbox" rel="singlepic277" >
	<img class="ngg-singlepic ngg-center" src="http://www.vhpd.de/wp-content/gallery/cache/277_watermark_320x240_threadzustande_2.jpg" alt="threadzustande_2" title="threadzustande_2" />
</a>

<p>Da dieses Bild recht groß ist, sollte man es im Vollbildmodus anschauen <img src='http://www.vhpd.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><strong>Update: </strong>kleiner Pfeilfehler wurde verbessert.</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/grundlagen-der-informatik-thread-zustande/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grundlagen der Informatik &#8211; Semaphore (Thread Steuerung)</title>
		<link>http://www.vhpd.de/software/grundlagen-der-informatik-semaphore-thread-steuerung</link>
		<comments>http://www.vhpd.de/software/grundlagen-der-informatik-semaphore-thread-steuerung#comments</comments>
		<pubDate>Wed, 27 Oct 2010 19:26:21 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Grundwissen Informatik]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Entwiklung]]></category>
		<category><![CDATA[Grundlagen der Informatik]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kritischer Zustand]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Semaphore]]></category>
		<category><![CDATA[Semaphoren Class]]></category>
		<category><![CDATA[Thread]]></category>
		<category><![CDATA[Threads verwaltung]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1260</guid>
		<description><![CDATA[Grundlagen der Informatik - Semaphore (Thread Steuerung) Wenn man mit Threads arbeitet, muss man aufpassen, dass die Threads sich nicht gegenseitig blockieren. Deshalb sollte man beachten, ob der Thread in einen kritischen Zustand gerät. Bevor dieser in einen kritischen Zustand kommt, soll gefragt werden, ob ein anderer bereits darin ist. Damit sich die Threads nicht [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1175" title="informatik_basics_vhpd_2" src="http://www.vhpd.de/wp-content/uploads/2010/09/informatik_basics_vhpd_2.png" alt="" width="64" height="64" /><strong>Grundlagen der Informatik - Semaphore (Thread Steuerung)</strong></p>
<p>Wenn man mit Threads arbeitet, muss man aufpassen, dass die Threads sich nicht gegenseitig blockieren. Deshalb sollte man beachten, ob der Thread in einen kritischen Zustand gerät. Bevor dieser in einen kritischen Zustand kommt, soll gefragt werden, ob ein anderer bereits darin ist. Damit sich die Threads nicht in die Quere kommen.</p>
<p><strong>Kritischer Zustand</strong></p>
<p>Ein kritischer Zustand ist eine Sequenz von einem Thread, die durch das einwirken eines anderen Threads manipuliert bzw. blockiert werden kann. In dem kritischen Zustand kann das Programm abstürzen oder schwere Fehler verursachen. Kommen oft zustande wenn mehrere Threads auf die gleiche Variable bzw. Attribut zugreifen wollen.</p>
<p>Im kritischen Zustand können somit zwei Threads <strong>verklemmen</strong>!</p>
<p>In Java kann man eine Semaphore so programmieren:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Semaphore <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> value<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> Semaphore<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> pInit<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pInit <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            pInit <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        value <span style="color: #339933;">=</span> pInit<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">synchronized</span> <span style="color: #000066; font-weight: bold;">void</span> down<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>value <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
                wait<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">InterruptedException</span> exp<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        value<span style="color: #339933;">--;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">synchronized</span> <span style="color: #000066; font-weight: bold;">void</span> up<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        value<span style="color: #339933;">++;</span>
        notifyAll<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>In dem Konstruktor der Semaphore wird ein Integerwert übergeben, wie viele Threads auf einmal in den überwachten kritischen Zustand kommen dürfen. Natürlich kann dieser Wert nicht kleiner als 0 sein und auch 0 macht wenig sinn, da sonst kein Thread den kritischen Zustand erlangen kann.</p>
<p>In Unserem Beispiel setzten wir den value-Wert auf 1. Wir haben 2 Threads die in einen kritischen Zustand kommen.</p>
<p>Wenn jetzt nun unser 1. Thread in den Zustand kommen möchte, ruft diese den Befehl down() auf. Nun wird value auf 0 gesetzt und unser 1. Thread kann arbeiten. Sollte jetzt der 2. Thread kommen, dann bleibt er bei der Abfrage value == 0 hängen und wartet nun <strong>passiv</strong>.</p>
<p>Wenn unser 1. Thread nun den kritischen Zustand verlässt wird value wieder auf 1 gesetzt und mittels notifyAll() werden die wartenden Threads geweckt. Der erste der nun geweckt wurde, kann nun den kritischen Zustand erreichen. In unserem Beispiel ist nun der 2. Thread in der Lage den kritischen Zustand zu erreichen.</p>
<p>Klar ist, dass die Semaphore die gleiche sein muss, die beide Threads verwenden. Weil wenn jeder Thread seine eigene Semaphore hat, werden beide nahezu gleichzeitig in den kritischen Zustand wechseln.</p>
<p>Eine Semaphore kann man sich wie eine Ampel vorstellen, die den "Verkehr" regelt. Hierbei kann sie Threads in die Warteliste schieben und auch wieder in den bereiten Zustand ändern.</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/grundlagen-der-informatik-semaphore-thread-steuerung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String überprüfen auf unzulässige Zeichen (Char) &#8211; nur von &#8216;A&#8217; bis &#8216;Z&#8217;</title>
		<link>http://www.vhpd.de/software/string-uberprufen-auf-unzulassige-zeichen-char-nur-von-a-bis-z</link>
		<comments>http://www.vhpd.de/software/string-uberprufen-auf-unzulassige-zeichen-char-nur-von-a-bis-z#comments</comments>
		<pubDate>Mon, 25 Oct 2010 17:32:00 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[A bis Z]]></category>
		<category><![CDATA[Abzählbarer Datentyp]]></category>
		<category><![CDATA[Char]]></category>
		<category><![CDATA[Durchsuchen]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1245</guid>
		<description><![CDATA[In Java einen String überprüfen auf unzulässige Zeichen (Char) - nur von 'A' bis 'Z' Es gibt sicherlich viele Möglichkeiten dieses bekannte Problem zu lösen, doch seit einigen Tagen bin ich auf einen interessanten Ansatz gestoßen. Da Char ein abzählbarer Datentyp ist, kann man ihn auch mittels den Vergleichsoperatoren agieren. 1 2 3 4 5 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-335" title="&lt;!--:de--&gt;Java&lt;!--:--&gt;" src="http://www.vhpd.de/wp-content/uploads/2008/11/243px-java-logosvg.png" alt="" width="82" height="154" /><strong>In Java einen String überprüfen auf unzulässige Zeichen (Char) - nur von 'A' bis 'Z'</strong></p>
<p>Es gibt sicherlich viele Möglichkeiten dieses bekannte Problem zu lösen, doch seit einigen Tagen bin ich auf einen interessanten Ansatz gestoßen.</p>
<p>Da Char ein <strong>abzählbarer Datentyp</strong> ist, kann man ihn auch mittels den Vergleichsoperatoren agieren.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">		<span style="color: #000066; font-weight: bold;">char</span>  test <span style="color: #339933;">=</span><span style="color: #0000ff;">'A'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>test <span style="color: #339933;">&gt;=</span> <span style="color: #0000ff;">'A'</span> <span style="color: #339933;">&amp;&amp;</span> test <span style="color: #339933;">&lt;=</span> <span style="color: #0000ff;">'Z'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ist Dabei&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Dieser Code überprüft ob das Char in test von A..Z ist. Sollte es kleingeschrieben oder außerhalb des gewählten Bereichs kommen, wird "ist dabei" nicht ausgegeben.</p>
<p>Hier ein kleiner Ansatz, um eine Funktion zu schreiben, die nach unerlaubten Zeichen sucht. Erlaubt sind nur Großbuchstaben von A bis Z:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">boolean</span> stringAllowed<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> pString<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">char</span> currentChar<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> pString.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			currentChar <span style="color: #339933;">=</span> pString.<span style="color: #006633;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>currentChar <span style="color: #339933;">&gt;=</span> <span style="color: #0000ff;">'A'</span> <span style="color: #339933;">&amp;&amp;</span> currentChar <span style="color: #339933;">&lt;=</span> <span style="color: #0000ff;">'Z'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/string-uberprufen-auf-unzulassige-zeichen-char-nur-von-a-bis-z/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie funktioniert eine Spiele-Engine?</title>
		<link>http://www.vhpd.de/software/wie-funktioniert-eine-spiele-engine</link>
		<comments>http://www.vhpd.de/software/wie-funktioniert-eine-spiele-engine#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:04:41 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Bericht]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Spiele]]></category>
		<category><![CDATA[Aufbau]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Game-Engine]]></category>
		<category><![CDATA[Gameengine]]></category>
		<category><![CDATA[spiele-engine]]></category>
		<category><![CDATA[spieleengine]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1130</guid>
		<description><![CDATA[Der Aufbau einer modernen Spiele-Engine Jedes Computerspiel baut auf einer Engine auf, immer wieder liest man in Zeitschriften und Magazinen über Speile-Engines doch was ist es wirklich? Ein Spiel zu programmieren ist ein sehr großer Aufwand, den jede Einzelheit in dem Spiel muss vom Programmierer berücksichtigt werden z. B. was passiert, wenn man auf die [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vhpd.de/wp-content/uploads/2008/07/favicon_128.png"><img class="alignleft size-full wp-image-73" title="VHPD-Icon" src="http://www.vhpd.de/wp-content/uploads/2008/07/favicon_128.png" alt="" width="64" height="64" /></a><strong>Der Aufbau einer modernen Spiele-Engine</strong></p>
<p>Jedes Computerspiel baut auf einer Engine auf, immer wieder liest man in Zeitschriften und Magazinen über Speile-Engines doch was ist es wirklich?</p>
<p>Ein Spiel zu programmieren ist ein sehr großer Aufwand, den jede Einzelheit in dem Spiel muss vom Programmierer berücksichtigt werden z. B. was passiert, wenn man auf die "Enter"-Taste drückt. Aber wenn die gesamte Logik und das Spielverhalten entwickelt ist, muss man ja auch noch auf irgendeiner Art und Weiße das Ganze als Grafik ausgeben.</p>
<p><strong>Durch die immer komplexer werdenden Spiele und deren Grafikausgabe, ist eine Spiele-Engine unbedingt erforderlich</strong>. Den die Engine beinhaltet Elemente wie die Grafikausgabe, Soundausgabe, Steuerung und sogar die Spielephysik. Sozusagen greift der eigentliche Spieleprogrammierer dann nur auf die jeweiligen Objekte und Methoden zu, welche die Game Engine bereitstellt.</p>

<a href="http://www.vhpd.de/wp-content/gallery/gemischt/game_engine_aufbau_vhpd.png" title="" class="thickbox" rel="singlepic224" >
	<img class="ngg-singlepic ngg-center" src="http://www.vhpd.de/wp-content/gallery/cache/224__320x240_game_engine_aufbau_vhpd.png" alt="game_engine_aufbau_vhpd" title="game_engine_aufbau_vhpd" />
</a>

<p>Manche Engines sind sogar Plattformunabhängig, d. H. dass man damit ein Spiel programmiert und diese ohne großen Änderungsaufwand auf einer X-Box und der PS3 läuft. Das Programmieren mit einer Engine nimmt viel Arbeit ab, jedoch muss man sich zuerst zurechtfinden.<br />
Es gibt kein einheitliches Schema für Engines, daher brauchen Engines z. B. andere spezielle Objekte und Laufzeitroutinen, damit alles so klappt, wie man es sich vorgestellt hat.</p>
<p>Die Grafik oben zeigt deutlich, welche Teile zwangsläufig in einer normalen Engine enthalten sein müssen. Es gibt sehr viele kostenlose Spiele-Engines, eine davon ist z. B. die GTGE für JAVA. Aber man sollte auf ein paar Kleinigkeiten achten:</p>
<p>1. Jede Engine ist in einer speziellen Programmiersprache entwickelt und man muss somit Zwangsweise auch in dieser Programmiersprache das Spiel schreiben. Es gibt zwar komplexe Ausnahmen über die Einbindung mittels DDL-Dateien, aber das würde den Rahmen der einfachen Erklärung sprengen.</p>
<p>2. Manche Engine sind für spezielle Spiele entwickelt worden, daher kann es ziemlich schwer oder gar unmöglich werden, mittels einer "Rennspiel-Engine" ein Strategiespiel zu programmieren. Genau so auch die Art, mit einer 2D-Engine wird kein Mensch ein 3D-Spiel programmieren, sowie mittels einer 3D-Engine ein 2D Spiel unnötig kompliziert wäre.</p>
<p>3. Für ein kleines Spiel, brauch mein keine unnötig komplexe und riesige Engine. Denn dadurch wird das Einarbeiten in die Engine nur unnötig komplex und man könnte letztendlich an der Unüberschaubarkeit der Engine scheitern.</p>
<p>4. Damit man mit einer Engine ein Spiel programmieren kann, sollte man schon einiges Programmiert haben und die objektorientierte Programmierung verstanden haben. Alle Pakete und Klassen werden als Objekte eingebunden und mit ihnen wird auch so programmiert. Ausnahme sind prozedurale Spiele-Engines (nicht Empfohlen).</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/wie-funktioniert-eine-spiele-engine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmieren in C++ – Teil 2</title>
		<link>http://www.vhpd.de/software/programmieren-in-c-%e2%80%93-teil-2</link>
		<comments>http://www.vhpd.de/software/programmieren-in-c-%e2%80%93-teil-2#comments</comments>
		<pubDate>Tue, 13 Jul 2010 13:35:30 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Bedingung]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[Mehrfachverzweigung]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Teil 2]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1121</guid>
		<description><![CDATA[Programmieren in C++ – Teil 2 - zu Programmieren in C++ - Teil 1 -&#62; Deklaration Bei einer Deklaration wird eine Variable festgelegt, dabei ist entscheidend welchen Datentyp sie hat und optional kann man einen Startwert angeben. int meineZahl = 5 &#60;Datentyp&#62; &#60;Variablenname&#62; = &#60;Startwert&#62; Bedingungen: Die bekannteste Bedingung, auch Verzweigung genannt, ist die IF-Abfrage: [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1093" title="c++" src="http://www.vhpd.de/wp-content/uploads/2010/06/c++.png" alt="" width="64" height="64" /><strong>Programmieren in C++ – Teil 2</strong></p>
<p><a title="C++ Programmieren - Teil 1" href="http://www.vhpd.de/software/programmieren-in-c-teil-1" target="_self">- zu Programmieren in C++ - Teil 1 -&gt;</a></p>
<p><strong>Deklaration</strong></p>
<p>Bei einer Deklaration wird eine Variable festgelegt, dabei ist entscheidend welchen Datentyp sie hat und optional kann man einen Startwert angeben.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> meineZahl <span style="color: #000080;">=</span> <span style="color: #0000dd;">5</span></pre></div></div>

<p>&lt;Datentyp&gt; &lt;Variablenname&gt; = &lt;Startwert&gt;</p>
<p><strong>Bedingungen:</strong></p>
<p>Die bekannteste Bedingung, auch Verzweigung genannt, ist die IF-Abfrage:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> password <span style="color: #000080;">==</span> <span style="color: #FF0000;">&quot;Hallo&quot;</span> <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//wenn der Fall zutrifft</span>
<span style="color: #008000;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: #008000;">&#123;</span>
   <span style="color: #666666;">//wenn der Fall NICHT zutrifft</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p><strong>Die Switch’n’Case Mehrfachverzeigung</strong></p>
<p>Die Variable „wert“ darf nur int, long, short oder char sein.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">swich<span style="color: #008000;">&#40;</span>wert<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">:</span>  <span style="color: #666666;">// Anweisungen für 1</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">:</span>  <span style="color: #666666;">//Anweisungen für 2</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">:</span>  <span style="color: #666666;">//Anweisungen für 3</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">default</span><span style="color: #008080;">:</span>  <span style="color: #666666;">//Anweisung für andern Wert</span>
                <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p><strong>Schleifen:</strong></p>
<p>Schleifen werden verwendet um oft verwendete Anweisungen bzw. Befehle einfach zu wiederholen, ohne es im Quellcode mehrfach kopieren zu müssen.</p>
<p>Man unterteilt die Schleifen in 3 Arten:</p>
<p><strong>Kopfgesteuerte Schleife:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> BEDIGNUNG <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
     <span style="color: #666666;">//Aktionen</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Fußgesteuerte Schleife:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">do</span><span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//Aktionen</span>
<span style="color: #008000;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> BEDINGUNG <span style="color: #008000;">&#41;</span></pre></div></div>

<p><strong>Zählschleife:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">70</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #666666;">//Ausführung die 70 Mal erfolgt</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p><strong>Compiler</strong></p>
<p>Das wichtigste Element, bei dem erstellen von Programmen. Denn der Compiler wandelt unseren Quellcode um, in einen Maschinencode. Dieser Maschinencode ist dann auf den jeweiligen Prozessor abgestimmt und kann nur auf der ausgewählten Architektur laufen. Eine Architekturist somit von dem verwendete µControler abhängig.</p>
<p><img class="aligncenter size-full wp-image-1127" title="Quelltext_zu_Maschinencode_compiler_vhpd" src="http://www.vhpd.de/wp-content/uploads/2010/07/Quelltext_zu_Maschinencode_compiler_vhpd.png" alt="" width="463" height="106" /></p>
<p>Der Compiler weist auch auf Fehler im Quelltext hin, die nach verschiedenen Kriterien sortiert werden:</p>
<p><strong> Lexikalische Analyse:</strong> Überprüft ob Sonderzeichen im Quellcode verwendet werden, die nicht zugelassen sind, wie z. B. „ä“ , „ö“ , „ü“ und „ß“.</p>
<p><strong> Syntaktische Analyse: </strong>Untersucht ob alle Syntaxrichtlinien eingehalten worden sind. Darunter fällt z. B., dass jede geöffnete Klammer „{“ eine geschlossene Klammer „}“ hat.</p>
<p><strong>Semantische Analyse:</strong> Vergleicht ob die Inhalte der Bibliotheken, Module und Datentypen richtig verwendet wurden.</p>
<p>Benjamin Salchow</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/programmieren-in-c-%e2%80%93-teil-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmieren in C++ &#8211; Teil 1</title>
		<link>http://www.vhpd.de/software/programmieren-in-c-teil-1</link>
		<comments>http://www.vhpd.de/software/programmieren-in-c-teil-1#comments</comments>
		<pubDate>Tue, 29 Jun 2010 15:30:58 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Bericht]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Operatoren]]></category>
		<category><![CDATA[Programmieren in C++]]></category>
		<category><![CDATA[Programmierparadigmen]]></category>
		<category><![CDATA[Tabellen]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1113</guid>
		<description><![CDATA[Programmieren in C++ - Teil 1 C++ ist eine höhere Programmiersprache und die Weiterentwicklung von C. Mittels der Unterstützung von mehreren Programmierparadigmen, wie z. B. objektorientierte, generische, funktionelle, prozedurale und abstrakte Programmierung ist es eine sehr flexible und leistungsstarke Programmiersprache. C++ ist im Jahre 1979 erschienen und ist eine der meist verwendeten Programmiersprachen für Computersysteme [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vhpd.de/wp-content/uploads/2010/06/c++.png"><img class="alignleft size-full wp-image-1093" title="c++" src="http://www.vhpd.de/wp-content/uploads/2010/06/c++.png" alt="" width="64" height="64" /></a><strong>Programmieren in C++ - Teil 1<br />
</strong></p>
<p>C++ ist eine höhere Programmiersprache und die Weiterentwicklung von C. Mittels der Unterstützung von mehreren Programmierparadigmen, wie z. B. objektorientierte, generische, funktionelle, prozedurale und abstrakte Programmierung ist es eine sehr flexible und leistungsstarke Programmiersprache. C++ ist im Jahre 1979 erschienen und ist eine der meist verwendeten Programmiersprachen für Computersysteme und Mikrocontroller.</p>
<p><strong>Operatoren</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="92" valign="top"><strong>Zeichen</strong></td>
<td width="312" valign="top">
<p style="text-align: left;"><strong>Bedeutung</strong></p>
</td>
<td width="139" valign="top"><strong>Beispiel</strong></td>
</tr>
<tr>
<td width="92" valign="top">=</td>
<td width="312" valign="top">Zuweisung</td>
<td width="139" valign="top">meineZahl = 5</td>
</tr>
<tr>
<td width="92" valign="top">+</td>
<td width="312" valign="top">Addition</td>
<td width="139" valign="top">meineZahl = 5 + 3</td>
</tr>
<tr>
<td width="92" valign="top">-</td>
<td width="312" valign="top">Subtraktion</td>
<td width="139" valign="top">meineZahl = 5 – 3</td>
</tr>
<tr>
<td width="92" valign="top">*</td>
<td width="312" valign="top">Multiplikation</td>
<td width="139" valign="top">meineZahl = 5*2</td>
</tr>
<tr>
<td width="92" valign="top">/</td>
<td width="312" valign="top">Division</td>
<td width="139" valign="top">meineZahl = 5/2</td>
</tr>
<tr>
<td width="92" valign="top">%</td>
<td width="312" valign="top">Modulo – Rest bei   Division</td>
<td width="139" valign="top">meineZahl = 5%2</td>
</tr>
<tr>
<td width="92" valign="top">++</td>
<td width="312" valign="top">Inkrement – Erhöht   die Variable um 1</td>
<td width="139" valign="top">meineZahl++</td>
</tr>
<tr>
<td width="92" valign="top">--</td>
<td width="312" valign="top">Dekrement –   Verringert die Variable um 1</td>
<td width="139" valign="top">meineZahl--</td>
</tr>
</tbody>
</table>
<p><strong>Vergleichsoperatoren</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="92" valign="top"><strong>Zeichen</strong></td>
<td width="312" valign="top"><strong>Bedeutung</strong></td>
</tr>
<tr>
<td width="92" valign="top">==</td>
<td width="312" valign="top">Entspricht bzw.   Gleich</td>
</tr>
<tr>
<td width="92" valign="top">&gt;</td>
<td width="312" valign="top">Größer als</td>
</tr>
<tr>
<td width="92" valign="top">&lt;</td>
<td width="312" valign="top">Kleiner als</td>
</tr>
<tr>
<td width="92" valign="top">&gt;=</td>
<td width="312" valign="top">Größer gleich als</td>
</tr>
<tr>
<td width="92" valign="top">&lt;=</td>
<td width="312" valign="top">Kleiner gleich als</td>
</tr>
<tr>
<td width="92" valign="top">!=</td>
<td width="312" valign="top">ungleich</td>
</tr>
</tbody>
</table>
<p><strong>Einfache Datentypen - Bezogen auf MEGA128<br />
</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="110" valign="top"><strong>Name</strong></td>
<td width="235" valign="top"><strong>Beschreibung</strong></td>
<td width="199" valign="top"><strong>Wertebereich </strong><em>(SoccerBoard)</em><strong> </strong></td>
</tr>
<tr>
<td width="110" valign="top"><strong>int</strong></td>
<td width="235" valign="top">Ganze Zahlen</td>
<td width="199" valign="top">-32767 .. 32768</td>
</tr>
<tr>
<td width="110" valign="top"><strong>float, double </strong></td>
<td width="235" valign="top">Fließkommazahlen</td>
<td width="199" valign="top"></td>
</tr>
<tr>
<td width="110" valign="top"><strong>char</strong></td>
<td width="235" valign="top">Zeichen</td>
<td width="199" valign="top"><acronym title="American Standard Code for Information Interchange">ASCII</acronym>-Code</td>
</tr>
<tr>
<td width="110" valign="top"><strong>bool</strong></td>
<td width="235" valign="top">Wahrheitswert</td>
<td width="199" valign="top">true oder false</td>
</tr>
</tbody>
</table>
<p><strong>Programmierbausteine</strong></p>
<p>Ein Kommentar wird vom Compiler nicht berücksichtigt und ist in der kompilierten Datei nicht vorhanden. Kommentare dienen dazu, den Quelltext leserlich zu gestalten und um komplexe Vorgänge im Quellcode erklären zu können.</p>
<p>Der einfache Zeilenkommentar:</p>
<pre><span style="color: #008000;">//Das ist ein Kommentar</span></pre>
<p>Alles nach den zwei „//“ wird als Kommentar angesehen und wird vom Compiler ignoriert. Der Kommentar endet automatisch mit der nächsten Zeile.</p>
<p>Der mehrzeilige Kommentar:</p>
<pre><span style="color: #008000;">/* ein Langer Text, der auch mehrere Zeilen haben kann */
</span></pre>
<p>Benjamin Salchow</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/programmieren-in-c-teil-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winamp C++ Controll Klasse</title>
		<link>http://www.vhpd.de/software/winamp-c-controll-klasse</link>
		<comments>http://www.vhpd.de/software/winamp-c-controll-klasse#comments</comments>
		<pubDate>Sun, 06 Jun 2010 12:01:32 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[GetArtist]]></category>
		<category><![CDATA[GetTitle]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Steuerung]]></category>
		<category><![CDATA[Winamp]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1094</guid>
		<description><![CDATA[Funktionsfähige Winamp c++ Controll Klasse Für das aktuelle VHPD-Projekt "Smart G15 Winamp Controll Delux" haben wir eine C++ Winamp Steuerungsklasse erstellt, die auf dem offiziellen WinAmp SDK basiert und mittels der Vorlage von b2bk aus einem Forum (link -&#62;). Die Klasse wurde so erweitert, dass der Titel und der aktuelle Artist getrennt voneinander ausgelesen werden [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1093" title="c++" src="http://www.vhpd.de/wp-content/uploads/2010/06/c++.png" alt="" width="64" height="64" /><strong>Funktionsfähige Winamp c++ Controll Klasse</strong></p>
<p>Für das aktuelle VHPD-Projekt "Smart G15 Winamp Controll Delux" haben wir eine C++ Winamp Steuerungsklasse erstellt, die auf dem offiziellen WinAmp <acronym title="Software Development Kit">SDK</acronym> basiert und mittels der Vorlage von b2bk aus einem Forum (<a title="c Winamp Klasse" rel="nofollow" href="http://www.mp-hacks.de/forum/showthread.php?2617-Winamp-%28Class%29&amp;p=33915&amp;viewfull=1" target="_blank">link -&gt;</a>).</p>
<p>Die Klasse wurde so erweitert, dass der Titel und der aktuelle Artist getrennt voneinander ausgelesen werden kann. Dabei wird mittels den Stringfunktionen der Bindestrich gesucht und ab diesen getrennt. Jedoch darf der Artist in seinem Namen <strong>KEINEN BINDESTRICH </strong>"-" haben, sonst wird leider falsch getrennt.</p>
<p>Damit immer die aktuellen Informationen in der Klasse stehen, muss die Funktion UpdateWinampInfo() mindestens ein Mal pro Sekunde aufgerufen werden, da sonst die Angaben falsch sind.</p>
<p>Nur WinAmp Plug-Ins können direkt den Titel und Artist aus dem ID3 Tag laden, daher wurde dies so umständlich über den Fensternamen gemacht.</p>
<p>Das ist das erste c++ Projekt des VHPD-Blogs und alle Klassen sind noch im Betastatus, deshalb sind Verbesserungsvorschläge gerne willkommen.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &quot;stdafx.h&quot;</span>
<span style="color: #339900;">#include &quot;ColorAndMono.h&quot;</span>
<span style="color: #339900;">#include &quot;ColorAndMonoDlg.h&quot;</span>
<span style="color: #339900;">#include &quot;ExtraTester.h&quot;</span>
<span style="color: #339900;">#include &quot;wa_ipc.h&quot;</span>
<span style="color: #339900;">#include &quot;WinUser.h&quot;</span>
<span style="color: #339900;">#include &quot;WinDef.h&quot;</span>
<span style="color: #339900;">#include</span>
<span style="color: #339900;">#include </span>
&nbsp;
<span style="color: #0000ff;">class</span> CWinamp
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
	HWND m_hWinamp<span style="color: #008080;">;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
	<span style="color: #0000ff;">int</span> m_iCurrentMilliseconds<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iCurrentSeconds<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iCurrentMinutes<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iCurrentMinuteSeconds<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iTotalSeconds<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iTotalMinutes<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iTotalMinuteSeconds<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> m_iVolume<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> m_bStopped<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> m_bPaused<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> m_bShuffle<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> m_bRepeat<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> m_chOldTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> m_chOnlyTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> m_chOnlyArtist<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> m_chTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> m_bTitleChanged<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> UpdateWinampInfo<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		m_hWinamp <span style="color: #000080;">=</span> <span style="color: #008080;">::</span><span style="color: #007788;">FindWindow</span><span style="color: #008000;">&#40;</span> <span style="color: #FF0000;">&quot;Winamp v1.x&quot;</span>, <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #666666;">//Winamp läuft</span>
			m_iCurrentMilliseconds <span style="color: #000080;">=</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">105</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			m_iCurrentSeconds <span style="color: #000080;">=</span> m_iCurrentMilliseconds <span style="color: #000040;">/</span> <span style="color: #0000dd;">1000</span><span style="color: #008080;">;</span>
			m_iCurrentMinutes <span style="color: #000080;">=</span> m_iCurrentSeconds <span style="color: #000040;">/</span> <span style="color: #0000dd;">60</span><span style="color: #008080;">;</span>
			m_iCurrentMinuteSeconds <span style="color: #000080;">=</span> m_iCurrentSeconds <span style="color: #000040;">-</span> m_iCurrentMinutes <span style="color: #000040;">*</span> <span style="color: #0000dd;">60</span><span style="color: #008080;">;</span>
			m_iTotalSeconds <span style="color: #000080;">=</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">105</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			m_iTotalMinutes <span style="color: #000080;">=</span> m_iTotalSeconds <span style="color: #000040;">/</span> <span style="color: #0000dd;">60</span><span style="color: #008080;">;</span>
			m_iTotalMinuteSeconds <span style="color: #000080;">=</span> m_iTotalSeconds <span style="color: #000040;">-</span> m_iTotalMinutes <span style="color: #000040;">*</span> <span style="color: #0000dd;">60</span><span style="color: #008080;">;</span>
			m_iVolume <span style="color: #000080;">=</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #000040;">-</span><span style="color: #0000dd;">666</span>, <span style="color: #0000dd;">122</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">int</span> iPlayState <span style="color: #000080;">=</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">104</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> iPlayState <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> m_bStopped <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span> m_bPaused <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> iPlayState <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> m_bStopped <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span> m_bPaused <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span> m_bStopped <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span> m_bPaused <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			m_bShuffle <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">250</span> <span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			m_bRepeat <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_USER, <span style="color: #0000dd;">0</span>, <span style="color: #0000dd;">251</span> <span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
			<span style="color: #0000ff;">char</span> szTemp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #008000;">&#93;</span>, <span style="color: #000040;">*</span>pchTemp<span style="color: #008080;">;</span>
			GetWindowText<span style="color: #008000;">&#40;</span> m_hWinamp, szTemp, <span style="color: #0000dd;">512</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			pchTemp <span style="color: #000080;">=</span> szTemp <span style="color: #000040;">+</span> <span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span> szTemp <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> pchTemp <span style="color: #000040;">&amp;</span>gt<span style="color: #008080;">;</span><span style="color: #000080;">=</span> szTemp <span style="color: #000040;">&amp;</span>amp<span style="color: #008080;">;</span><span style="color: #000040;">&amp;</span>amp<span style="color: #008080;">;</span> <span style="color: #000040;">*</span>pchTemp <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #FF0000;">'-'</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> pchTemp<span style="color: #000040;">--</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			pchTemp<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
			<span style="color: #000040;">*</span>pchTemp <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
&nbsp;
			m_bTitleChanged <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span> m_chOldTitle, szTemp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span> m_chTitle, szTemp <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle, <span style="color: #FF0000;">&quot;%s &quot;</span>, m_chTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				m_bTitleChanged <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span> m_chOldTitle, szTemp <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">char</span> chTemp<span style="color: #008080;">;</span>
			chTemp <span style="color: #000080;">=</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
                        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000040;">&amp;</span>lt<span style="color: #008080;">;</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> chTemp<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
&nbsp;
			<span style="color: #000040;">*</span>m_chOnlyArtist <span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
			<span style="color: #000040;">*</span>m_chOnlyTitle <span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
&nbsp;
			<span style="color: #666666;">//Aufteilen des Strings</span>
			<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span><span style="color: #000040;">*</span>p <span style="color: #000080;">=</span> <span style="color: #0000dd;">strchr</span> <span style="color: #008000;">&#40;</span>m_chTitle, <span style="color: #FF0000;">'-'</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #666666;">//Kein Textinhalt</span>
				<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>m_chOnlyArtist,  m_chTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #666666;">//bindestrich gefunden</span>
				<span style="color: #0000dd;">strncpy</span> <span style="color: #008000;">&#40;</span>m_chOnlyArtist, m_chTitle, p <span style="color: #000040;">-</span> m_chTitle<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				m_chOnlyArtist<span style="color: #008000;">&#91;</span>p <span style="color: #000040;">-</span> m_chTitle<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span><span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
				<span style="color: #0000dd;">strcpy</span> <span style="color: #008000;">&#40;</span>m_chOnlyTitle, p <span style="color: #000040;">+</span> <span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
			<span style="color: #008000;">&#125;</span>
&nbsp;
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
		<span style="color: #008000;">&#123;</span>
			m_bPaused <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			m_bRepeat <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			m_bShuffle <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			m_bStopped <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			m_iCurrentMilliseconds <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			m_iCurrentMinutes <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			m_iCurrentMinuteSeconds <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			m_iCurrentSeconds <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			m_iTotalMinutes <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			m_iTotalMinuteSeconds <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			m_iTotalSeconds <span style="color: #000080;">=</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			m_iVolume <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span> m_chTitle, <span style="color: #FF0000;">&quot;Winamp wird nicht ausgeführt&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>m_chOnlyArtist, <span style="color: #FF0000;">&quot;Winamp wird momentan&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//Ausgeben das Winamp nicht läuft</span>
			<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>m_chOnlyTitle, <span style="color: #FF0000;">&quot;             nicht ausgeführt.&quot;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//Ausgeben das Winamp nicht läuft</span>
			<span style="color: #666666;">//m_chOnlyTitle[0] ='\0';  //Titel leeren</span>
			m_bTitleChanged <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> <span style="color: #0000dd;">strcmp</span><span style="color: #008000;">&#40;</span> m_chOldTitle, m_chTitle <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle, <span style="color: #FF0000;">&quot;%s &quot;</span>, m_chTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				m_bTitleChanged <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span> m_chOldTitle, m_chTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">char</span> chTemp<span style="color: #008080;">;</span>
			chTemp <span style="color: #000080;">=</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000040;">&amp;</span>lt<span style="color: #008080;">;</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span> <span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span> m_chScrollingTitle<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> chTemp<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> Prev<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40044</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> Play<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40045</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> Pause<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40046</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> Stop<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40047</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> Next<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40048</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> VolumeUp<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40058</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> VolumeDown<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40059</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span> <span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> OpenJumpToTime <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40193</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> OpenJumpToFile <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> m_hWinamp<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> SendMessage<span style="color: #008000;">&#40;</span> m_hWinamp, WM_COMMAND, <span style="color: #0000dd;">40194</span>, <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> setRepeat<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> m_hWinamp<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>SendMessage<span style="color: #008000;">&#40;</span>m_hWinamp,WM_WA_IPC,i,<span style="color: #0000dd;">253</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">void</span> setRandom<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> m_hWinamp<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>SendMessage<span style="color: #008000;">&#40;</span>m_hWinamp,WM_WA_IPC,i,<span style="color: #0000dd;">252</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>Damit kann man einfach alle wichtigenInformationen wie Titel, Artist, verbleibende Zeit und Fenster ansteuern, die WinAmp zur Verfügung stellt.</p>
<p>Viel Spaß beim verwenden und testen der Klasse.</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/software/winamp-c-controll-klasse/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kampf der Giganten &#8211; HTML5 gegen Flash</title>
		<link>http://www.vhpd.de/allgemein/kampf-der-giganten-html5-gegen-flash</link>
		<comments>http://www.vhpd.de/allgemein/kampf-der-giganten-html5-gegen-flash#comments</comments>
		<pubDate>Sat, 08 May 2010 16:12:19 +0000</pubDate>
		<dc:creator>BennyS</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[webseiten]]></category>

		<guid isPermaLink="false">http://www.vhpd.de/?p=1076</guid>
		<description><![CDATA[Das neue HTML 5 - Konzept und der Kampf gegen Flash Und wieder eine Webseite komplett mit Flash programmiert, lange Ladezeiten und dazu eine Aneinanderreihung schräger Töne, die eine Hintergrundmusik ergeben soll. Ein Anblick auf immer mehr Webseiten, den Flash kämpft sich immer mehr an die Spitze der Webseiten. Aber was ist denn so falsch [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-725" title="&lt;!--:de--&gt;vhpd_network_icon&lt;!--:--&gt;" src="http://www.vhpd.de/wp-content/uploads/2009/08/vhpd_network_icon.jpg" alt="" width="70" height="64" /><strong>Das neue <acronym title="HyperText Markup Language">HTML</acronym> 5 - Konzept und der Kampf gegen Flash</strong></p>
<p>Und wieder eine Webseite komplett mit Flash programmiert, lange Ladezeiten und dazu eine Aneinanderreihung schräger Töne, die eine Hintergrundmusik ergeben soll.</p>
<p>Ein Anblick auf immer mehr Webseiten, den Flash kämpft sich immer mehr an die Spitze der Webseiten. Aber was ist denn so falsch an Flash?</p>
<p>Flash ist seit mehreren Jahren eine unfreie Skriptsprache, die Vektorgrafiken animieren kann. Dazu beinhaltet es dutzende von Sicherheitslücken und sorgt für instabile Browser. Nun fragen sich die meisten, warum den dann so viele Flash verbauen auf der Webseite?</p>
<p>Die Antwort ist eher mager, genauso wie die Fähigkeiten der Entwickler von Flashseiten. Ein Einfaches hin- und hergeziehe von Elementen, die man dann in Action-Skript, die "Programmiersprache" von Flashanwendungen, bearbeitet und erweitert. Die Folgen sind starke Probleme für Suchmaschinen, langsamere PCs und für schlechte Internetverbindungen.</p>
<p>Aber abgesehen davon, kann man mit Flash problemlos Internetspiele programmieren, die nicht mittels Java direkt auf einer virtuellen Maschine laufen.</p>
<p>Nach vielen Festlegungen der <acronym title="World Wide Web Consortium">W3C</acronym> kam man endlich auf die Idee, in <acronym title="HyperText Markup Language">HTML</acronym> selbst einige Flashelemente einzubauen, die dann Suchmaschinen lesen können und vor allem keinen Schaden an dem laufenden System verursachen. Elemente sind:</p>
<ul>
<li>2D Canvas</li>
<li>Progress</li>
<li>Video</li>
<li>Audio</li>
<li>u.s.w</li>
</ul>
<p>Praktisch eine Aneignung der Flash Lite Serie, die zur Folge haben kann, dass nun noch mehr Webseiten irgendwelche Musikstücke im Hintergrund laufen lassen und Knöpfe im Menü sich wie ein Schuss einer Pistole anhören.</p>]]></content:encoded>
			<wfw:commentRss>http://www.vhpd.de/allgemein/kampf-der-giganten-html5-gegen-flash/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

