<?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>Martin&#039;s Blog &#187; Sonstiges</title>
	<atom:link href="http://blog.m-ri.de/index.php/category/programmieren/sonstiges/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.m-ri.de</link>
	<description>Gesammeltes aus dem Leben eines &#34;normalen&#34; Programmierers... :-)</description>
	<lastBuildDate>Thu, 29 Jul 2010 19:26:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>VeriSign &#8216;Microsoft Authenticode&#8217; Class 3 Code Signing Digital Certificate für $99,&#8211;</title>
		<link>http://blog.m-ri.de/index.php/2010/07/29/verisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99/</link>
		<comments>http://blog.m-ri.de/index.php/2010/07/29/verisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 19:26:49 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[VeriSign]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=652</guid>
		<description><![CDATA[<p>Ich war mal wieder auf meiner WinQual Seite um festzustellen ob es im aktuellen Release auffällige Crashes gibt.<br />
Dabei viel mir ein Link ins Auge, der ein <strong>VeriSign &#8216;Microsoft Authenticode&#8217; Class 3 Code Signing Digital Certificate</strong> für nur <strong>$99,&#8211;</strong> anbietet. Bei einem Normalpreis von <strong>$499,&#8211;</strong> ist das kein schlechter Preis!</p>
<p>Hier der Link auf die WinQual Seite:<br />
<a href="http://winqual.microsoft.com/help/default.htm#obtaining_a_verisign_class_3_digital_id.htm" target="_blank">http://winqual.microsoft.com/help/default.htm#obtaining_a_verisign_class_3_digital_id.htm</a></p>
<p>und hier der entsprechende Link direkt zu VeriSign:<br />
<a href="https://securitycenter.verisign.com/celp/enroll/upsell?promo_code=THEDEAL99&amp;application_locale=VRSN_US&amp;originator=VeriSign:CELP&amp;bundle_id=MSIECS002&amp;enable_options=validity_1" target="_blank">https://securitycenter.verisign.com/celp/enroll/upsell?promo_code=THEDEAL99&amp;application_locale=VRSN_US&amp;originator=VeriSign:CELP&amp;bundle_id=MSIECS002&amp;enable_options=validity_1</a></p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F&amp;title=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--&amp;annotation=Ich%20war%20mal%20wieder%20auf%20meiner%20WinQual%20Seite%20um%20festzustellen%20ob%20es%20im%20aktuellen%20Release%20auff%C3%A4llige%20Crashes%20gibt.%0D%0ADabei%20viel%20mir%20ein%20Link%20ins%20Auge%2C%20der%20ein%20VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20nur%20%2499%2C--%20an" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F&amp;title=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--&amp;notes=Ich%20war%20mal%20wieder%20auf%20meiner%20WinQual%20Seite%20um%20festzustellen%20ob%20es%20im%20aktuellen%20Release%20auff%C3%A4llige%20Crashes%20gibt.%0D%0ADabei%20viel%20mir%20ein%20Link%20ins%20Auge%2C%20der%20ein%20VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20nur%20%2499%2C--%20an" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F&amp;bm_description=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F&amp;t=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F&amp;title=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=VeriSign%20%27Microsoft%20Authenticode%27%20Class%203%20Code%20Signing%20Digital%20Certificate%20f%C3%BCr%20%2499%2C--%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F29%2Fverisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2010/02/01/mein-baby-ist-nun-kompatibel-mit-windows-7/" title="Mein &#8220;Baby&#8221; ist nun &#8220;Kompatibel mit Windows 7&#8243; (Mo 01. Feb 2010)">Mein &#8220;Baby&#8221; ist nun &#8220;Kompatibel mit Windows 7&#8243;</a> (2)</li>
	<li><a href="http://blog.m-ri.de/index.php/2010/06/07/tipps-tricks-mal-ganz-schnell-das-ms-sql-server-2008-managment-studio-express-nachinstallieren/" title="Tipps &#038; Tricks: Mal ganz schnell das MS-SQL Server 2008 Managment Studio Express nachinstallieren (Mo 07. Jun 2010)">Tipps &#038; Tricks: Mal ganz schnell das MS-SQL Server 2008 Managment Studio Express nachinstallieren</a> (1)</li>
	<li><a href="http://blog.m-ri.de/index.php/2009/02/15/slow-drawtext-performance-in-vista-and-windows-7-please-comment/" title="Slow DrawText performance in Vista and Windows 7. Please comment&#8230; (So 15. Feb 2009)">Slow DrawText performance in Vista and Windows 7. Please comment&#8230;</a> (7)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/07/29/verisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meine Lieblingstools</title>
		<link>http://blog.m-ri.de/index.php/2010/07/02/meine-lieblingstools/</link>
		<comments>http://blog.m-ri.de/index.php/2010/07/02/meine-lieblingstools/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 17:17:53 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Entwicklung]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=602</guid>
		<description><![CDATA[<p>Hier mal eine Liste meiner Lieblingstools (nicht nur für die Software-Entwicklung).<br />
Sowohl Freeware als auch Tools für die ich gerne Geld ausgegeben habe.</p>
<p>Und wie immer ist das natürlich auch eine Geschmacksache und über den Geschmack lässt sich bekannter Maßen auch streiten.</p>
<h3>Kostenlose Tools in alphabetischer Folge</h3>
<ul>
<li><strong>7-Zip</strong> (<a href="http://www.7-zip.org/">http://www.7-zip.org/</a>)<br />
Das rundum sorglos Paket, wenn es um Packen und Entpacken von Dateien geht.</li>
<li><strong><strong>Axialis IconWorkshop</strong> Lite </strong>(<a href="http://www.axialis.com/download/iwlite.html">http://www.axialis.com/download/iwlite.html</a>)<br />
Für mich der Beste Icon- und Bitmap Editor. Hier in der Lite Version wer kein Geld ausgeben will.</li>
<li><strong>BugTracker.Net</strong> (<a href="http://sourceforge.net/projects/btnet/">http://sourceforge.net/projects/btnet/</a>)<br />
Der TFS istprima für die aktuelle Projekt- und Entwicklungsarbeit. Aber als externes Portal und als Ideensamlung, oder auch als Vorstufe zum Filtern zwischen Second-Level-Suppport und der Entwicklung habe ich dieses Tool liebgewonnen. Flexibel, simpel, schnell, kein Wartungsaufwand.</li>
<li><strong>Comment Reflower</strong><br />
VS-2005: <a href="http://commentreflower.sourceforge.net/" target="_blank">http://commentreflower.sourceforge.net/</a><br />
VS-2008 und VS-2010: <a href="http://www.kynosarges.de/CommentReflower.html" target="_blank">http://www.kynosarges.de/CommentReflower.html</a><br />
Das Addin der Wahl um einfach Kommentare im Sourcecode zu formatieren.</li>
<li><strong>Radio fx / ClipInc fx </strong>(<a href="http://www.tobit.de">http://www.tobit.de</a>)<br />
Wer seine Musiksammlung einfach und legal erweitern will, kann dies mit diesem Tool machen.</li>
<li><strong>Dependency Walker / Depends.exe</strong> (<a href="http://dependencywalker.com/">http://dependencywalker.com/</a>)<br />
Unverzichtbar für die Analyse von ausführbaren Dateien. Besonders eben auch die Trace Funktionen, die auch das Aufspüren von Ladeproblemen bei COM Modulen unterstützt.</li>
<li><strong>FileZilla </strong>(<a href="http://www.filezilla.de">http://www.filezilla.de</a>)<br />
Nicht unbedingt die tollste Öberfläche aber nützlich, schnell und effektiv.</li>
<li><strong>Frhed </strong>(<a href="http://frhed.sourceforge.net">http://frhed.sourceforge.net</a>)<br />
Der beste Hex-Editor, mit wichtigen Funktionen wie Ersetzen tauschen etc.</li>
<li><strong>iTunes </strong>(<a href="http://www.apple.com/de/itunes">http://www.apple.com/de/itunes</a>)<br />
OK! Ich habe auch einen 20GB iPod. Aber dennoch ist iTunes für mich das beste Tool meine Musik zu verwalten. Ich habe mich mit dem Mediaplayer nie wirklich anfreunden können.</li>
<li><strong>KeePass </strong>(<a href="http://keepass.info">http://keepass.info</a>)<br />
Der Password-Safe! Wer viele Kennworte verwalten muss, ist froh komplexe Kennworte  verwenden zu können, aber sich nur eines merken zu müssen.</li>
<li><strong>Notepad++ </strong>(<a href="http://notepad-plus.sourceforge.net">http://notepad-plus.sourceforge.net</a>)<br />
Ein Editor der mir vor allem wegen seiner erweiterten Funktionen für Lesezeichen (Zeilen mit Lesezeichen kopieren, löschen) wichtig ist. Früher habe ich Textpad verwendet nur wurde der einfach nicht vernünftig weiter entwickelt.</li>
<li><strong>Sysinternal Suite</strong> (<a href="http://technet.microsoft.com/en-us/sysinternals">http://technet.microsoft.com/en-us/sysinternals</a>)<br />
Die unentbehrlichen kleinen Helferleins um in den tiefen des Windows OS zu forschen. DbgView, Process Explorer und Monitor müssten geschrieben werden, wenn es sie nicht schon gäbe.</li>
<li><strong>TCC LE </strong>(<a href="http://www.jpsoft.com/downloads/v11/tccle.exe">http://www.jpsoft.com/downloads/v11/tccle.exe</a>)<br />
Wer das Geld für TCC nicht ausgeben will, bekommt einen guten CMD.EXE Ersatz, dem nur wenig zum großen Bruder TCC 11.0 fehlt.</li>
<li><strong>TeamViewer</strong> (<a href="http://teamviewer.com/">http://teamviewer.com/</a>)<br />
Wer mal seinem älteren Vater/Mutter, Oma/Opa, oder dem Freund/Freundin schon mal am Telefon helfen musste, der freut sich über den TeamViewer! Mit dem Tool kann man das Problem, das man am Telefon in Worten kaum klären kann, schnell online lösen. Für den Privatgebrauch kostenlos! (Ansonsten sein Geld auch für eine Firma wert!)</li>
<li><strong>TFS Power Tools </strong>(<a href="http://msdn.microsoft.com/en-us/vstudio/bb980963.aspx">http://msdn.microsoft.com/en-us/vstudio/bb980963.aspx</a>)<br />
Eigentlich muss man sich fragen warum diese Power Tools  nicht direkter Bestandteil des TFS sind. Aber es gibt sie ja zum Glück. (Besonders einen Blick wert ist die Windows Shell Extension)</li>
<li><strong>WinMerge </strong>(<a href="http://winmerge.org">http://winmerge.org</a>)<br />
Wenn man öfters mal Reviews macht ist dies das Hilfsmittel der Wahl um Merges und Kontrollen von Änderungen von Sourcecode durchzuführen. </li>
<li><strong>WiX </strong>(<a href="http://wix.sourceforge.net">http://wix.sourceforge.net</a>)<br />
Wenn man auch etwas komplexere MSI Setup Projekte relativ einfach erzeugen will.</li>
</ul>
<h3>Tools, die (IMHO) ihr Geld Wert sind in alphabetischer Folge:</h3>
<ul>
<li><strong>Acronis Home </strong>(<a href="http://www.acronis.de">http://www.acronis.de</a>)<br />
Datensicherung der gesamten Festplatte, made easy. Dazu noch andere gute Tools (Clonen und Löschen von Festplatten). Für mich</li>
<li><strong>Axialis IconWorkshop</strong> (<a href="http://www.axialis.com">http://www.axialis.com</a>)<br />
Für mich der Beste Icon und Bitmap Editor. Wer kein Geld ausgeben will findet auch eine Lite-Version hier <a href="http://www.axialis.com/download/iwlite.html">http://www.axialis.com/download/iwlite.html</a></li>
<li><strong>CppDepend </strong>(<a href="http://www.cppdepend.com">http://www.cppdepend.com</a>)<br />
Code Analyse mal ganz anders aber sehr effektiv (nicht ganz billig).</li>
<li><strong>NOD32 von ESet </strong>(<a href="http://www.eset.de">http://www.eset.de</a>)<br />
Seit NOD32 der erste wirklich funktionierende Virenscanner unter Vista war bin ich bei ihm geblieben. Schnell, Effektiv. Macht das System nicht langsam. Klein und nicht mit überbordenden unnötigen Funktionen überfrachtet.</li>
<li><strong>SpeedCommander </strong>(<a href="http://www.speedcommander.de">http://www.speedcommander.de</a>)<br />
Da ich ein alter XTREE Fan war, habe ich mich nie an den Norton-Commander gewöhnen können. Aber mittlerweile habe ich die vielen integrierten Funktionen des SpeedCommanders schätzen gelernt. Ein zuverlässiges Tool für alles was man so mit Dateien machen muss. Tool einfach auch die FTP Integration, der Quickview, Synchronisation, einen kleinen pasablen Editor und manch anderes mehr.</li>
<li><strong>TCC 11.0 </strong>(<a href="http://www.jpsoft.com">http://www.jpsoft.com</a>)<br />
Das Beste CMD.EXE Substitut. Ich verwende das Ding seit alten 4DOS Zeiten. Ich kann genauso wenig ohne dieses Ding auskomen wie auch nicht ohne VA-X noch Programme schreiben kann. Auch als LE Version für den, der kein Geld ausgeben will <a href="http://www.jpsoft.com/downloads/v11/tccle.exe">http://www.jpsoft.com/downloads/v11/tccle.exe</a></li>
<li><strong>TextPad </strong>(<a href="http://www.textpad.com">http://www.textpad.com</a>)<br />
Über Editoren kann man sich bekannter Maßen streiten. Aber ich habe vor Jahren mir mal eine Lizenz gekauft und war eigentlich immer sehr glücklich mit dem Editor, obwohl in der letzten Zeit kaum noch etwas hier in der Entwicklung passiert. Vista wurde auch etwas verschlafen. Dennoch mag ich diesen aufgeräumten guten Editor.</li>
<li><strong>Visual Assist </strong>(<a href="http://www.wholetomato.com">http://www.wholetomato.com</a>)<br />
Das non plus ultra Addin für jeden Entwickler. Alt+M, ALT+G, ALT+O&#8230; all die netten Hotkeys, die man nicht mehr missen will, mit tollen Refaktoring Funktionen.</li>
<li><strong>VMWare Workstation </strong>(<a href="http://www.vmare.com">http://www.vmware.com</a>)<br />
Das Tool um viele Umgebungen auf einer Entwicklungsmaschine testen zu können. Mal kurz eine Beta zu installieren und und und&#8230; Virtual PC ist nett. VMWare Workstation ist besser.</li>
</ul>
<p>Wer Lust hat kann ja seine Tools gerne als Kommentar ergänzen <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
Vieles Gute kann man in dem unendlichen Angebot an Tools und Software leicht übersehen&#8230;</p>
<p>PS: Ich bin dann erstmal weg, ohne Internet und Laptop in der Sonne&#8230; also nicht wundern wenn ich mal nicht auf einen Kommentar antworte&#8230; <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F&amp;title=Meine%20Lieblingstools&amp;annotation=Hier%20mal%20eine%20Liste%20meiner%20Lieblingstools%20%28nicht%20nur%20f%C3%BCr%20die%20Software-Entwicklung%29.%0D%0ASowohl%20Freeware%20als%20auch%20Tools%20f%C3%BCr%20die%20ich%20gerne%20Geld%20ausgegeben%20habe.%0D%0A%0D%0AUnd%20wie%20immer%20ist%20das%20nat%C3%BCrlich%20auch%20eine%20Geschmacksache%20und%20%C3%BCber%20den%20Geschmack%20l%C3%A4sst%20" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F&amp;title=Meine%20Lieblingstools&amp;notes=Hier%20mal%20eine%20Liste%20meiner%20Lieblingstools%20%28nicht%20nur%20f%C3%BCr%20die%20Software-Entwicklung%29.%0D%0ASowohl%20Freeware%20als%20auch%20Tools%20f%C3%BCr%20die%20ich%20gerne%20Geld%20ausgegeben%20habe.%0D%0A%0D%0AUnd%20wie%20immer%20ist%20das%20nat%C3%BCrlich%20auch%20eine%20Geschmacksache%20und%20%C3%BCber%20den%20Geschmack%20l%C3%A4sst%20" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F&amp;bm_description=Meine%20Lieblingstools&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F&amp;t=Meine%20Lieblingstools" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F&amp;title=Meine%20Lieblingstools" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Meine%20Lieblingstools%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F07%2F02%2Fmeine-lieblingstools%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2008/10/08/vs-tipps-tricks-winmerge-als-diff-tool-in-verbindung-mit-tfs/" title="VS Tipps &#038; Tricks: WinMerge als DIFF-Tool in Verbindung mit TFS (Mi 08. Okt 2008)">VS Tipps &#038; Tricks: WinMerge als DIFF-Tool in Verbindung mit TFS</a> (3)</li>
	<li><a href="http://blog.m-ri.de/index.php/2007/01/27/visual-assist-unter-vista-mit-vs2005-und-sp1-sowie-sp1-fur-vista/" title="Visual Assist X unter Vista mit VS2005 und SP1 (Sa 27. Jan 2007)">Visual Assist X unter Vista mit VS2005 und SP1</a> (1)</li>
	<li><a href="http://blog.m-ri.de/index.php/2010/07/29/verisign-microsoft-authenticode-class-3-code-signing-digital-certificate-fuer-99/" title="VeriSign &#8216;Microsoft Authenticode&#8217; Class 3 Code Signing Digital Certificate für $99,&#8211; (Do 29. Jul 2010)">VeriSign &#8216;Microsoft Authenticode&#8217; Class 3 Code Signing Digital Certificate für $99,&#8211;</a> (0)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/07/02/meine-lieblingstools/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SELECT &#8230; FROM &#8230; WHERE &#8230; NOT IN (&#8230;) Mystik</title>
		<link>http://blog.m-ri.de/index.php/2010/04/25/select-from-where-in-mystik/</link>
		<comments>http://blog.m-ri.de/index.php/2010/04/25/select-from-where-in-mystik/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 19:27:46 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Bug]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=616</guid>
		<description><![CDATA[<p>Wieder mal ein ganz normaler Wahnsinn, der einen Stunden gekostet hat&#8230;</p>
<p>Wenn wir uns die nachfolgenden SQL Statements ansehen, dann würde ich davon ausgehen, dass die ersten 6 eine Ausgabe erzeugen.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 1'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 2'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 3'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- !!!</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 4'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 5'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">-- !!!</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 6'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">-- Empty as expected</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 5'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'Test 6'</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Aber <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' />  Pustekuchen <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
<strong>Die Zeilen 3 und 5 erzeugen keine Ausgabe <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> <strong></strong>Dadurch, dass in dem Ausdruck in der Klammer <em>NULL</em> enthalten ist funktioniert der <em>NOT IN </em>Test nicht mehr korrekt.</strong></p>
<p>Ich bin darauf gestoßen, weil ich ein Subquery durchgeführthabe und mit <em>NOT IN </em>prüfen wollte, dass ein bestimmter Wert eben nicht in diesem Subquery enthalten ist. Einziges Problem war, dass in einigen Fällen dieser Subquery eben auch <em>NULL</em> als Ergebnis geliefert hat. <br />
Und genau in diesem Fall funktionierte die Abfrage nicht korrekt (s.o.). Das sah vereinfacht in etwas so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>ID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>Table1<span style="color: #66cc66;">&#93;</span>
    <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>SomeData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">IN</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>OtherIDWithNULL<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>Table2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Ich habe den Subquery dann entsprechende um ein <em>WHERE &#8230; IS NOT NULL </em>erweitert und siehe da es ging:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>ID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>Table1<span style="color: #66cc66;">&#93;</span>
    <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>SomeData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">IN</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>OtherIDWithNULL<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>Table2<span style="color: #66cc66;">&#93;</span>
            <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>OtherIDWithNULL<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><strong>Rein gefühlt ist das für mich ein Bug, aber es ist keiner <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
</strong>Hier kommt eine Einstellung zum tragen, die sich <em>ANSI_NULL </em>schimpft. (siehe <a href="http://msdn.microsoft.com/de-de/library/ms188048.aspx">SET ANSI_NULL { ON | OFF }</a>)</p>
<p lang="sql"><em>ANSI_NULL</em> ist im Allgemeinen <em>ON</em>, und das bedeutet, dass ein Vergleich eines Wertes mit <em>NULL </em>immer undefiniert ist. Das ein <em>IN</em>-Statement aber nichts anderes ist als ein Vergleich der einzelnen Werte in der Klammer mit dem Zielwert, führt dies hier zu einem irritierenden Ergebnis. <em>NULL=NULL</em> und <strong><em>1=NULL</em> ist eben undefiniert und nicht False</strong> wenn <em>ANSI_NULL ON</em> ist! Also können die Zeilen 3+5 kein korrektes Ergebnis liefern.<br />
Man beachte: Dies hat keinen Einfluß solange man <em>IN </em>verwendet und nicht <em>NOT IN</em>!</p>
<p lang="sql">Meine rein persönliche Meinung:<br />
Ich habe selten solch einen Unsinn in einem ANSI-Standard gesehen. Einfach Unlogisch <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
Für mich ist <em>NULL=NULL</em> und <em>NULL&lt;&gt;AnyThingElse</em> eben <em>True</em>&#8230; Just my 2 cents&#8230;</p>
<p lang="sql">Jetzt könnte man meinen, dass es also auch eine Lösung wäre <em>SET_ANSI_NULL OFF</em> zu verwenden <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' />  (BTW: Eine Einstellung die auch als Attribut direkt auf der Datenbank selbst gesetzt werden kann). Aber der folgende Hinweis in der Doku sollte einen zum Umdenken bewegen:</p>
<blockquote><p>Wichtig:<br />
In einer späteren Version von SQL Server wird ANSI_NULLS immer auf ON festgelegt, und jede Anwendung, die für die Option explizit OFF festlegt, löst einen Fehler aus. Verwenden Sie dieses Feature beim Entwickeln neuer Anwendungen nicht, und planen Sie eine Änderung von Anwendungen, in denen es zurzeit verwendet wird.</p></blockquote>
<p>Da dies also evtl. Einfluss auf andere Codebereiche haben könnte und zukünftig nicht mehr unterstützt wird habe ich auf diese Nutzung verzichtet und lieber das Subquery abgeändert.</p>
<p lang="sql">PS: Bitte jetzt nicht darauf hinweisen, dass es auch <em>JOIN</em> gibt. Aufgrund der Komplexität der Abfrage und weil diese auch noch nach bestimmten Bedingungen gebaut wurde, war ein <em>IN </em>mit einem Subquery, der einfachere Weg.</p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F&amp;title=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik&amp;annotation=Wieder%20mal%20ein%20ganz%20normaler%20Wahnsinn%2C%20der%20einen%20Stunden%20gekostet%20hat...%0D%0A%0D%0AWenn%20wir%20uns%20die%20nachfolgenden%20SQL%20Statements%20ansehen%2C%20dann%20w%C3%BCrde%20ich%20davon%20ausgehen%2C%20dass%20die%20ersten%206%20eine%20Ausgabe%20erzeugen.%0D%0ASELECT%20%27Test%201%27%20WHERE%201%20IN%20%28NULL%2C%201%2C%202%2C%203%2C%204%29" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F&amp;title=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik&amp;notes=Wieder%20mal%20ein%20ganz%20normaler%20Wahnsinn%2C%20der%20einen%20Stunden%20gekostet%20hat...%0D%0A%0D%0AWenn%20wir%20uns%20die%20nachfolgenden%20SQL%20Statements%20ansehen%2C%20dann%20w%C3%BCrde%20ich%20davon%20ausgehen%2C%20dass%20die%20ersten%206%20eine%20Ausgabe%20erzeugen.%0D%0ASELECT%20%27Test%201%27%20WHERE%201%20IN%20%28NULL%2C%201%2C%202%2C%203%2C%204%29" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F&amp;bm_description=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F&amp;t=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F&amp;title=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=SELECT%20...%20FROM%20...%20WHERE%20...%20NOT%20IN%20%28...%29%20Mystik%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F04%2F25%2Fselect-from-where-in-mystik%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2009/04/21/manche-aenderungen-in-den-uis-machen-einen-wahnsinnig-heute-das-ms-sql-management-server-studio/" title="Manche Änderungen in den UIs machen einen wahnsinnig, heute das MS-SQL Management Server Studio (Di 21. Apr 2009)">Manche Änderungen in den UIs machen einen wahnsinnig, heute das MS-SQL Management Server Studio</a> (1)</li>
	<li><a href="http://blog.m-ri.de/index.php/2007/01/10/update-statement-fur-die-tabelle-upgrade-eines-msi-projektes/" title="UPDATE Statement für die Tabelle Upgrade eines MSI-Projektes (Mi 10. Jan 2007)">UPDATE Statement für die Tabelle Upgrade eines MSI-Projektes</a> (0)</li>
	<li><a href="http://blog.m-ri.de/index.php/2010/06/07/tipps-tricks-mal-ganz-schnell-das-ms-sql-server-2008-managment-studio-express-nachinstallieren/" title="Tipps &#038; Tricks: Mal ganz schnell das MS-SQL Server 2008 Managment Studio Express nachinstallieren (Mo 07. Jun 2010)">Tipps &#038; Tricks: Mal ganz schnell das MS-SQL Server 2008 Managment Studio Express nachinstallieren</a> (1)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/04/25/select-from-where-in-mystik/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Mein &#8220;Baby&#8221; ist nun &#8220;Kompatibel mit Windows 7&#8243;</title>
		<link>http://blog.m-ri.de/index.php/2010/02/01/mein-baby-ist-nun-kompatibel-mit-windows-7/</link>
		<comments>http://blog.m-ri.de/index.php/2010/02/01/mein-baby-ist-nun-kompatibel-mit-windows-7/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 19:02:15 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Vista / Windows 7]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=591</guid>
		<description><![CDATA[<p><img class="alignright size-full wp-image-593" title="Kompatibel mit Windows 7" src="http://blog.m-ri.de/wp-content/uploads/2010/01/DE-w7-comp_rgb_M.png" alt="" width="72" height="87" />Das meine Software auf allem läuft was <em>Windows XP </em>und später heißt war mir schon lange klar <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  aber ein offizielles &#8220;Kompatibel für&#8230;&#8221; ist ja schon noch was anderes.<br />
Jetzt habe ich die kostenlose Zertifizierung für die <em>Windows 7 Kompatibilität </em>hinter mich gebracht.<br />
In Klartext ganz offiziell: <strong>AG-VIP SQL in der Version 1.20.008 ist kompatibel mit Windows 7</strong> <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> </p>
<p>Verglichen mit der <em>Vista </em>Zertifizierung, die wir bei einem 3rd Party Unternehmen (<a href="http://www.veritest.com" target="_blank">VeriTest</a>) durchgeführt haben, muss ich sagen: <strong>Windows 7 kompatibel zu werden ist nicht schwer<br />
</strong>Es war wirklich kein großer Aufwand!</p>
<p>Wer sich die Spezifikationen durchgelesen hat wird sehen, dass sich gegenüber der <em>Vista </em>Zertifizierung kaum was geändert hat. Wer also seine Software bereits <em>Vista </em>kompatibel hat, kann gleich einen Durchstart machen und es für <em>Windows 7 </em>auch probieren. Und das schöne: <em>Es kostet nichts!</em><br />
Ich habe es nicht versucht, aber ich vermute mal, dass genau die Version die ich für Vista eingereicht habe auch durch die <em>Windows 7 </em>Zertifizierung gekommen wäre.</p>
<p>Noch ein paar Anmerkungen:</p>
<ul>
<li>Ich kann jeden ermutigen, den Test zu machen, wenn man sowieso schon ein Code Signing Zertifikat und einen 64bit Rechner zur Verfügung hat. Wenn man auf dem man 64bit <em>Windows 7 </em>virtualisieren kann ist die Zertifizierung wirklich einfach. Ich habe <a href="http://www.vmware.com">VMWare</a> benutzt und das ist einfach ein super Werkzeug für so etwas.</li>
<li>Wie bei vielen Zertifizierungen wird viel zu viel Gewicht auf Installation und Deinstallation gelegt. Das war bei der <em>Vista </em>Zertifizierung auch schon so.</li>
<li>Bei der <em>Vista </em>Zertifizierung war noch klar, wie und wo man Waiver (Freistellungen) bekommt, z.B. für Komponenten von Drittherstellern, die Ihre DLLs nicht signieren. Dazu gehört ja auch Microsoft mit den DLLs der MFC <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
In diesem Zertifizierungsprozess, erfährt man, dass man sie evtl. benötigt, aber nicht wo man sie bekommt&#8230;</li>
<li>Manche in meinen Augen wertvolle Tests in der <em>Vista </em>Zertifizierung, wie zum Beispiel, die korrekte Behandlung von Crashes, scheinen vollkommen entfallenzu sein.</li>
<li>Der Test bei dem 3rd Party Unternehmen war weitaus tiefer als das was man bei dem Selbsttest macht. Jetzt genügt ja die Software zu starten und wieder zu beenden. Bei den Tests zu <em>Vista </em>sind wir beim ersten mal durchgefallen, weil hier ein Bug in der MFC mit dem <em>Application Verifier </em>gefunden wurde, der uns beim Testen nicht aufgefallen war  (Siehe <a href="http://blog.m-ri.de/index.php/2007/04/25/bug-in-cpropertypage-und-certified-for-vista/" target="_blank">1</a>, <a href="http://blog.m-ri.de/index.php/2007/04/05/patch-fuer-cpropertypage-bug-der-mfc71dllmfc71udll/" target="_blank">2</a>, <a href="http://blog.m-ri.de/index.php/2007/04/03/bug-in-der-mfc71dll-bzgl-cpropertysheetcpropertypage/" target="_blank">3</a>) <br />
Ich empfinde den Selbsttest als zu schwach um dann ein <em>Windows 7 kompatibel</em> Logo zu bekommen.</li>
<li>Man muss versichern, dass man keine Spyware zertifiziert oder andere böse Software erzeugt&#8230; gelinde gesagt ein Scherz. Bei einem 3rd Party Tester würde solche Spyware (hoffentlich) nicht durchkommen. Das hoffe ich doch wirklich mal! Jetzt muss man nur einen Haken setzen, und sich selbst bestätigen, dass man es nicht tut, obwohl man es evtl. doch tut&#8230; <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Das mindert den Wert dieses Logos ungemein.</li>
<li>Wenn man früher Geld investierte für eine Zertifizierung, hieß das nicht, dass man deshalb bessere Software produziert. Aber 1000$ waren dennoch eine Schwelle über die nicht jeder Hanswurst mit seiner Mickey-Maus-Software gegangen ist.<br />
Jetzt bleibt als Schwelle nur noch der Kauf eines Code-Signing Zertifikates bei <a href="http://www.verisign.de" target="_blank">VeriSign</a> und so was kostet ca. 500$ im Jahr.</li>
<li>Ich vermisse schon lange das Verbot anderer Techniken, zum Beispiel ein Verbot von Systemweiten Hooks, wenn man <em>Windows X kompatibel </em>sein will. Wenn dann sollte so etwas auch nur mit einem Waiver und klarer Begründung erlaubt werden.<br />
Nicht wenige dieser mies programmierten Hooks sorgen für Instabilität, unnützes Aufblähen von Prozessen und manchmal auch miese Performance.</li>
</ul>
<p>Als Fazit bleibt für mich die Frage:<br />
Was nützt ein Logo, dass man zu leicht bekommen kann?</p>
<p>Es bleibt eine Marketing-Aktion und genauso wurde die <em>Vista </em>und jetzt auch die <em>Windows 7 </em>Zertifizierung auch bei uns in der Firma eingestuft. Technischen Nutzen hat das ganze nicht wirklich.</p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F&amp;title=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22&amp;annotation=Das%20meine%20Software%20auf%20allem%20l%C3%A4uft%20was%20Windows%20XP%20und%20sp%C3%A4ter%20hei%C3%9Ft%20war%20mir%20schon%20lange%20klar%20%3B%29%20aber%20ein%20offizielles%20%22Kompatibel%20f%C3%BCr...%22%20ist%20ja%20schon%20noch%20was%20anderes.%0D%0AJetzt%20habe%20ich%20die%20kostenlose%20Zertifizierung%20f%C3%BCr%20die%20Windows%207%20Kompatibilit%C3%A4" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F&amp;title=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22&amp;notes=Das%20meine%20Software%20auf%20allem%20l%C3%A4uft%20was%20Windows%20XP%20und%20sp%C3%A4ter%20hei%C3%9Ft%20war%20mir%20schon%20lange%20klar%20%3B%29%20aber%20ein%20offizielles%20%22Kompatibel%20f%C3%BCr...%22%20ist%20ja%20schon%20noch%20was%20anderes.%0D%0AJetzt%20habe%20ich%20die%20kostenlose%20Zertifizierung%20f%C3%BCr%20die%20Windows%207%20Kompatibilit%C3%A4" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F&amp;bm_description=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F&amp;t=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F&amp;title=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Mein%20%22Baby%22%20ist%20nun%20%22Kompatibel%20mit%20Windows%207%22%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F02%2F01%2Fmein-baby-ist-nun-kompatibel-mit-windows-7%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2010/01/07/nett-windows-7-und-sein-godmode/" title="Nett: Windows 7 und sein GodMode ;) (Do 07. Jan 2010)">Nett: Windows 7 und sein GodMode ;)</a> (4)</li>
	<li><a href="http://blog.m-ri.de/index.php/2009/12/13/installation-aelterer-software-auf-windows-vista-oder-windows-7/" title="Installation älterer Software auf Windows-Vista oder Windows 7 (So 13. Dez 2009)">Installation älterer Software auf Windows-Vista oder Windows 7</a> (3)</li>
	<li><a href="http://blog.m-ri.de/index.php/2009/12/08/windows-integrity-control-schreibzugriff-auf-eine-named-pipe-eines-services-ueber-anonymen-zugriff-auf-vista-windows-2008-server-und-windows-7/" title="Windows Integrity Control: Schreibzugriff auf eine Named Pipe eines Services über anonymen Zugriff auf Vista, Windows 2008 Server und Windows 7 (Di 08. Dez 2009)">Windows Integrity Control: Schreibzugriff auf eine Named Pipe eines Services über anonymen Zugriff auf Vista, Windows 2008 Server und Windows 7</a> (2)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/02/01/mein-baby-ist-nun-kompatibel-mit-windows-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Was denn nun SwitchToThread(), Sleep(0), Sleep(1)?</title>
		<link>http://blog.m-ri.de/index.php/2010/01/23/was-denn-nun-switchtothread-sleep0-sleep1-2/</link>
		<comments>http://blog.m-ri.de/index.php/2010/01/23/was-denn-nun-switchtothread-sleep0-sleep1-2/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 19:39:22 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Windows API]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Threads]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[WinAPI]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=580</guid>
		<description><![CDATA[<p>Was macht man, wenn man keine Wait-Funktionen verwenden will, aber dennoch möchte, dass ein anderer Thread weiterarbeiten kann. Zum Beispiel, weil man einen Spinlock implementieren will.</p>
<p>Nun es gibt insgesamt vier Methoden die durch das Netz geistern.<br />
Ich gehe mal der Häufigkeit nach, die so in manchen Code-Samples finde:</p>
<h3>1. __noop;</h3>
<p>Wenn der Lock kurz ist, scheint es das beste zu sein, einfach die Schleife weiterlaufen zu lassen und zu hoffen, dass der ein Thread auf einem anderen Prozessor, die Ressource freigibt. Das eignet sich wirklich nur, wenn die Zeitdauer der Sperre als extrem kurz anzusehen ist und eine hohe Anzahl von Prozessoren zur Verfügung steht.<br />
Nach allen Test, die ich gemacht habe, sollte man aber von dieser Art des Wartens bei einem Spinlock absehen. Es schiebt die Leistung des Kerns auf 100% und bringt nichts.</p>
<h3>2.  Sleep(0);</h3>
<p>Lies sich gut. Schlafe aber eben nicht lange. Man hat auch schon irgendwo gelesen, dass durch diese Methode der Rest der Zeitscheibe dieses Threads aufgegeben wird und ein anderer Thread an die Reihe kommt.<br />
Leider stimmt das nicht ganz <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
Liest man die <a href="http://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx">Doku</a> genau steht da aber:</p>
<blockquote><p>A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution.</p></blockquote>
<p> <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_surprised.gif' alt=':eek:' class='wp-smiley' />  Threads mit höherer oder niedriger Prio haben also nichts davon.</p>
<p>Besonders eklig wird das ganze gerade wenn man Threads unterschiedlicher Prio hat, die hier gegeneinander laufen. <em>Sleep(0);</em> führt in diesem Fall zu einerunnötigen Prozessorlast und eben nicht dazu, dass die Zeitscheibe abgegeben wird. Der Prozess kommt sofort wieder an die Reihe und spin-t weiter.</p>
<h3>3. SwitchToThread();</h3>
<p>OK. Seit <em>Windows 2000</em> gibt es diese nette neue Funktion. Damit wird ein anderer Thread aktiv. Egal was für eine Prio er hat. Aber auch diese Funktion tut evtl. nicht genau das was man will.<br />
Auch hier stecken die Tücken im Detail der <a href="http://msdn.microsoft.com/en-us/library/ms686352(VS.85).aspx">Doku</a>:</p>
<blockquote><p>The yield of execution is limited to the processor of the calling thread. The operating system will not switch execution to another processor, even if that processor is idle or is running a thread of lower priority.</p></blockquote>
<p>Sollte also der Thread, auf den man wartet auf dem anderen Prozessor laufen, so profitiert der nicht von dem Aufruf von <em>SwitchToThread</em>.</p>
<h3>4. Sleep(1):</h3>
<p>Hiermit erreicht man wirklich was man möchte. Man gibt seine Timeslice auf und erstmal sind die anderen dran.</p>
<h3>Mein persönliches Fazit:</h3>
<p>Nach meinen Recherchen ist <em>Sleep(1); </em>der vernünftigste Weg seine Zeitscheibe abzugeben. Und nach meinem Dafürhalten ist ein <em>__noop; </em>strickt zu vermeiden. Die Performance ist grottenschlecht.<br />
Das ganze Verhalten hängt extrem auch von den Umständen ab: Zahl der Theads, Häufigkeit der Kollision, Anzahl verfügbare Prozessoren, Verteilung der Prioritäten, Allgemeine Belastung des Systems, Zeitdauer der Sperre etc.</p>
<p>Ich habe mit einigen Parametern gespielt und auch ein kleines Sample gebaut, dass alle 4 oben genannten Funktionen durchprobiert und in dem man auch mit anderen Faktoren (Priorität etc.) spielen kann.<br />
Es zeigte sich, dass <em>Sleep(1);</em> am effektivsten war. Aber dicht auf gefolgt von <em>Sleep(0);</em>, was mich doch etwas überraschte.</p>
<p>Allerdings führen schon kleinste Änderungen (Lockdauer, Zahl der Prozessoren, Spielen mit der Priorität) zu anderen Ergebnissen.<br />
Interessant ist vor allem das Spielen mit den Prioritäten. Man soll nicht glauben, das ein Thread selbst mit niedrigster Prio noch relativ häufig Arbeit bekommt.</p>
<p>Viel Spaß beim Spielen mit dem Code <a href="http://blog.m-ri.de/wp-content/uploads/2010/01/SleepTest.zip">SleepTest</a></p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F&amp;title=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F&amp;annotation=Was%20macht%20man%2C%20wenn%20man%20keine%20Wait-Funktionen%20verwenden%20will%2C%20aber%20dennoch%20m%C3%B6chte%2C%20dass%20ein%20anderer%20Thread%20weiterarbeiten%20kann.%20Zum%20Beispiel%2C%20weil%20man%20einen%20Spinlock%20implementieren%20will.%0D%0A%0D%0ANun%20es%20gibt%20insgesamt%20vier%20Methoden%20die%20durch%20das%20Netz%20geis" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F&amp;title=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F&amp;notes=Was%20macht%20man%2C%20wenn%20man%20keine%20Wait-Funktionen%20verwenden%20will%2C%20aber%20dennoch%20m%C3%B6chte%2C%20dass%20ein%20anderer%20Thread%20weiterarbeiten%20kann.%20Zum%20Beispiel%2C%20weil%20man%20einen%20Spinlock%20implementieren%20will.%0D%0A%0D%0ANun%20es%20gibt%20insgesamt%20vier%20Methoden%20die%20durch%20das%20Netz%20geis" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F&amp;bm_description=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F&amp;t=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F&amp;title=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Was%20denn%20nun%20SwitchToThread%28%29%2C%20Sleep%280%29%2C%20Sleep%281%29%3F%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F23%2Fwas-denn-nun-switchtothread-sleep0-sleep1-2%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2010/06/23/wie-man-den-namen-einer-registerwindowmessage-bekommt/" title="Wie man den Namen einer RegisterWindowMessage bekommt (Mi 23. Jun 2010)">Wie man den Namen einer RegisterWindowMessage bekommt</a> (0)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/05/21/cb_addstringcb_insertstringcbs_uppercaseunicodeconst-string-pointer-das-grosse-erstaunen/" title="CB_ADDSTRING/CB_INSERTSTRING+CBS_UPPERCASE+Unicode+const String Pointer == das große Erstaunen (Mi 21. Mai 2008)">CB_ADDSTRING/CB_INSERTSTRING+CBS_UPPERCASE+Unicode+const String Pointer == das große Erstaunen</a> (3)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/12/07/aus-zwei-mach-eins-wie-man-zwei-cursor-kombinieren-kann/" title="Aus zwei mach eins: Wie man zwei Cursor kombinieren kann (So 07. Dez 2008)">Aus zwei mach eins: Wie man zwei Cursor kombinieren kann</a> (5)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/01/23/was-denn-nun-switchtothread-sleep0-sleep1-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CDialog::SetDefID und DM_SETDEFID, des Tastaturfreunds Liebling</title>
		<link>http://blog.m-ri.de/index.php/2010/01/04/cdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling/</link>
		<comments>http://blog.m-ri.de/index.php/2010/01/04/cdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:43:32 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Windows API]]></category>
		<category><![CDATA[Dialoge]]></category>
		<category><![CDATA[Eingabetaste]]></category>
		<category><![CDATA[Tastatur]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[WinAPI]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=519</guid>
		<description><![CDATA[<p>Die Frage um die Eingabe-Taste in Dialogen und wie man diese &#8220;missbraucht&#8221; (sage ich mal provokant) ist eine regelmäßige Frage in allen Foren.</p>
<p>Die Intention ist oft klar. Man möchte mit der Eingabetaste eine bestimmte Aktion verbinden, die evtl. sehr oft ausgeführt werden soll und nicht den Dialog schließen.<br />
Die üblichen Wege sind schon mehrfach diskutiert worden und auch in meinem Blog finden sich dazu ein <a href="http://blog.m-ri.de/index.php/2008/09/21/die-return-taste-in-dialogen-eine-unendliche-geschichte/">Artikel</a> .</p>
<p>Zu kurz kommt bei dieser Diskussion die Funktion <em><a href="http://msdn.microsoft.com/en-us/library/7sd15kw3(VS.80).aspx">CDialog::SetDefID</a></em> bzw. <em><a href="http://msdn.microsoft.com/en-us/library/ms645413(VS.85).aspx">DM_SETDEFID</a> </em>Nachricht.<br />
Was macht diese Funktion/Nachricht?<br />
Sie definieren die Button-ID, die als Default-Aktion in einem Dialog ausgelöst werden soll und das ist nichts anderes als die Aktion die geschehen, soll wenn die Eingabe-Taste gedrückt wird.<br />
Viele Entwickler definieren einfach <em>OnOK</em> um. Aber das eigentlich tolle ist mit <em>SetDefID</em> den Button in Abhängigkeit der Daten umzusetzen und das hat auch einen visuellen Effekt für den Nutzer.</p>
<p>Mal ein Beispiel:<br />
Wir haben einen Dialog mit zwei List Views. Links Elemente die zur Auswahl stehen, rechts die Elemente in der Reihenfolge, die der Benutzer ausgewählt hat.<br />
Der Mausschubser wird einfach die Einträge auf der linken oder rechten Seite doppelklicken und damit auswählen oder entfernen. Entsprechende Buttons für Hinzufügen und Entfernen wird es auch geben. Man kann also auch links oder rechts markieren und dann den Hinzufügen oder Entfernen Schalter nutzen.</p>
<p>Dem Tastaturnutzer können wir helfen indem wir intelligent <em>CDialog::SetDefID / DM_SETDEFID</em> verwenden. Die Vorgehensweise ist einfach.</p>
<ul>
<li>Wir richten uns nur danach in welchem <em>List View </em>wir uns befinden, d.h. befinden wir uns im linken <em>List View </em>steuern wir den <em>Hinzufügen </em>Schalter, und im rechten <em>List View </em>steuern wir den <em>Entfernen </em>Schalter.</li>
<li>Wird also im linken List View ein Item ausgewählt, setzen wir mit <em>CDialog::SetDefID / DM_SETDEFID </em>die ID des <em>Hinzufügen </em>Schalters.</li>
<li>In dem Moment wird der <em>Hinzufügen </em>Schalter zum <em>Default</em>-Button. Der Nutzer kann nun die Eingabe-Taste drücken und die Items werden in die rechte Box verschoben.</li>
<li>Links liegt jetzt nun noch der Fokus, aber es sind keine Items mehr markiert. D.h. wir setzen nun den Default Button zurück auf <em>IDOK</em>.</li>
<li>Jetzt kann der Nutzer erneut ein Item markieren. Der <em>Default</em>-Button wird wieder der <em>Hinzufügen/Entfernen</em> Schalter und die Eingabetaste macht was der Nutzer gerne hätte.</li>
<li>Ist kein Item mehr markiert schließt die Eingabetaste wieder über <em>IDOK </em>den Dialog.</li>
</ul>
<p>Ohne Maus kann man also mit den Pfeiltasten, der Leertaste (evtl. <em>Strg</em>-Taste) und der Eingabetaste diesen Dialog bedienen. Und das sogar intuitiv, denn der entsprechende Default Button wird ja in der UI schön umrandet und hervorgehoben.<br />
Das freut jeden Tastaturfreund. Und man muss gar nichts groß machen mit der Behandlung Eingabetaste.</p>
<p>Damit das Ganze nicht so abstrakt ist, habe ich <a href="http://blog.m-ri.de/wp-content/uploads/2009/12/TestSetDefDlgID.zip">ein kleines Sample</a> gebaut, dass diese Anwendung zeigt. Es hat keine Implementierung für <em>Drag&amp;Drop </em>aber es macht deutlich, wie man dem Tastaturnutzer entgegen kommen kann indem man die Controls geschickt aktiviert.</p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F&amp;title=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling&amp;annotation=Die%20Frage%20um%20die%20Eingabe-Taste%20in%20Dialogen%20und%20wie%20man%20diese%20%22missbraucht%22%20%28sage%20ich%20mal%20provokant%29%20ist%20eine%20regelm%C3%A4%C3%9Fige%20Frage%20in%20allen%20Foren.%0D%0A%0D%0ADie%20Intention%20ist%20oft%20klar.%20Man%20m%C3%B6chte%20mit%20der%20Eingabetaste%20eine%20bestimmte%20Aktion%20verbinden%2C%20die%20evtl" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F&amp;title=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling&amp;notes=Die%20Frage%20um%20die%20Eingabe-Taste%20in%20Dialogen%20und%20wie%20man%20diese%20%22missbraucht%22%20%28sage%20ich%20mal%20provokant%29%20ist%20eine%20regelm%C3%A4%C3%9Fige%20Frage%20in%20allen%20Foren.%0D%0A%0D%0ADie%20Intention%20ist%20oft%20klar.%20Man%20m%C3%B6chte%20mit%20der%20Eingabetaste%20eine%20bestimmte%20Aktion%20verbinden%2C%20die%20evtl" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F&amp;bm_description=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F&amp;t=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F&amp;title=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=CDialog%3A%3ASetDefID%20und%20DM_SETDEFID%2C%20des%20Tastaturfreunds%20Liebling%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2010%2F01%2F04%2Fcdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2008/12/07/aus-zwei-mach-eins-wie-man-zwei-cursor-kombinieren-kann/" title="Aus zwei mach eins: Wie man zwei Cursor kombinieren kann (So 07. Dez 2008)">Aus zwei mach eins: Wie man zwei Cursor kombinieren kann</a> (5)</li>
	<li><a href="http://blog.m-ri.de/index.php/2009/08/09/vs-tippstricks-einfache-ausgabe-mit-trace-auch-in-der-release-version/" title="VS-Tipps&#038;Tricks: Einfache Debug-Ausgabe mit TRACE auch in der Release Version (So 09. Aug 2009)">VS-Tipps&#038;Tricks: Einfache Debug-Ausgabe mit TRACE auch in der Release Version</a> (9)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/11/04/vs-tipps-tricks-heap-bugs-finden-teil-3/" title="VS Tipps &#038; Tricks: Heap Bugs finden (Teil 3) (Di 04. Nov 2008)">VS Tipps &#038; Tricks: Heap Bugs finden (Teil 3)</a> (0)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2010/01/04/cdialogsetdefid-und-dm_setdefid-des-tastaturfreunds-liebling/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ACHTUNG! MSDN Bookmarks werden zum 1. Oktober 2009 eingestellt</title>
		<link>http://blog.m-ri.de/index.php/2009/09/18/achtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt/</link>
		<comments>http://blog.m-ri.de/index.php/2009/09/18/achtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 16:36:26 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Bookmark]]></category>
		<category><![CDATA[MSDN]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=522</guid>
		<description><![CDATA[<p>Ich nutze gerne die MSDN-Bookmarks, allerdings hat dies scheinbar nun ein Ende:</p>
<blockquote><p>MSDN Bookmarks werden zum 1. Oktober 2009 eingestellt. Weitere Details erfahren Sie <a href="http://social.msdn.microsoft.com/de-DE/faq">hier</a>.</p></blockquote>
<p>Durch Zufall habe ich dies am Kopf der Tool Seite gelesen:<br />
<a href="http://social.msdn.microsoft.com/de-DE/Tools/">http://social.msdn.microsoft.com/de-DE/Tools/</a></p>
<p>Das ganze hat erst im September 2008 seinen Anfang genommen. Ich habe darüber in meinem Blog berichtet <a href="http://blog.m-ri.de/index.php/2008/09/18/bookmark-on-msdn-auch-auf-meiner-seite/">http://blog.m-ri.de/index.php/2008/09/18/bookmark-on-msdn-auch-auf-meiner-seite/</a> . Das Ganze hat genau ein Jahr gehalten. <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /><br />
Eigentümlich, dass dieses Feature jetzt schon wieder abgebrochen wird.</p>
<p>Mehr Infos gibt es <em>angeblich </em>hier <a href="http://social.msdn.microsoft.com/de-DE/faq">http://social.msdn.microsoft.com/de-DE/faq</a>, allerdings steht da auch nicht mehr, als das es eben eine Entscheidung gibt dieses Tool einzustellen.</p>
<p>Ich kann also jedem nur raten, der hier wertvolle Bookmarks gespeichert hat, diese zu exportieren. Auch das geht über die Tool-Seite.</p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F&amp;title=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt&amp;annotation=Ich%20nutze%20gerne%20die%20MSDN-Bookmarks%2C%20allerdings%20hat%20dies%20scheinbar%20nun%20ein%20Ende%3A%0D%0AMSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt.%20Weitere%20Details%20erfahren%20Sie%20hier.%0D%0ADurch%20Zufall%20habe%20ich%20dies%20am%20Kopf%20der%20Tool%20Seite%20gelesen%3A%0D%0Ahttp%3A%2F%2Fsocial.msdn" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F&amp;title=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt&amp;notes=Ich%20nutze%20gerne%20die%20MSDN-Bookmarks%2C%20allerdings%20hat%20dies%20scheinbar%20nun%20ein%20Ende%3A%0D%0AMSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt.%20Weitere%20Details%20erfahren%20Sie%20hier.%0D%0ADurch%20Zufall%20habe%20ich%20dies%20am%20Kopf%20der%20Tool%20Seite%20gelesen%3A%0D%0Ahttp%3A%2F%2Fsocial.msdn" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F&amp;bm_description=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F&amp;t=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F&amp;title=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=ACHTUNG%21%20MSDN%20Bookmarks%20werden%20zum%201.%20Oktober%202009%20eingestellt%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F09%2F18%2Fachtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2008/09/18/bookmark-on-msdn-auch-auf-meiner-seite/" title="Bookmark on MSDN auch auf meiner Seite (Do 18. Sep 2008)">Bookmark on MSDN auch auf meiner Seite</a> (6)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/10/03/wie-finde-ich-alte-artikel-im-netz/" title="Wie finde ich alte Artikel im Netz? (Fr 03. Okt 2008)">Wie finde ich alte Artikel im Netz?</a> (4)</li>
	<li><a href="http://blog.m-ri.de/index.php/verschiedenes/nuetzliche-links/" title="Nützliche Links (Do 30. Aug 2007)">Nützliche Links</a> (0)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2009/09/18/achtung-msdn-bookmarks-werden-zum-1-oktober-2009-eingestellt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Refactoring mit Hilfe des Compilers kann eine tückische Sache werden</title>
		<link>http://blog.m-ri.de/index.php/2009/04/25/refactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden/</link>
		<comments>http://blog.m-ri.de/index.php/2009/04/25/refactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 17:35:15 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=448</guid>
		<description><![CDATA[<p>Wieder mal eine nette Falle: Implizite Konvertierungen und ein Refactoring-Versuch.</p>
<p>Folgende Methoden wurden in einer Klasse verwendet:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>100
101
102
103
104
105
106
107
108
109
110
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">...
<span style="color: #0000ff;">bool</span> GetTableCoreData<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> lIdAddrSet,
            CAgvipTableCoreData <span style="color: #000040;">&amp;</span>coreData,
            <span style="color: #0000ff;">bool</span> bSilent<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> GetTableCoreData<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> lIdAddrSet, <span style="color: #0000ff;">long</span> lIdProject,
            CAgvipTableCoreData <span style="color: #000040;">&amp;</span>coreData,
            <span style="color: #0000ff;">bool</span> bSilent<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> GetTableCoreData<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> lIdAddrSet,
            CDataConnection <span style="color: #000040;">&amp;</span>dataConnection,
            CAgvipTableCoreData <span style="color: #000040;">&amp;</span>coreData<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
...</pre></td></tr></table></div>

<p>Die dritte Methode passte mir nicht von der Reihenfolge der Argumente. und ich änderte sie wie folgt um:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>107
108
109
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">bool</span> GetTableCoreData<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> lIdAddrSet,
            CAgvipTableCoreData <span style="color: #000040;">&amp;</span>coreData,
            CDataConnection <span style="color: #000040;">&amp;</span>dataConnection<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>Ich habe mich nun einfach darauf verlassen, dass der Compiler mir alle entsprechenden Code Stellen schon anmeckern wird, an denen hier was nicht passt. Da ich noch einiges anderes an der Klasse geändert hatte, dauerte es noch eine Weile bis ich den nächsten Build angeworfen habe, und ehrlich gesagt, habe ich das Refactoring dieser Funktion vergessen.<br />
Typischer Fall von: Zu viel auf einmal &amp; Der Compiler macht einfach nicht was ich will <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Was passierte? Nichts <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /><br />
Ich bekam <strong>keine </strong>Fehlermeldung zu dieser Änderung, denn <em>CDataConnection </em>hat eine implizite Konvertierung auf <em>bool</em>. Die Folge war, dass die erste Signatur der Funktion auch dieser Folge von Argumenten entsprach.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>101
102
103
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">bool</span> GetTableCoreData<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">long</span> lIdAddrSet,
            CAgvipTableCoreData <span style="color: #000040;">&amp;</span>coreData,
            <span style="color: #0000ff;">bool</span> bSilent<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></td></tr></table></div>

<p>Logisch, dass diese Funktion natürlich eine anderes Verhalten hatte und hier nicht mehr das passierte was ich eigentlich wollte.<br />
Dämlicherweise rutschte diese Änderung auch noch durch die Tests und eine ganze Funktionsgruppe unserer Software wurde lahmgelegt und so ausgeliefert&#8230; Ein Bug, dazu noch von der Kategorie vermeidbar.<br />
Was lernen wir:</p>
<ol>
<li>Es gibt keine fehlerfreie Software!</li>
<li>Die kleinen Änderungen bringen die größten Fehler!</li>
<li>Sich beim Refactoring auf den Compiler zu verlassen kann tückisch werden!</li>
</ol>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F&amp;title=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden&amp;annotation=Wieder%20mal%20eine%20nette%20Falle%3A%20Implizite%20Konvertierungen%20und%20ein%20Refactoring-Versuch.%0D%0A%0D%0AFolgende%20Methoden%20wurden%20in%20einer%20Klasse%20verwendet%3A%0D%0A...%0D%0Abool%20GetTableCoreData%28long%20lIdAddrSet%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20CAgvipTableCoreData%20%26amp%3BcoreData%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20bool%20" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F&amp;title=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden&amp;notes=Wieder%20mal%20eine%20nette%20Falle%3A%20Implizite%20Konvertierungen%20und%20ein%20Refactoring-Versuch.%0D%0A%0D%0AFolgende%20Methoden%20wurden%20in%20einer%20Klasse%20verwendet%3A%0D%0A...%0D%0Abool%20GetTableCoreData%28long%20lIdAddrSet%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20CAgvipTableCoreData%20%26amp%3BcoreData%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20bool%20" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F&amp;bm_description=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F&amp;t=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F&amp;title=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Refactoring%20mit%20Hilfe%20des%20Compilers%20kann%20eine%20t%C3%BCckische%20Sache%20werden%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2009%2F04%2F25%2Frefactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2009/03/05/selbst-reingelegt-beim-test-von-xp-oder-spaeter/" title="Selbst reingelegt beim Test von &#8220;XP oder später&#8221; (Do 05. Mrz 2009)">Selbst reingelegt beim Test von &#8220;XP oder später&#8221;</a> (7)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/08/28/was-tun-gegen-fehler-in-statischen-tabellen-bzw-variablen-deklarationen/" title="Was tun gegen Fehler in statischen Tabellen bzw. Variablen Deklarationen (Do 28. Aug 2008)">Was tun gegen Fehler in statischen Tabellen bzw. Variablen Deklarationen</a> (4)</li>
	<li><a href="http://blog.m-ri.de/index.php/2009/08/09/vs-tippstricks-einfache-ausgabe-mit-trace-auch-in-der-release-version/" title="VS-Tipps&#038;Tricks: Einfache Debug-Ausgabe mit TRACE auch in der Release Version (So 09. Aug 2009)">VS-Tipps&#038;Tricks: Einfache Debug-Ausgabe mit TRACE auch in der Release Version</a> (9)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2009/04/25/refactoring-mit-hilfe-des-compilers-kann-eine-tueckische-sache-werden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mein Blog ist 2 Jahre alt geworden + Gesegnete Weihnachtszeit + Ein gutes neues Jahr</title>
		<link>http://blog.m-ri.de/index.php/2008/12/24/mein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr/</link>
		<comments>http://blog.m-ri.de/index.php/2008/12/24/mein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 10:30:10 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=376</guid>
		<description><![CDATA[<p>Im Mitte Dezember 2006 hatte ich mir endlich die Zeit genommen diesen Blog einzurichten. Ich habe mit einigen Providern experimentiert bin aber dann schnell zu einer eigenen <em>WordPress </em>Installation gekommen, die ich ja auch immer noch erfolgreich verwende.</p>
<p>Schnell sind diese 2 Jahre sind vergangen und insgesamt 267 Beiträge wurden geschrieben. Und immer noch steigen die Zugriffszahlen langsam, aber stetig an, wenn ich der WordPress Blog-Statistik glauben darf. Ich hatte nicht gedacht, so viele Leser zu erreichen. Aber diese Bestätigung ist auch gut, denn was nützt ein Blog ohne Leser <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Allen regelmäßigen Kommentatoren sei hier auch einmal Dank für die immer guten und konstruktiven Beiträge.</p>
<h3 style="text-align: left;">Ich wünsche allen eine gesegnete Weihnachtszeit und ein gutes neues Jahr!</h3>
<p>PS: In meinem Sidebar habe ich jetzt auch eine zusätzliche Combobox eingebaut, die es erlaubt weiter zurück in die Vergangenheit zu gehen als nur die bisherigen 18 Monate.</p>
<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F&amp;title=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr&amp;annotation=Im%20Mitte%20Dezember%202006%20hatte%20ich%20mir%20endlich%20die%20Zeit%20genommen%20diesen%20Blog%20einzurichten.%20Ich%20habe%20mit%20einigen%20Providern%20experimentiert%20bin%20aber%20dann%20schnell%20zu%20einer%20eigenen%20WordPress%20Installation%20gekommen%2C%20die%20ich%20ja%20auch%20immer%20noch%20erfolgreich%20verw" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F&amp;title=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr&amp;notes=Im%20Mitte%20Dezember%202006%20hatte%20ich%20mir%20endlich%20die%20Zeit%20genommen%20diesen%20Blog%20einzurichten.%20Ich%20habe%20mit%20einigen%20Providern%20experimentiert%20bin%20aber%20dann%20schnell%20zu%20einer%20eigenen%20WordPress%20Installation%20gekommen%2C%20die%20ich%20ja%20auch%20immer%20noch%20erfolgreich%20verw" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F&amp;bm_description=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F&amp;t=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F&amp;title=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Mein%20Blog%20ist%202%20Jahre%20alt%20geworden%20%2B%20Gesegnete%20Weihnachtszeit%20%2B%20Ein%20gutes%20neues%20Jahr%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F24%2Fmein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li>Keine themenverwandten Beiträge gefunden!</li>
	</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2008/12/24/mein-blog-ist-2-jahre-alt-geworden-gesegnete-weihnachtszeit-ein-gutes-neues-jahr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Was ist falsch mit diesem Code? (1)</title>
		<link>http://blog.m-ri.de/index.php/2008/12/17/was-ist-falsch-mit-diesem-code-1/</link>
		<comments>http://blog.m-ri.de/index.php/2008/12/17/was-ist-falsch-mit-diesem-code-1/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 18:45:01 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=385</guid>
		<description><![CDATA[<p>Ein Kollege hatte ein größeres Makro in VBScript geschrieben und ein interessantes Problem dabei entdeckt. Ich mache mal ein Ratespiel daraus <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Was ist faul mit diesem VBScript-Code?</strong></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
</pre></td><td class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #000080;">On</span> <span style="color: #000080;">Error</span> <span style="color: #000080;">Resume</span> <span style="color: #000080;">Next</span>
<span style="color: #000080;">If</span> MyFunction() <span style="color: #000080;">Then</span>
    MsgBox <span style="color: #800000;">&quot;MyFunction succedded&quot;</span>
<span style="color: #000080;">Else</span>
    MsgBox <span style="color: #800000;">&quot;MyFunction failed&quot;</span>
<span style="color: #000080;">End</span> <span style="color: #000080;">If</span>
&nbsp;
MsgBox <span style="color: #800000;">&quot;... continue execution ...&quot;</span>
&nbsp;
<span style="color: #000080;">Function</span> MyFunction
    MsgBox <span style="color: #800000;">&quot;Start MyFunction&quot;</span>
    <span style="color: #000080;">On</span> <span style="color: #000080;">Error</span> <span style="color: #000080;">Goto</span> 0
...
    MsgBox <span style="color: #800000;">&quot;End MyFunction&quot;</span>
    Test = <span style="color: #000080;">true</span>
<span style="color: #000080;">End</span> <span style="color: #000080;">Function</span></pre></td></tr></table></div>

<hr /><small>Copyright &copy; 2008 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>
<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F&amp;title=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29&amp;annotation=Ein%20Kollege%20hatte%20ein%20gr%C3%B6%C3%9Feres%20Makro%20in%20VBScript%20geschrieben%20und%20ein%20interessantes%20Problem%20dabei%20entdeckt.%20Ich%20mache%20mal%20ein%20Ratespiel%20daraus%20%3B%29%0D%0A%0D%0AWas%20ist%20faul%20mit%20diesem%20VBScript-Code%3F%0D%0AOn%20Error%20Resume%20Next%0D%0AIf%20MyFunction%28%29%20Then%0D%0A%20%20%20%20MsgBox%20%22MyFu" title="Google Bookmarks"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F&amp;title=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29&amp;notes=Ein%20Kollege%20hatte%20ein%20gr%C3%B6%C3%9Feres%20Makro%20in%20VBScript%20geschrieben%20und%20ein%20interessantes%20Problem%20dabei%20entdeckt.%20Ich%20mache%20mal%20ein%20Ratespiel%20daraus%20%3B%29%0D%0A%0D%0AWas%20ist%20faul%20mit%20diesem%20VBScript-Code%3F%0D%0AOn%20Error%20Resume%20Next%0D%0AIf%20MyFunction%28%29%20Then%0D%0A%20%20%20%20MsgBox%20%22MyFu" title="del.icio.us"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" /></a></li>
	<li><a rel="nofollow"  href="http://www.mister-wong.de/addurl/?bm_url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F&amp;bm_description=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29&amp;plugin=soc" title="MisterWong.DE"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/misterwong.png" title="MisterWong.DE" alt="MisterWong.DE" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F" title="Technorati"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F&amp;t=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29" title="Facebook"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" /></a></li>
	<li><a rel="nofollow"  href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F&amp;title=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29" title="Live"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="http://twitter.com/home?status=Was%20ist%20falsch%20mit%20diesem%20Code%3F%20%281%29%20-%20http%3A%2F%2Fblog.m-ri.de%2Findex.php%2F2008%2F12%2F17%2Fwas-ist-falsch-mit-diesem-code-1%2F" title="Twitter"><img src="http://blog.m-ri.de/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" /></a></li>
</ul>
</div>

	<h4>Themenverwandte Beiträge:</h4>
	<ul class="st-related-posts">
	<li><a href="http://blog.m-ri.de/index.php/2008/12/20/loesung-was-ist-falsch-an-diesem-code-1/" title="Lösung: Was ist falsch an diesem Code? (1) (Sa 20. Dez 2008)">Lösung: Was ist falsch an diesem Code? (1)</a> (0)</li>
	<li><a href="http://blog.m-ri.de/index.php/2010/06/23/wie-man-den-namen-einer-registerwindowmessage-bekommt/" title="Wie man den Namen einer RegisterWindowMessage bekommt (Mi 23. Jun 2010)">Wie man den Namen einer RegisterWindowMessage bekommt</a> (0)</li>
	<li><a href="http://blog.m-ri.de/index.php/2008/08/28/was-tun-gegen-fehler-in-statischen-tabellen-bzw-variablen-deklarationen/" title="Was tun gegen Fehler in statischen Tabellen bzw. Variablen Deklarationen (Do 28. Aug 2008)">Was tun gegen Fehler in statischen Tabellen bzw. Variablen Deklarationen</a> (4)</li>
</ul>

]]></description>
		<wfw:commentRss>http://blog.m-ri.de/index.php/2008/12/17/was-ist-falsch-mit-diesem-code-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
