<?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>Jonathan-Pfeifer.net &#187; .Net Framework (C#)</title>
	<atom:link href="http://www.jonathan-pfeifer.net/tag/c-sharp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonathan-pfeifer.net</link>
	<description>C#, SQL Server, Sharepoint</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:24:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>KISS Prinzip</title>
		<link>http://www.jonathan-pfeifer.net/kiss-prinzip/</link>
		<comments>http://www.jonathan-pfeifer.net/kiss-prinzip/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 13:47:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>
		<category><![CDATA[Clean Code Developer]]></category>
		<category><![CDATA[Prinzipien]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/kiss-prinzip/</guid>
		<description><![CDATA[Ein weiteres Prinzip in der Anwendungsentwicklung. KISS! Damit ist aber nicht die Band gemeint sonder wieder eine Abk&#252;rzung. KISS steht f&#252;r KEEP IT SIMPLE, STUPID! Gemeint ist damit, den einfachsten Weg bei der Entwicklung einer L&#246;sung zu gehen. Auch wenn &#8230; <a href="http://www.jonathan-pfeifer.net/kiss-prinzip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ein weiteres Prinzip in der Anwendungsentwicklung. </p>
<p><strong>KISS</strong>!</p>
<p>Damit ist aber nicht die Band gemeint sonder wieder eine Abk&uuml;rzung. </p>
<p><strong>KISS</strong> steht f&uuml;r<strong> KEEP IT SIMPLE, STUPID!</strong></p>
<p>Gemeint ist damit, den einfachsten Weg bei der Entwicklung einer L&ouml;sung zu gehen. Auch wenn es evtl. interessanter ist einen komplexeren Algorithmus zu schreiben kostet das aber Zeit und damit Geld. </p>
<p>Mit so wenig Aufwand die gestellte Aufgabe so gut wie m&ouml;glich&#160; zu l&ouml;sen – das ist das Ziel! </p>
<p>Na dann probieren wir’s mal <img src='http://www.jonathan-pfeifer.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/kiss-prinzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRY Prinzip</title>
		<link>http://www.jonathan-pfeifer.net/dry-prinzip/</link>
		<comments>http://www.jonathan-pfeifer.net/dry-prinzip/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 15:54:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>
		<category><![CDATA[Clean Code Developer]]></category>
		<category><![CDATA[Prinzipien]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/dry-prinzip/</guid>
		<description><![CDATA[In der Anwendungsentwicklung gibt es verschiedene Richtlinien, die einem dabei helfen &#252;bersichtlicheren Code zu schreiben. Eines dieser Prinzipien nennt sich DRY. DRY steht f&#252;r Don’t Repeat Yourself! Ein guter Hinweis. Denn gibt es funktionalen Code, den man per Copy ‘n’ &#8230; <a href="http://www.jonathan-pfeifer.net/dry-prinzip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In der Anwendungsentwicklung gibt es verschiedene Richtlinien, die einem dabei helfen &uuml;bersichtlicheren Code zu schreiben. </p>
<p>Eines dieser Prinzipien nennt sich <strong>DRY</strong>.</p>
<p>DRY steht f&uuml;r <strong>Don’t Repeat Yourself</strong>! </p>
<p>Ein guter Hinweis. Denn gibt es funktionalen Code, den man per Copy ‘n’ Paste in einer anderen Methode verwenden m&ouml;chte ist man gut beraten stattdessen diesen Code in eine separate Methode auszulagern. </p>
<p>Muss n&auml;hmlich an dieser Logik etwas ge&auml;ndert werden, erfolgt die &Auml;nderung nur an einer Stelle – in der ausgelagerten Methode.</p>
<p>Das hilft Code zu schreiben, der besser wartbar ist.</p>
<p>Viele IDEs haben daf&uuml;r auch eingebaute Funktionen, die es dem Programmierer erlauben vorhanden Code schnell zu &uuml;berarbeiten. <a href="http://www.jonathan-pfeifer.net/wp-content/uploads/2009/11/image.png" rel="lightbox"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.jonathan-pfeifer.net/wp-content/uploads/2009/11/image_thumb.png" width="244" height="188" /></a> </p>
<p>Hier im Beispiel die “Extract Method…” Funktion in Visual Studio 2008. </p>
<p>Wenn man sich an dieses einfache Prinzip h&auml;lt wird der Code um vieles leichter wartbar. </p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/dry-prinzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatisierte Installation .Net Framework 3.5 SP1 (MOSS 2007 – Teil 2)</title>
		<link>http://www.jonathan-pfeifer.net/automatisierte-installation-net-framework-3-5-sp1-moss-2007-teil-2/</link>
		<comments>http://www.jonathan-pfeifer.net/automatisierte-installation-net-framework-3-5-sp1-moss-2007-teil-2/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 12:23:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/unattended-installation-net-framework-3-5-sp1-moss-2007-teil-2/</guid>
		<description><![CDATA[Dieser Post ist Bestandteil einer mehrteiligen Serie zum Thema Installation des Microsoft Office SharePoint Servers 2007. Die Installation soll weitestgehend automatisiert &#252;ber Skripte laufen. Als Testkonfiguration verwenden wir einen Server 2008 x86, SQL Server 2005 Express mit SP3 und die &#8230; <a href="http://www.jonathan-pfeifer.net/automatisierte-installation-net-framework-3-5-sp1-moss-2007-teil-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dieser Post ist Bestandteil einer mehrteiligen Serie zum Thema Installation des Microsoft Office SharePoint Servers 2007. Die Installation soll weitestgehend automatisiert &uuml;ber Skripte laufen.</p>
<p>Als Testkonfiguration verwenden wir einen Server 2008 x86, SQL Server 2005 Express mit SP3 und die Testversion von Microsoft Office SharePoint Server 2007.</p>
<h2>Silentinstallation des .Net Frameworks 3.5 SP1</h2>
<p>F&uuml;r die Installation des Microsoft Office SharePoint Servers 2007 ben&ouml;tigt man zumindest das Framework 3.0. Da die Version 3.5 SP1 ne Menge Sicherheitsl&uuml;cken stopft empfielt es sich gleich dieses Framework zu installieren.</p>
<p><span id="more-107"></span></p>
<p>Jetzt aber zur Vorgehensweise:</p>
<blockquote><p><strong>start /wait dotNet35SP1.exe /qb</strong></p></blockquote>
<p>Das wars!</p>
<p>Die Datei dotNet35SP1.exe ist die Setupdatei des Frameworks. Der Parameter /qb zeigt uns die Statusmeldungen w&auml;hrend der Installation an erfordert aber keine Eingaben durch den Benutzer. So hat man eine R&uuml;ckmeldung &uuml;ber den Installationsprozess ohne selbst aktiv werden zu m&uuml;ssen. Toll, oder? <img src='http://www.jonathan-pfeifer.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Der n&auml;chste Teil soll uns zeigen wie man den SQL Server 2005 Express &auml;hnlich dem .Net Framework ohne Benutzereingaben installieren kann.</p>
<p>So long…</p>
<p>[Ressourcen: <em>dotNet35SP1.exe /?</em>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/automatisierte-installation-net-framework-3-5-sp1-moss-2007-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation von Team Foundation Server 2010 Beta1</title>
		<link>http://www.jonathan-pfeifer.net/installation-von-team-foundation-server-2010-beta1/</link>
		<comments>http://www.jonathan-pfeifer.net/installation-von-team-foundation-server-2010-beta1/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 15:39:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>
		<category><![CDATA[Team Foundation Server 2010]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/installation-von-team-foundation-server-2010-beta1-teil-1/</guid>
		<description><![CDATA[Als angehender Entwickler muss man sich nat&#252;rlich auch mal &#252;ber Revisionierung von Code und allgemein um dessen Verwaltung Gedanken machen. Da nun der Team Foundation Server 2010 Beta1 vor kurzem erschienen ist, habe ich mich dazu entschlossen diese Version testweise &#8230; <a href="http://www.jonathan-pfeifer.net/installation-von-team-foundation-server-2010-beta1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Als angehender Entwickler muss man sich nat&uuml;rlich auch mal &uuml;ber Revisionierung von Code und allgemein um dessen Verwaltung Gedanken machen.</p>
<p>Da nun der Team Foundation Server 2010 Beta1 vor kurzem erschienen ist, habe ich mich dazu entschlossen diese Version testweise mal zu installieren.</p>
<p><span id="more-78"></span></p>
<h2>Planung und Installation des Team Foundation Servers 2010 Beta1</h2>
<p>Bevor ich mit der Installation des Team Foundation Servers begonnen habe, musste ich mir erstmal ein paar Gedanken machen, wie die Installation ablaufen soll und was ich daf&uuml;r ben&ouml;tige. Also den aktuellen TFSInstallationGuide von Microsoft heruntergeladen und gelesen.</p>
<p>Ich habe mich dann f&uuml;r folgende Komponenten entschieden:</p>
<blockquote><p><span style="background-color: #ffffff;">Microsoft Server 2008 R2 x64 ent (de)<br />
</span></p>
<p><span style="background-color: #ffffff;">Microsoft Sql Server 2008 x64 ent (en)</span></p>
<p><span style="background-color: #ffffff;">Microsoft Team Foundation Server 2010 x64 Beta1 (en)</span><span style="background-color: #ffffff;"> </span></p></blockquote>
<p>Dann brauchen wir noch verschiedene Benutzer:</p>
<blockquote><p><strong>Administrator</strong> – Benutzer der Gruppe Administratoren &uuml;ber den die komplette Installation sp&auml;ter laufen wird.</p>
<p><strong>SQLSERVICE</strong> – Benutzer der als Konto f&uuml;r die SQL-Dienste verwendet wird.</p>
<p><strong>TFSSERVICE</strong> – Benutzer der f&uuml;r alle Dienste des Team Foundation Servers Verwendung findet.</p>
<p><strong>TFSREPORTS</strong> – Benutzer f&uuml;r die Reportfunktionalit&auml;ten des Team Foundation Servers.</p>
<p><strong>WSSSERVICE</strong> – Benutzer f&uuml;r die Microsoft Windows SharePoint Services 3.0</p></blockquote>
<p>Und die Windows Sharepoint Services 3.0 SP2 f&uuml;r x64 Plattformen (warum sehen sie sp&auml;ter).</p>
<blockquote><p><a title="WSS 3.0 SP2" href="http://www.microsoft.com/downloads/details.aspx?familyid=9FB41E51-CB03-4B47-B89A-396786492CBA&amp;displaylang=en" target="_blank">Downloadlink zu Windows Sharepoint Services 3.0 SP2 x64</a></p></blockquote>
<h2>Ablauf der Installation des Team Foundation Servers 2010 Beta1</h2>
<p>Der Ablauf der Installation verl&auml;uft dann im Groben nach diesem Muster:</p>
<ol>
<li>Microsoft Server 2008 R2 x64 installieren</li>
<li>die Benutzer erstellen</li>
<li>Webserver-Rolle des Servers installieren mit folgenden Zus&auml;tzen:<br />
- HTTP Redirect<br />
- ASP.NET<br />
- Windows Authentification<br />
- IIS 6 Management Compatibility</li>
<li>falls nicht schon installiert: .Net Framework 3.1 SP1 installieren und Windows Installer updaten</li>
<li>SQL Server 2008 installieren:<br />
- Database Engine Services (also die Datenbank an sich)<br />
- Fulltext Search<br />
- Reporting Services<br />
- Analysis Services</li>
<li>SQL Server 2008 SP1 installieren</li>
<li>Freigaben in der Firewall eintragen<br />
<strong>SQL Server:</strong><br />
C:\Program Files\Microsoft SQL Server\MSSQL10.TFS2010\MSSQL\Binn\sqlservr.exe<br />
<strong>Analysis Services:<br />
</strong>C:\Program Files\Microsoft SQL Server\MSAS10.TFS2010\OLAP\bin\msmdsrv.exe<br />
<strong>Reporting Services:<br />
</strong>C:\Program Files\Microsoft SQL Server\MSRS10.TFS2010\Reporting Services\ReportServer\bin\ReportingServicesService.exe<br />
<strong>SQL Browser Services:<br />
</strong>C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe</li>
<li>Team Foundation Server 2010 installieren, aber noch nicht konfigurieren!!!</li>
<li>Windows SharePoint 3.0 SP2 herunterladen (SharePoint.exe)</li>
<li><a title="Artikel des Microsoft Support Teams f&uuml;r Team Foundation Server" href="http://blogs.msdn.com/dstfs/archive/2009/05/15/installing-tfs-2010-on-windows-server-2008-r2-rc.aspx" target="_blank">SharePoint.exe in das Verzeichnis</a> C:\Program Files\Microsoft Team Foundation Server 10.0\Tools kopieren und vorhandene SharePoint.exe kopieren und ersetzen.</li>
<li>Team Explorer installieren</li>
<li>Fertig.</li>
</ol>
<p>Also, das vorab einmal zum Thema Team Foundation Service 2010 Beta1.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/installation-von-team-foundation-server-2010-beta1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Pattern</title>
		<link>http://www.jonathan-pfeifer.net/singleton-pattern/</link>
		<comments>http://www.jonathan-pfeifer.net/singleton-pattern/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 21:30:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>
		<category><![CDATA[Clean Code Developer]]></category>
		<category><![CDATA[Prinzipien]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/singleton-pattern/</guid>
		<description><![CDATA[Das Singleton Pattern erlaubt es einem Programmierer von einer Klasse genau eine Instanz zu erstellen. Auf die Methoden und Eigenschaften dieser Klasse kann man von &#252;berall her zugreifen. namespace MyApplication {     class Singleton     {         // instance of &#8230; <a href="http://www.jonathan-pfeifer.net/singleton-pattern/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Das Singleton Pattern erlaubt es einem Programmierer von einer Klasse genau eine Instanz zu erstellen. Auf die Methoden und Eigenschaften dieser Klasse kann man von &uuml;berall her zugreifen.</p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">namespace</span> MyApplication</pre>
<pre style="margin: 0px">{</pre>
<pre style="margin: 0px">    <span style="color: blue">class</span> <span style="color: #2b91af">Singleton</span></pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">        <span style="color: green">// instance of Singleton Class</span></pre>
<pre style="margin: 0px">        <span style="color: blue">private</span> <span style="color: blue">static</span> Singleton instance;</pre>
<pre style="margin: 0px">        <span style="color: green">// constructor set to private!</span></pre>
<pre style="margin: 0px">        <span style="color: blue">private</span> Singleton()</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">        <span style="color: green">// methode to access this class and all methodes</span></pre>
<pre style="margin: 0px">        <span style="color: green">// within Singleton Class</span></pre>
<pre style="margin: 0px">        <span style="color: blue">public</span> <span style="color: blue">static</span> Singleton getInstance()</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">            <span style="color: blue">if</span>(instance == <span style="color: blue">null</span>)</pre>
<pre style="margin: 0px">                instance = <span style="color: blue">new</span> Singleton();</pre>
<pre style="margin: 0px">            <span style="color: blue">return</span> instance;</pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">        <span style="color: green">// a methode that you like to get access to</span></pre>
<pre style="margin: 0px">        <span style="color: blue">public</span> <span style="color: blue">void</span> DoSomethingVerySpecific()</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">            <span style="color: green">// Does something very specific</span></pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">    <span style="color: blue">class</span> <span style="color: #2b91af">SomethingElse</span></pre>
<pre style="margin: 0px">    {</pre>
<pre style="margin: 0px">        <span style="color: blue">public</span> <span style="color: blue">void</span> DoSomething()</pre>
<pre style="margin: 0px">        {</pre>
<pre style="margin: 0px">            <span style="color: green">// calling the methode from anywhere</span></pre>
<pre style="margin: 0px">            Singleton.getInstance().DoSomethingVerySpecific();</pre>
<pre style="margin: 0px">        }</pre>
<pre style="margin: 0px">    }</pre>
<pre style="margin: 0px">}</pre>
</div>
<p>Was ben&ouml;tigt man nun um eine Klasse als Singleton zu implementieren?</p>
<p>Der Konstruktor wird private gesetzt, sodass man von au&szlig;en keine Instanz dieser Klasse erstellen kann. Als n&auml;chstes ben&ouml;tigt man eine Variable vom Typ der Singletonklasse. Diese wird ebenfalls private und auf static gesetzt.</p>
<p>Wie kommen wir nun an die Methoden und Eigenschaften dieser Klasse?</p>
<p>Wir schreiben eine public Methode <strong>getInstance().</strong> Diese Methode pr&uuml;ft, ob die Variable <strong>instance</strong> schon einmal initialisiert wurde. Wenn nicht, wird die Variable initialisiert (innerhalb der Klasse k&ouml;nnen wir ja auf den Konstruktor zugreifen) und zur&uuml;ckgegeben.</p>
<p>Jetzt k&ouml;nnen wir in anderen Klassen &uuml;ber <strong>Singleton.getInstance().DoSomethingVerySpecific()</strong> auf die Singletonklasse zugreifen.</p>
<p>Soviel erstmal dazu.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/singleton-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zahlen aus einem Textabschnitt extrahieren mit C#</title>
		<link>http://www.jonathan-pfeifer.net/zahlen-aus-einem-textabschnitt-extrahieren-mit-c/</link>
		<comments>http://www.jonathan-pfeifer.net/zahlen-aus-einem-textabschnitt-extrahieren-mit-c/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 11:36:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/zahlen-aus-einem-textabschnitt-extrahieren-mit-c/</guid>
		<description><![CDATA[Manchmal hat man eine Textpassage die eine Zahl beinhaltet. Und genau diese Zahl h&#228;tte man nun gerne ausgelesen. // extract int from string &#160;&#160;&#160;&#160;&#160;&#160;&#160; private int extractIntFromString(string s) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; int i = 0; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string str; &#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8230; <a href="http://www.jonathan-pfeifer.net/zahlen-aus-einem-textabschnitt-extrahieren-mit-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Manchmal hat man eine Textpassage die eine Zahl beinhaltet. Und genau diese Zahl h&auml;tte man nun gerne ausgelesen. </p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: green">// extract int from string</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">private</span> <span style="color: blue">int</span> extractIntFromString(<span style="color: blue">string</span> s)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">int</span> i = 0;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">string</span> str;</pre>
<pre style="margin: 0px">&#160;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">try</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// get number from string</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; str = <span style="color: blue">string</span>.Join(<span style="color: blue">null</span>, System.Text.</pre>
<blockquote>
<pre style="margin: 0px">RegularExpressions.<span style="color: #2b91af">Regex</span>.Split(s, <span style="color: #a31515">&quot;[^\\d]&quot;</span>));</pre>
</blockquote>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// convert type to int</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; i = <span style="color: blue">int</span>.Parse(str);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// return int i</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> i;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">catch</span>(<span style="color: #2b91af">Exception</span> e)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// show errormessage</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">MessageBox</span>.Show(e.ToString());</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// return i, in that case 0</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> i;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
</div>
<p>&#160;</p>
<p>Diese Methode gibt die extrahierte Zahl als Integer zur&uuml;ck.</p>
<p>Man verwendet hierbei die Join-Methode von string und identifiziert alle Zahlen mit Hilfe einer Regular Expression. </p>
<p>Auf jeden Fall ein Thema, das es lohnt sich genauer anzuschauen.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/zahlen-aus-einem-textabschnitt-extrahieren-mit-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Text/HTML Datei speichern mit C#</title>
		<link>http://www.jonathan-pfeifer.net/texthtml-datei-speichern-mit-c/</link>
		<comments>http://www.jonathan-pfeifer.net/texthtml-datei-speichern-mit-c/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 05:27:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/texthtml-datei-speichern-mit-c/</guid>
		<description><![CDATA[Um einen Text- bzw. HTML-Datei (ist ja auch nur Text) in C# abspeichern zu k&#246;nnen geht man folgenderma&#223;en vor: public void WriteFile(string s) &#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Stream als File speichern &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stream myStream; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string sString = s; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8230; <a href="http://www.jonathan-pfeifer.net/texthtml-datei-speichern-mit-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um einen Text- bzw. HTML-Datei (ist ja auch nur Text) in C# abspeichern zu k&ouml;nnen geht man folgenderma&szlig;en vor:</p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">public</span> <span style="color: blue">void</span> WriteFile(<span style="color: blue">string</span> s)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// Stream als File speichern</span></pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stream myStream;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">string</span> sString = s;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SaveFileDialog saveFileDialog1 = <span style="color: blue">new</span> SaveFileDialog();</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; saveFileDialog1.Filter = <span style="color: #a31515">&quot;HTML Report(*.html)|*.html&quot;</span>;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; saveFileDialog1.FilterIndex = 2;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; saveFileDialog1.RestoreDirectory = <span style="color: blue">true</span>;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (saveFileDialog1.ShowDialog() == DialogResult.OK)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> ((myStream = saveFileDialog1.OpenFile()) != <span style="color: blue">null</span>)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; StreamWriter wString = <span style="color: blue">new</span> StreamWriter(myStream);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; wString.Write(sString);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; wString.Close();</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
</div>
</p>
<p>Die Methode nimmt einen String auf und legt diesen als Textdatei ab. Zum Abspeichern wird der aus der Windowswelt bekannte Dialog verwendet um im Dateisystem navigieren zu k&ouml;nnen.</p>
<p>Der Filter im Code gibt an, welchen Dateityp die Methode verwenden soll um den Text abzuspeichern. </p>
<p>Der String muss nat&uuml;rlich schon HTML Code enthalten. Eine automatische Umwandlung und Erg&auml;nzung von HTML Tags erfolgt nicht.</p>
<p>Find ich ganz n&uuml;tzlich um z. B. Fehlerberichte oder &auml;hnliches aus dem Programm dem Benutzer als HTML Dokument zur Verf&uuml;gung zu stellen.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/texthtml-datei-speichern-mit-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eintr&#228;ge ins Windows Eventlog schreiben mit C#</title>
		<link>http://www.jonathan-pfeifer.net/eintrge-ins-windows-eventlog-schreiben-mit-c/</link>
		<comments>http://www.jonathan-pfeifer.net/eintrge-ins-windows-eventlog-schreiben-mit-c/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 16:30:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/eintrge-ins-windows-eventlog-schreiben-mit-c/</guid>
		<description><![CDATA[Wie man eigene Eintr&#228;ge ins Windows Eventlog schreiben kann soll folgende Methode zeigen: public void WriteToLog(string source, string log, string message) { &#160;&#160;&#160; if(!EventLog.SourceExists(source)) &#160;&#160;&#160;&#160;&#160;&#160;&#160; EventLog.CreateEventSource(source, log); &#160;&#160;&#160; EventLog.WriteEntry(source, message, EventLogEntryTyp.Warning); } &#160; source ist die Quelle des Events. Z. &#8230; <a href="http://www.jonathan-pfeifer.net/eintrge-ins-windows-eventlog-schreiben-mit-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wie man eigene Eintr&auml;ge ins Windows Eventlog schreiben kann soll folgende Methode zeigen:</p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">public</span> <span style="color: blue">void</span> WriteToLog(<span style="color: blue">string</span> source, <span style="color: blue">string</span> log, <span style="color: blue">string</span> message)</pre>
<pre style="margin: 0px">{</pre>
<pre style="margin: 0px">&#160;&#160;&#160; <span style="color: blue">if</span>(!EventLog.SourceExists(source))</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; EventLog.CreateEventSource(source, log);</pre>
<pre style="margin: 0px">&#160;&#160;&#160; EventLog.WriteEntry(source, message, EventLogEntryTyp.Warning);</pre>
<pre style="margin: 0px">}</pre>
</div>
<p>&#160;</p>
<p>source ist die Quelle des Events. Z. B. der Name deiner Applikation.</p>
<p>log ist die Kategorie unter der die Events eingetragen werden. Man kann hier die vorhandenen verwenden oder auch eigene erstellen.</p>
<p>message ist die eigentliche Nachricht, die im Eventlog festgehalten wird.</p>
<p>Um die Abh&auml;ngigkeiten aufzul&ouml;sen fehlt nun noch ein: </p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">using</span> System.Diagnostics;</pre>
</div>
<p>Eine interessante Quelle zu diesem Thema ist die MSDN Seite von Microsoft:</p>
<p><a href="http://msdn.microsoft.com/de-de/library/system.diagnostics.eventlog(VS.80).aspx" target="_blank">Eventlogs</a></p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/eintrge-ins-windows-eventlog-schreiben-mit-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dateien in einem Ordner l&#246;schen mit C#</title>
		<link>http://www.jonathan-pfeifer.net/datein-in-einem-ordner-lschen-mit-c/</link>
		<comments>http://www.jonathan-pfeifer.net/datein-in-einem-ordner-lschen-mit-c/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 07:50:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/datein-in-einem-ordner-lschen-mit-c/</guid>
		<description><![CDATA[Folgende Methode verdeutlicht, wie man Dateien in einem Ordner l&#246;schen kann private void DeleteFiles(string path) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] fileList = Directory.GetFiles(path); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (string file in fileList) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FileInfo fi = new FileInfo(file); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi.Delete(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#8230; <a href="http://www.jonathan-pfeifer.net/datein-in-einem-ordner-lschen-mit-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Folgende Methode verdeutlicht, wie man Dateien in einem Ordner l&ouml;schen kann</p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">private</span> <span style="color: blue">void</span> DeleteFiles(<span style="color: blue">string</span> path)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">string</span>[] fileList = Directory.GetFiles(path);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (<span style="color: blue">string</span> file <span style="color: blue">in</span> fileList)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FileInfo fi = <span style="color: blue">new</span> FileInfo(file);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi.Delete();</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
</div>
<p>Zun&auml;chst listet man alle Dateien in einem Ordner auf und l&ouml;scht danach jede einzelne mit Hilfe einer Schleife.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/datein-in-einem-ordner-lschen-mit-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ordner auf vorhandene Dateien &#252;berpr&#252;fen mit C#</title>
		<link>http://www.jonathan-pfeifer.net/ordner-auf-vorhandene-dateien-berprfen-mit-c/</link>
		<comments>http://www.jonathan-pfeifer.net/ordner-auf-vorhandene-dateien-berprfen-mit-c/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 17:55:00 +0000</pubDate>
		<dc:creator>Jonathan Pfeifer</dc:creator>
				<category><![CDATA[work-related]]></category>
		<category><![CDATA[.Net Framework (C#)]]></category>

		<guid isPermaLink="false">http://www.jonathan-pfeifer.net/ordner-auf-vorhandene-dateien-berprfen-mit-c/</guid>
		<description><![CDATA[Auf diesem Weg kann man einen Ordner &#252;berpr&#252;fen und schauen, ob dieser Dateien enth&#228;lt oder nicht. private bool checkIfFilesExists(string path) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] fileList = Directory.GetFiles(path); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (fileList.Length &#62; 0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return true; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8230; <a href="http://www.jonathan-pfeifer.net/ordner-auf-vorhandene-dateien-berprfen-mit-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Auf diesem Weg kann man einen Ordner &uuml;berpr&uuml;fen und schauen, ob dieser Dateien enth&auml;lt oder nicht. </p>
<div style="font-family: courier new; background: white; color: black; font-size: 10pt">
<pre style="margin: 0px"><span style="color: blue">private</span> <span style="color: blue">bool</span> checkIfFilesExists(<span style="color: blue">string</span> path)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">string</span>[] fileList = Directory.GetFiles(path);</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (fileList.Length &gt; 0)</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> <span style="color: blue">true</span>;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">else</span> </pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">return</span> <span style="color: blue">false</span>;</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
<pre style="margin: 0px">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</pre>
</div>
<p>&Uuml;ber <strong>Directory.GetFiles(pathToDirectory)</strong> erh&auml;lt man eine komplette Auflistung aller Dateien in dem Ordner.</p>
<p>Und so kann man schauen wieviele Dateien in dem Ordner sind. </p>
<p>Kann man z. B. einsetzen f&uuml;r ein Pollingsystem.</p>
<p>So long…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonathan-pfeifer.net/ordner-auf-vorhandene-dateien-berprfen-mit-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
