<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5745762969201250264</id><updated>2024-09-02T08:30:50.872+02:00</updated><category term=".NET"/><category term="C#"/><category term="Link"/><category term="BizTalk2006"/><category term="Errors"/><category term="VS2005"/><category term="HowTo"/><category term="VS2008"/><category term="Problem"/><category term="CRM 4.0"/><category term="64Bit"/><category term="BizTalk2009"/><category term="Bug"/><category term="Cryptography"/><category term="Gedanken"/><category term="Grundlagen"/><category term="SAP"/><category term="SQL Server"/><category term="StyleCop"/><category term="XSD"/><category term="BizTalk"/><category term="BizTalk Pipeline"/><category term="CRM 3.0"/><category term="Encoding"/><category term="SSH"/><category term="Snippet"/><category term="Stored Procedure"/><category term="webcast"/><category term="2009"/><category term="Adapter"/><category term="Business Rule Composer"/><category term="Delegate"/><category term="Deployen"/><category term="Distributed Transaction Coordinator"/><category term="FxCop"/><category term="Java"/><category term="JavaScript"/><category term="MSDN webcast"/><category term="MSDTC"/><category term="MSMQ"/><category term="OPC"/><category term="Registry"/><category term="SAP Adapter 2.0"/><category term="SQL"/><category term="TextBox"/><category term="UoM"/><category term="Update"/><category term="VB"/><category term="Version Control"/><category term="Vista"/><category term="WPF"/><category term="Webservices"/><category term="XAML"/><category term="XML"/><category term="bugtracking"/><category term="bugzilla"/><category term="decide"/><category term="mapping"/><category term="transform"/><category term="virtual machine"/><category term="xpath"/><title type='text'>Just a Code Team Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>118</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-4607331442077649173</id><published>2011-03-31T14:23:00.002+02:00</published><updated>2011-03-31T14:26:09.234+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2009"/><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk"/><category scheme="http://www.blogger.com/atom/ns#" term="Distributed Transaction Coordinator"/><category scheme="http://www.blogger.com/atom/ns#" term="MSDTC"/><title type='text'>BizTalk Server 2009: The Microsoft Distributed Transaction Coordinator (MSDTC) may not be configured correctly.</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG71QTFGzUEJQjZfkjNLZfRPyo1MF3wiEvj7VZN2px2y1RyQ8e1iEtGKyaUM4XQjDWDUhOE7IN3IW4aBIhYvftop52hC1WinoUqgBuZVh2wZka0_d6PUyDWsom-gkBLaHA4aucAoFsVVKm/s1600/BizTalkFierWall.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;114&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG71QTFGzUEJQjZfkjNLZfRPyo1MF3wiEvj7VZN2px2y1RyQ8e1iEtGKyaUM4XQjDWDUhOE7IN3IW4aBIhYvftop52hC1WinoUqgBuZVh2wZka0_d6PUyDWsom-gkBLaHA4aucAoFsVVKm/s400/BizTalkFierWall.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Sollte diese Fehlermeldung kommen, kann das auch an der (Microsoft) FireWall liegen. Einfach diese einmal deaktivieren und dann noch mal probieren.</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/4607331442077649173/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/4607331442077649173' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4607331442077649173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4607331442077649173'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2011/03/biztalk-server-2009-microsoft.html' title='BizTalk Server 2009: The Microsoft Distributed Transaction Coordinator (MSDTC) may not be configured correctly.'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG71QTFGzUEJQjZfkjNLZfRPyo1MF3wiEvj7VZN2px2y1RyQ8e1iEtGKyaUM4XQjDWDUhOE7IN3IW4aBIhYvftop52hC1WinoUqgBuZVh2wZka0_d6PUyDWsom-gkBLaHA4aucAoFsVVKm/s72-c/BizTalkFierWall.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-5519218519354641491</id><published>2011-03-30T15:36:00.007+02:00</published><updated>2011-03-30T15:56:10.918+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk"/><category scheme="http://www.blogger.com/atom/ns#" term="Business Rule Composer"/><category scheme="http://www.blogger.com/atom/ns#" term="Deployen"/><title type='text'>&quot;[SERVER]:[BizTalkRuleEngineDB]&quot; associated with the deployment driver does not match the database &quot;:&quot; specified during product configuration.</title><content type='html'>&lt;strong&gt;BizTalk MS Business Rule Composer Error beim Deployen einer Policie: The database &quot;[SERVER]:BizTalkRuleEngineDB&quot; associated with the deployment driver does not match the database &quot;:&quot; specified during product configuration.&lt;/strong&gt;
&lt;p&gt;
Der Fehler hat vermutlich damit zu tun das beim Installieren nicht alle Angaben getätigt wurden weil man eventuell nicht alles intalliert hat. Sucht in Eurer &quot;BizTalkMgmtDb&quot; Datenbank nach den folgenden Tabellen: adm_Group, adm_OtherDatabases und adm_OtherBackupDatabases
&lt;/p&gt;
&lt;p&gt;
Änderungen in der adm_Group Tabelle: Die Felder &quot;RuleEngineDbServerName&quot; und &quot;RuleEngineDbName&quot; suchen und füllen (Servername und Datenbankname der RuleEngine Datenbank).
&lt;/p&gt;
&lt;p&gt;
Änderungen in den adm_OtherDatabases und adm_OtherBackupDatabases Tabellen: Fügt eine neue Zeile ein in der ihr im Feld &quot;DefaultDatabaseName&quot; den Datenbanknamen der RuleEngine eingebt und die anderen Felder mit den installationsspezifischen Informationen füllt.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/5519218519354641491/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/5519218519354641491' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5519218519354641491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5519218519354641491'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2011/03/serverbiztalkruleenginedb-associated.html' title='&quot;[SERVER]:[BizTalkRuleEngineDB]&quot; associated with the deployment driver does not match the database &quot;:&quot; specified during product configuration.'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-4726928332948602261</id><published>2010-06-16T09:57:00.005+02:00</published><updated>2010-06-16T11:49:42.688+02:00</updated><title type='text'>VisualStudio2010 Express ISO</title><content type='html'>Hier die Links zu den ISO Dateien für VS2010 auf der Microsoftseite. Die Einzelpakete lassen sich zwar über WebInstaller installieren, aber wenn man das auf mehreren Rechnern testen möchte ist das meines Erachtens etwas zu langwierig.
&lt;p&gt;
&lt;a href=&quot;http://download.microsoft.com/download/1/E/5/1E5F1C0A-0D5B-426A-A603-1798B951DDAE/VS2010Express1.iso&quot;&gt;Englische Version&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://go.microsoft.com/?linkid=9709973&quot;&gt;Deutsche Version&lt;/a&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/4726928332948602261/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/4726928332948602261' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4726928332948602261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4726928332948602261'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/06/visualstudio2010-express-iso.html' title='VisualStudio2010 Express ISO'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-6408373673431620261</id><published>2010-06-07T18:08:00.006+02:00</published><updated>2010-06-07T18:21:54.336+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2009"/><category scheme="http://www.blogger.com/atom/ns#" term="SAP Adapter 2.0"/><title type='text'>SAP .Net connector is not installed</title><content type='html'>Nach langem suchen warum den der &quot;SAP .Net connector&quot; beim Zugriff über den SAP Adapter immer &quot;not installed&quot; ist, hat sich herausgestellt das die Fehlermeldung nichts mit dem eigentlichen Problem zu tun hatte. Hintergrund war das man Sourcen von einem bereits existierenden BizTalk-System auf ein neu eingerichtetes BizTalk-System kopiert hatte und da man den SAP Adapter 2.0 brauchte wurde dann nachträglich der &quot;SAP .Net connector&quot; und der &quot;SAP Adapter 2.0&quot; installiert.&lt;p&gt;

Da aber zur Designtime aus VisualStudio heraus normalerweisse die benötigten RFC-Baustein Schemas aus SAP importiert werden und VisualStudio dabei für jedes dieser RFC-Bausteine eine DLL in SAP Adapter Unterverzeichnis &quot;Bin&quot; (z.b. C:\Program Files (x86)\Microsoft BizTalk Adapter v2.0 for mySAP Business Suite\Bin\ ) anlegt, fehlten diese natürlich.&lt;/p&gt;&lt;p&gt;

Problemlösung: Entweder die DLLs aus dem alten System in das neue kopieren (sollte funktionieren) oder aber die SAP-Schemas noch einmal aus VisualStudio heraus importieren (und wie immer HostInstance neu starten nicht vergessen ;) ).
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/6408373673431620261/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/6408373673431620261' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6408373673431620261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6408373673431620261'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/06/sap-net-connector-is-not-installed.html' title='SAP .Net connector is not installed'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-3923636405544115359</id><published>2010-05-06T10:07:00.003+02:00</published><updated>2010-05-06T10:19:21.382+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><title type='text'>BizTalk 2006 R2 oder nicht R2?</title><content type='html'>Wie Lösungen von trivialen Fragen in langwieriges Suchen ausarten können... 
&quot;Wie ist auf die Schnelle herauszufinden ob ein BizTalk 2006 System, ein R2 Release ist?&quot; &lt;br&gt;
&lt;br&gt;
Es findet sich kein R2 Logo, kein Hinweis in den Add/Remove Programm Options, oder sonst etwas... WCF Adapter / RFID? Und wenn das nicht mitinstalliert wurde? Als einzigen verlässlichen Hinweis fand sich nur die Versionsnummer:&lt;br&gt;
&lt;br&gt;
BizTalk Server 2006 Adminitration Console -&gt; Menü &quot;Help&quot; -&gt; &quot;About Microsoft BizTalk Server Administration&quot;: &lt;br&gt;
&lt;br&gt;
- 3.5.1602.0 = BizTalk 2006&lt;br&gt;
- 3.6.1404.0 = BizTalk 2006 R2&lt;br&gt;
&lt;br&gt;
Mal sehen wie weit das noch von diversen Patches beeinflusst wird...&lt;br&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/3923636405544115359/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/3923636405544115359' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/3923636405544115359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/3923636405544115359'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/05/biztalk-2006-r2-oder-nicht-r2.html' title='BizTalk 2006 R2 oder nicht R2?'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-6715633271131788115</id><published>2010-03-10T10:34:00.005+01:00</published><updated>2010-03-10T11:18:55.591+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="64Bit"/><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2009"/><category scheme="http://www.blogger.com/atom/ns#" term="Registry"/><title type='text'>BizTalk 2009, 64Bit und Custom Adapter (Wow6432Node Registry)</title><content type='html'>Wir haben einen eigenen Adapter für BizTalk geschrieben und bisher funktionierte dieser auch tadellos auch unter Windows 2008 64Bit. Nun hatten wir das Problem, das dieser Adapter nicht gefunden wurde bei einer Kundeninstallation, auch Windows 2008 64Bit.&lt;br&gt;
&lt;br&gt;
Mit &lt;a href=&quot;http://technet.microsoft.com/de-de/sysinternals/bb896645.aspx&quot;&gt;Process Monitor&lt;/a&gt; habe ich herausgefunden, das auf unserem Referenzsystem BizTalk 2009 die Adaptoren in der 32Bit Registry sucht (Wow6432Node). Bei dem Kundensystem war der Adapter dort nicht registriert, lediglich in der 64Bit Registry. Den Knoten habe ich dann herausexportiert und dann lediglich den Wow6432Node im Pfad ergänzt und wieder neu importiert in die Registry:&lt;br&gt;
&lt;br&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\... &lt;br&gt;
&lt;br&gt;
wird zu:&lt;br&gt;
&lt;br&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID&lt;br&gt;
&lt;br&gt;
Und schon wurde der Adapter im BizTalk gefunden&lt;br&gt;
&lt;br&gt;
Was mich irritiert ist, wieso wird unser dazugehöriges Registry File auf unserem Referenzsystem korrekt in den 32Bit Knoten importiert und auf dem Kundensystem nicht? Der Mechanismus dazu ist mir nicht wirklich klar.&lt;br&gt;
&lt;br&gt;
Zum Hintergrund es gibt zwei Regedt32.exe. Eine ist für 64Bit Zugriffe zuständig und liegt (verwirrender Weise) im %windir%\System32 Verzeichnis. Das Regedt32.exe für den 32Bit Zugriff wiederum liegt im %windir%\SysWow64 Verzeichnis. Ein Ausführen des Registry Files explizit mit dieser führte zu keinem Ergebnis, lieferte allerdings auch keinen Fehler zurück...&lt;br&gt;
&lt;br&gt;
Unter 64Bit ist der Registry Zugriff schon etwas verwirrend, aber prinzipiell logisch:&lt;br&gt;
- x86 Appliktaion, 32Bit Platform: Zugriff auf 32Bit Registry&lt;br&gt;
- x86 Applikation, 64Bit Platform: Zugriff auf 32Bit Registry (Wow6432Node)&lt;br&gt;
- x64 Applikation, 32Bit Platform: geht nicht&lt;br&gt;
- x64 Applikation, 64Bit Platform: Zugriff auf 64Bit Registry&lt;br&gt;
- AnyCPU Applikation, 32Bit Platform: Zugriff auf 32Bit Registry&lt;br&gt;
- AnyCPU Applikation, 64Bit Platform: Zugriff auf 64Bit Registry&lt;br&gt;
&lt;br&gt;
Um auf die jeweilige nicht Standard Registry vom Programmcode zuzugreifen (Alternate Registry View) muss man dann mit RegOpenKeyEx arbeiten: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx&lt;/a&gt; (habe dazu dieses &lt;a href=&quot;http://www.pinvoke.net/default.aspx/advapi32/RegOpenKeyEx.html&quot;&gt;Example&lt;/a&gt; gefunden)</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/6715633271131788115/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/6715633271131788115' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6715633271131788115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6715633271131788115'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/03/biztalk-2009-64bit-und-custom-adapter.html' title='BizTalk 2009, 64Bit und Custom Adapter (Wow6432Node Registry)'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-1068256551293543142</id><published>2010-03-03T10:51:00.005+01:00</published><updated>2010-03-03T11:58:48.387+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>BizTalk 2006 BAM EventBus Service Error Event</title><content type='html'>Fehlermeldung im BizTalk Application Event Log:&lt;br&gt;
&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;Event Type:       Error&lt;br&gt;
Event Source:   BAM EventBus Service&lt;br&gt;
Event Category:               None&lt;br&gt;
Event ID:             25&lt;br&gt;
Date:                    3/1/2010&lt;br&gt;
Time:                    6:44:58 PM&lt;br&gt;
User:                    N/A&lt;br&gt;
Computer:         BES086.comlineag.cl.local&lt;br&gt;
Description:&lt;br&gt;
Either another TDDS is processing the same data or there is an orphaned session in SQL server holding TDDS lock.Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. SQLServer: BES082, Database: BizTalkDTADb.&lt;br&gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
Das Problem mit Lösungsvorschlägen ist beschrieben unter&lt;br&gt; &lt;a href=&quot;http://support.microsoft.com/kb/841334&quot;&gt;http://support.microsoft.com/kb/841334&lt;/a&gt; (Error Description dazu beachten)&lt;br&gt;
&lt;br&gt;
In meinem Fall war die Lösung zu verwaisten Sessions angebracht:&lt;br&gt; &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa275788(SQL.80).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/aa275788(SQL.80).aspx&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Die Kurzfassung zur Lösung:&lt;div&gt;mit der Management Konsole sich auf die BizTalk SQL DB verbinden und &lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;exec sp_who&lt;/span&gt;&lt;/span&gt; als Query ausführen. Das listet die gegenwärtig Session mit ihrem jeweiligen Status und der jeweiligen spid auf. Die &#39;sa&#39; Sessions interessieren nicht, alle anderen Sessions (bis auf die eigene) kann man dann gegebenenfalls mit dem kill Befehl abschießen (&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;kill &amp;lt;spid&amp;gt;&lt;/span&gt;&lt;/b&gt;)&lt;/div&gt;&lt;div&gt;&lt;spid&gt;
Dabei sollte natürlich sichergestellt sein, das der BizTalk in der Zeit nicht auf das System zugreift, bzw. ein anderer User Remote auf dem System arbeitet ;)
&lt;/spid&gt;&lt;/div&gt;&lt;div&gt;&lt;spid&gt;
&lt;/spid&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/1068256551293543142/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/1068256551293543142' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1068256551293543142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1068256551293543142'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/03/biztalk-2006-bam-eventbus-service-error.html' title='BizTalk 2006 BAM EventBus Service Error Event'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-8955495977148783069</id><published>2010-03-01T10:30:00.014+01:00</published><updated>2010-05-26T09:15:39.521+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2009"/><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><category scheme="http://www.blogger.com/atom/ns#" term="SAP"/><title type='text'>BizTalk 2009, SAP Adapter 2.0 und Windows 2008 (32Bit)</title><content type='html'>Der alte (d.h. nicht WCF) Microsoft SAP Adapter unter Windows 2008 (32Bit) in Verbindung mit BizTalk 2009 kann ganz schön bockig sein...&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Als erstes müssen folgende Vorraussetzungen erfüllt sein, damit der Adapter überhaupt funktioniert (unabhängig von BizTalk Version und Betriebssystem):&lt;br&gt;
1. Installation der SAP eigenen DLLs, enthalten im SAP Frontend Package&lt;br&gt;
2. Installation des Microsoft SAP .NET Connectors 1.0.3 (!Nicht 2.0!)&lt;br&gt;
3. Installation des Microsoft BizTalk Adapter 2.0 for MySAP SP1 (unbedingt die SP 1 Version)&lt;br&gt;
und das muss zudem in genau dieser Reihenfolge passieren!&lt;br&gt;
&lt;br&gt;
Dann sollte man in einer restriktiven Umgebung unbedingt abprüfen, ob der SAP Adapter seine Datenbanktabelle und Stored Procedures angelegt hat:&lt;br&gt;
1. In der Datenbank &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;BizTalkMsgBoxDb&lt;/span&gt; muss eine &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;SAPTid&lt;/span&gt; Table angelegt worden sein&lt;br&gt;
2. Zudem müssen in der gleichen Datenbank folgende Stored Procedures existieren:&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;   mp_sap_check_tid&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;   mp_sap_delete_tid&lt;/span&gt;&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;   mp_sap_insert_tid&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
sollte das nicht der Fall sein, muss mit einem geeigneten User nochmals die &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;BizTalkSAPConfig.exe&lt;/span&gt; über Kommandozeile mit &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;/i&lt;/span&gt; aufgerufen werden. Diese ist recht schweigsam und meldet sich nur im Fehlerfall mit einem Error Fenster.&lt;br&gt;
&lt;br&gt;
Ist das geschehen muss sichergestellt sein, das Execution Rechte des BizTalk Users in der Datenbank auf vom SAP Adapter angelegten Stored Procedures existieren (&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;BTS_HOST_USERS&lt;/span&gt;)&lt;br&gt;
&lt;br&gt;
Ist das alles geschehen sollten zumindestens die RFC Aufrufe reibungslos passieren, sowie das Abrufen der Schemas für IDOCs und BAPI Bausteine funktionieren.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Was uns dann noch Kopfzerbrechen bereitete war, das IDOCs nicht empfangen werden konnten. Im SAP wurde unter der Transaktion &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;SM58&lt;/span&gt; ein &quot;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;TARGET_METHOD_EXCEPTION raised by external server&lt;/span&gt;&quot; Fehler zurückgemeldet. Unter BizTalk passierte gar nichts. Keine Fehlermeldung und keine sonstigen Einträge z.B. im Eventlog.&lt;br&gt;
&lt;br&gt;
Nach einer Studie der Logs mit dem &lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&quot;&gt;Process Monitor&lt;/a&gt; von Microsoft kam mir die Vermutung das BizTalk seine &quot;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;Microsoft.BizTalk.SAPAdapterProperties.dll&lt;/span&gt;&quot; nicht finden kann. D.h. er findet sie schon, allerdings sucht er sie zuerst immer im &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;GAC_32&lt;/span&gt;, obwohl er seinen Adapter später im &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;GAC&lt;/span&gt; findet, scheint dies trotzdem im weiteren Verlauf zu Problemen zu führen (z.B. unzählige Buffer Overflows, in den Pipeline Komponenten)&lt;br&gt;
&lt;br&gt;
Als Problemlösung habe ich die &quot;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;Microsoft.BizTalk.SAPAdapterProperties.dll&lt;/span&gt;&quot; schlichtweg in den Ressourcen meines BizTalk 2009 Projekt referenziert (so wie ich es schon früher bei diesem Problem getan habe: &lt;a href=&quot;http://justacodeblog.blogspot.com/2008/09/biztalk-und-sap-adapter-error.html&quot;&gt;http://justacodeblog.blogspot.com/2008/09/biztalk-und-sap-adapter-error.html&lt;/a&gt;). Danach funktionierte der IDOC Empfang wieder reibungslos. Ich vermute es reicht auch aus, die SAP Adapter Installation einfach vom &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;GAC&lt;/span&gt; ins &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF6600;&quot;&gt;GAC_32&lt;/span&gt; Verzeichnis manuell zu verschieben.&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;font-weight:bold;&quot;&gt;Nachtrag: &lt;/span&gt;Der Fehler &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;TARGET_METHOD_EXCEPTION raised by external server&lt;/span&gt; tritt auch auf wenn das aus SAP abgerufene Schema nicht auf dem aktuellsten Stand ist.</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/8955495977148783069/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/8955495977148783069' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/8955495977148783069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/8955495977148783069'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/03/biztalk-2009-sap-adapter-20-und-windows.html' title='BizTalk 2009, SAP Adapter 2.0 und Windows 2008 (32Bit)'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-693382816443576949</id><published>2010-02-09T11:07:00.006+01:00</published><updated>2010-02-09T11:20:27.944+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2009"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><category scheme="http://www.blogger.com/atom/ns#" term="Link"/><category scheme="http://www.blogger.com/atom/ns#" term="VS2008"/><title type='text'>BizTalk 2009 Issues unter VS2008</title><content type='html'>Seit wir mit BizTalk 2009 unter Visual Studio 2008 entwickeln, haben wir immer wieder heftige Probleme mit referenzierten Projekten. Und zwar vornehmlich dann, wenn sich diese innerhalb der gleichen Solution befinden.



Nach unseren letzten Problemen hab ich mich auf die Suche gemacht und Blogeinträge mit den gleichen Erfahrungen gefunden:
&lt;div&gt;&lt;a href=&quot;http://dotnet.org.za/ryancrawcour/archive/2009/07/17/biztalk-2009-amp-visual-studio-2008-annoyance-2.aspx&quot;&gt;http://dotnet.org.za/ryancrawcour/archive/2009/07/17/biztalk-2009-amp-visual-studio-2008-annoyance-2.aspx&lt;/a&gt;

&lt;a href=&quot;http://blog.eliasen.dk/2009/07/21/IssuesWithBizTalk2009OnVSNET2008.aspx&quot;&gt;http://blog.eliasen.dk/2009/07/21/IssuesWithBizTalk2009OnVSNET2008.aspx&lt;/a&gt;


&lt;br&gt;&lt;br&gt;


Und nun die gute Nachricht: Es gibt seit Dezember doch tatsächlich einen Hotfix dafür :)&lt;br&gt;

&lt;a href=&quot;http://support.microsoft.com/kb/977428/en-us&quot;&gt;http://support.microsoft.com/kb/977428/en-us&lt;/a&gt;
&lt;/div&gt;&lt;div&gt;

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/693382816443576949/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/693382816443576949' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/693382816443576949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/693382816443576949'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/02/biztalk-2009-issues-unter-vs2008.html' title='BizTalk 2009 Issues unter VS2008'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-7019674379061043183</id><published>2010-01-22T15:35:00.003+01:00</published><updated>2010-01-22T15:48:18.268+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2009"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><title type='text'>BizTalk dynamischer Sendport - uninitialized dynamic port</title><content type='html'>Beim kompilieren eines BizTalk Projektes unter VS2008 mit einem dynamischen Send Port, bekam ich die Fehlermeldung &quot;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;uninitialized dynamic port&lt;/span&gt;&quot;
&lt;br&gt;&lt;br&gt;
Eine google Recherche ergab, dass dies auf das nicht gesetztes Property des Send Ports Microsoft.XLANGs.BaseTypes.Address hinweist. Das dumme nur war es ist gesetzt gewesen, aber in der falschen (!) Reihenfolge.
&lt;br&gt;&lt;br&gt;
Zuerst hatte ich nämlich das Property Microsoft.XLANGs.BaseTypes.TransportType gesetzt und dann Microsoft.XLANGs.BaseTypes.Address.
&lt;br&gt;&lt;br&gt;
Also:&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;myDynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType) = &quot;My Type&quot;
myDynamicSendPort(Microsoft.XLANGs.BaseTypes.Address) = &quot;My UNC&quot;&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;-&gt; build failed: uninitialized dynamic port&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;div&gt;Aber:
&lt;br&gt;&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;myDynamicSendPort(Microsoft.XLANGs.BaseTypes.Address) = &quot;My UNC&quot;
myDynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType) = &quot;My Type&quot;&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#33CCFF;&quot;&gt;-&gt; build succeded&lt;/span&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;

...its not a bug, its a feature :P
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/7019674379061043183/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/7019674379061043183' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/7019674379061043183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/7019674379061043183'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2010/01/biztalk-dynamischer-sendport.html' title='BizTalk dynamischer Sendport - uninitialized dynamic port'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-1617020702066138070</id><published>2009-10-05T16:58:00.001+02:00</published><updated>2009-10-05T16:58:40.490+02:00</updated><title type='text'>Bool-Shit</title><content type='html'>if (request.getParameter(&quot;x&quot;) != null
&amp;&amp; (
(String) request.getParameter(&quot;x&quot;)).equalsIgnoreCase(&quot;1&quot;)
|| request.getParameter(&quot;x&quot;) == null
)
{[...]}</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/1617020702066138070/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/1617020702066138070' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1617020702066138070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1617020702066138070'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/10/bool-shit.html' title='Bool-Shit'/><author><name>SHo</name><uri>http://www.blogger.com/profile/15555087728065479499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-6927744910881271750</id><published>2009-09-15T07:50:00.003+02:00</published><updated>2009-10-05T16:58:09.126+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>java.lang.NoSuchMethodError: java/lang/String.isEmpty()Z</title><content type='html'>Die Methode &lt;a href=&quot;http://java.sun.com/javase/6/docs/api/java/lang/String.html#isEmpty%28%29&quot;&gt;String.isEmpty()&lt;/a&gt; ist (wie in der JavaDoc unschwer ersichtlich) zwar erst ab Java 1.6 verfügbar, dennoch ist es möglich, Programme mit Compiler compliance level 1.5 (bei einem 1.6er JDK) zu compilieren, ohne dass der Compiler die Methode ankreidet. Erst beim versuch, die Methode in einer Umgebung mit Java 5 laufen zu lassen äußert sich der Fehler durch die, in der Überschrift genannte Exception. 
Sollte man also nicht 100%ig sicher sein, welche JRE auf der Zielumgebung läuft so ist weiterhin das gute alte .equals(&quot;&quot;) bzw. das ab prüfen über die Länge die sicherere Variante.</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/6927744910881271750/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/6927744910881271750' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6927744910881271750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6927744910881271750'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/09/javalangnosuchmethoderror.html' title='java.lang.NoSuchMethodError: java/lang/String.isEmpty()Z'/><author><name>SHo</name><uri>http://www.blogger.com/profile/15555087728065479499</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-1180158858539217872</id><published>2009-07-31T10:32:00.002+02:00</published><updated>2009-07-31T10:38:37.662+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><title type='text'>Anwendung nicht im Alt + Tab - Fenster anzeigen</title><content type='html'>&lt;p&gt;Manches mal hat man die Anforderung, dass eine Applikation nicht in dem Fenster angezeigt werden soll, das aktiv wird, wenn man die Tastenkombination Alt + Tab verwendet, um zwischen den laufenden Applikationen umzuschalten.&lt;/p&gt;&lt;p&gt;Eine kurze, prägnante und gute Anleitung dazu ist mir unter &lt;a href=&quot;http://www.csharp411.com/hide-form-from-alttab/&quot;&gt;http://www.csharp411.com/hide-form-from-alttab/&lt;/a&gt; über den Weg gelaufen. Das soll hier einfach mal für den Fall vermerkt werden, dass ich mal in die Verlegenheit kommen sollte. Zudem hilft es ja vielleicht auch dem ein oder anderen weiter.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/1180158858539217872/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/1180158858539217872' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1180158858539217872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1180158858539217872'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/07/anwendung-nicht-im-alt-tab-fenster.html' title='Anwendung nicht im Alt + Tab - Fenster anzeigen'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-2432673633596467940</id><published>2009-07-14T15:14:00.002+02:00</published><updated>2009-07-14T15:19:42.436+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MSDN webcast"/><title type='text'>MSDN Webcast</title><content type='html'>Da mittlerweile stattliche 750 MSDN-Webcasts abrufbar sind, wollte ich darauf einmal aufmerksam machen falls es jemand noch nicht kennen sollte :)

&lt;a href=&quot;https://www.microsoft.com/germany/msdn/webcasts/default.mspx&quot;&gt;MSDN-Webcasts&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/2432673633596467940/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/2432673633596467940' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/2432673633596467940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/2432673633596467940'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/07/msdn-webcast.html' title='MSDN Webcast'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-443380301342627592</id><published>2009-07-07T10:09:00.031+02:00</published><updated>2009-07-07T14:39:37.267+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Link"/><category scheme="http://www.blogger.com/atom/ns#" term="MSMQ"/><title type='text'>Microsoft Message Queue MSMQ</title><content type='html'>&lt;p&gt;Vor einigen Wochen habe ich einen Crashkurs innerhalb weniger Stunden in Sachen &lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft_Message_Queue&quot;&gt;MSMQ&lt;/a&gt; durchlaufen müssen, an dessen Ende eine Biztalk Lösung stand. Da ich auf einige Hindernisse gestoßen war, fasse ich mal meine Erfahrungen zusammen.&lt;/p&gt;

&lt;p&gt;Kurz gesagt, MQ dient der asynchronen Kommunikation zweier Applikationen. Und das auch über Rechnergrenzen, oder gar Domänengrenzen hinweg. Dazu legt nach dem FIFO Prinzip eine Anwendung auf ihrem System Nachrichten ab, und eine andere lauscht auf die Adresse und greift die Nachricht ab. MSMQ kann sich dabei verschiedener Kommunikations Protokolle bedienen. (&lt;a href=&quot;http://blogs.msdn.com/solutions/archive/2005/08/06/448468.aspx&quot;&gt;engl. Einführung in MSMQ&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;MSMQ unterstützt gegenwärtig drei Queue Typen:&lt;br/&gt;
- &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;Public Queues&lt;/span&gt; (benötigt Active Directory, Adressen werden dort direkt veröffentlich und sind von allen in der selben AD erreichbar, bzw. über Domängrenzen über Replikation)&lt;br/&gt;
- &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;Private Queues&lt;/span&gt; (benötigt kein AD, die Adresse muss der empfangenden Anwendung daher aber auch bekannt sein, selbst mit AD!)&lt;br/&gt;
- &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;Transaktions Queues&lt;/span&gt; (Sicherheit verbunden mit hohen Overhead Kosten)&lt;/p&gt;

&lt;p&gt;Zum Entwickeln empfehlen sich Hilfstools, denn das größte Problem meines Erachtens (eigentlich das Einzige das ich hatte) ist die Kommunikationsinfrastruktur zu konfigurieren, solange man nicht eine sehr simple Netzwerkstrutur vor sich hat.&lt;/p&gt;

&lt;p&gt;Zu einem gibt es dafür von MS das &lt;a href=&quot;http://support.microsoft.com/kb/186194&quot;&gt;MQBench Paket&lt;/a&gt; und dann noch von Cogin ein freies &lt;a href=&quot;http://www.cogin.com/mq/freetools.php&quot;&gt;MSMQ First Aid Kit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Im bin Verzeichnis von MQBench gibt es 2 Tools: MSMQRecv bzw. MSMQSend, mit denen man über die Kommandozeile das Empfangen und Senden testen kann. Zum Vorgehen empfiehlt es sich zuerst einmal lokal zu testen, ob die MQ korrekt eingerichtet wurde. Funktioniert das, kann man zum eigentlichen Empfangsrechner über gehen der die Messages später abgreifen soll. Diese Tools haben aber einen Nachteil, sie unterstützen nur den Typ Public Queue, da sie nur das Pathnamen Format beherrschen. Aber der Pathname MUSS im AD nachgeschlagen werden, sobald es über Rechnergrenzen hinweg geht, d.h. Lokal funktionieren Pathnamen auch wunderbar mit Privat Queues!&lt;/p&gt;


&lt;p&gt;Beispiel lokaler(!) Zugriff auf private MQ:&lt;br/&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;msmqrecv .\private$\MeineTestNachrichten&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
Remote Zugriff:&lt;br/&gt;
&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;msmqrecv &amp;lt;rechnername&amp;gt;\private$\MeineTestNachrichten&lt;/span&gt;&lt;br/&gt;
-&gt; Error: &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;0xc00e0003 (= Queue Not Found)&lt;/span&gt;&lt;br/&gt;
(geht nicht, Path wurde nicht in AD publiziert, da privat!)&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Anmerkung: ein Versuch das ganze mit einem Formatname anstatt Pathname aufzurufen führt zu einem &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#CC0000;&quot;&gt;0xc00e0014 (= Illegal Queue Pathname)&lt;/span&gt;, die Tools können nur Pathname!&lt;/p&gt;

&lt;p&gt;Das selbe gilt leider auch für das FirstAidKit!&lt;/p&gt;

&lt;p&gt;Wie aber Eingangs erwähnt, unterstützt MSMQ unterschiedliche Kommunikationprotokolle, wie z.B. TCP. Dadurch hat man also die Möglichkeit ohne AD Lookup direkt auf die MQ eines anderen Rechners zuzugreifen. Um aber den Protokoll Zugriff beschreiben zu können, benötigt man das &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms700996(VS.85).aspx&quot;&gt;Direct Format Name Format&lt;/a&gt;. Da ich kein freies Tool kenne das einem das abnimmt, hab ich mir kurzerhand was in .NET zusammengecoded.&lt;/p&gt;

&lt;p&gt;(Eine Anmerkung zum MSMQ Biztalk Adapter, dieser unterstützt das &quot;Direct Format Name&quot; Format ebenfalls von Haus aus.)&lt;/p&gt;

&lt;p&gt;
Unter System.Messaging gibt es im .NET Framework das richtige Werkzeug dazu:



&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;/p&gt;&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;...&lt;/pre&gt;
&lt;pre&gt;MessageQueue mq = &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;bool&lt;/span&gt; cr = &lt;span class=&quot;kwrd&quot;&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; strFormatnameaddress = &lt;span class=&quot;str&quot;&gt;@&quot;FormatName:DIRECT=TCP:192.168.1.114\test&quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;{&lt;/pre&gt;
&lt;pre&gt;   msg.Priority = MessagePriority.Normal;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;   mq = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; MessageQueue(strFormatnameaddress);&lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;   cr = mq.CanRead;&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt; (System.Messaging.MessageQueueException ex)&lt;/pre&gt;
&lt;pre&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;   Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;MSMQ Error: &quot;&lt;/span&gt; + ex.ToString());&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;
&lt;pre&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;   Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;Error: &quot;&lt;/span&gt; + ex.ToString());&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;finally&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;   mq.Close();&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; cr;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;...&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;
Das CanRead Flag gibt uns auf jeden Fall Informationen dazu, ob wir nun überhaupt auf die MQ zugreifen können, oder nicht. Jedenfalls ist die Programmierung sehr simpel, das gilt auch für das empfangen, bzw. senden von Messages:
&lt;br/&gt;


&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;...&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;rem&quot;&gt;// empfang aller Messages in der MQ&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;Message[] msgs = mq.GetAllMessages(); &lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;...&lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;rem&quot;&gt;// senden einer Message in die MQ&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;Message msg = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Message();&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;msg.Label = &lt;span class=&quot;str&quot;&gt;&quot;Test Message&quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;msg.Body = &lt;span class=&quot;str&quot;&gt;&quot;Das ist nur ein Test&quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;mq.Send(msg);&lt;/pre&gt;
&lt;pre&gt;...&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Das eigentliche Problem fängt nun da an, wenn man keinen Zugriff auf die Message Queue bekommt. Das läßt sich in der Regel auf Security Einstellungen zurückführen.
Was kein großes Problem ist, solange man sich am gleichen AD befindet und man über den Pathnamen zugreifen will (Es reicht in der Regel dem User des lesenden Rechners einfach die Zugriffsrechte auf die MQ zu gewähren, notfalls den Anonymus Access erlauben). Befindet man sich in unterschiedlichen AD (aber noch unter dem gleichen Forrest) benötigt man eigentlich nur noch zusätzlich eine funktionierende AD Replikation für den Pathnamen Zugriff. Ansonsten sollte in der Regel der Direct Format Name Zugriff funktionieren.&lt;/p&gt;

&lt;p&gt;Was aber wenn sich die Rechner in unterschiedlichen Forrests befinden? Die unterschiedlichen Forrests müßen sich diese Vertrauen, und das bedeutet entweder Zertifikate, oder die &quot;Umsonst&quot;-Variante: ein Loch in die &quot;Mauer schlagen&quot;. Dazu benötigt es nicht viel mehr als eines zusätzlichen Eintrages in die Registry des MQ Servers:&lt;br/&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc236138(PROT.10).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/cc236138(PROT.10).aspx&lt;/a&gt;
&lt;br/&gt;
1.) &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient  dword = 1&lt;/span&gt;&lt;br/&gt;

2.) Zugriffsrechte für &lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#FF9900;&quot;&gt;Anonymus&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
Das gibt dem Admin sicherlich richtige Magenschmerzen ;)&lt;/p&gt;

&lt;br/&gt;

&lt;p&gt;Dazu hat John Breakwell von Microsoft, der einem auch bei einem Microsoft Call Support leistet, ein ausführliches Blog verfasst. Folgende Einträge beschäftigen sich mit MSMQ und Rechnern in unterschiedlichen Forrests:



&lt;a href=&quot;http://blogs.msdn.com/johnbreakwell/archive/2008/02/14/how-do-i-send-msmq-messages-between-domains.aspx&quot;&gt;http://blogs.msdn.com/johnbreakwell/archive/2008/02/14/how-do-i-send-msmq-messages-between-domains.aspx&lt;/a&gt; 
&lt;a href=&quot;http://blogs.msdn.com/johnbreakwell/archive/2008/06/27/cross-forest-msmq-you-need-to-be-trusting.aspx&quot;&gt;http://blogs.msdn.com/johnbreakwell/archive/2008/06/27/cross-forest-msmq-you-need-to-be-trusting.aspx&lt;/a&gt;
&lt;a href=&quot;http://blogs.msdn.com/johnbreakwell/archive/2008/10/13/authenticating-msmq-messages-between-forests.aspx&quot;&gt;http://blogs.msdn.com/johnbreakwell/archive/2008/10/13/authenticating-msmq-messages-between-forests.aspx&lt;/a&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/443380301342627592/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/443380301342627592' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/443380301342627592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/443380301342627592'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/07/microsoft-message-queue-msmq.html' title='Microsoft Message Queue MSMQ'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-799844566092935106</id><published>2009-05-06T11:26:00.006+02:00</published><updated>2009-05-06T11:36:30.439+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><category scheme="http://www.blogger.com/atom/ns#" term="SAP"/><title type='text'>BizTalk SAP Adapter 2.0 - IDOC Unknown Segment</title><content type='html'>Beim abrufen eines IDOCs unter BizTalk 2006 mit dem BizTalk Adapter 2.0 erhielt ich die Fehlermeldung:&lt;div&gt;

&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;The schema generation encountered the following error(s):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;1. Error occured while generating schema for: xxxx&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;Error returned: SEGMENT_UNKNOWN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;Die Problemursache war, &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;dass nicht alle Segmente in SAP released waren&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.tech-archive.net/Archive/BizTalk/microsoft.public.biztalk.general/2005-02/0693.html&quot;&gt;http://www.tech-archive.net/Archive/BizTalk/microsoft.public.biztalk.general/2005-02/0693.html&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/799844566092935106/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/799844566092935106' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/799844566092935106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/799844566092935106'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/05/biztalk-sap-adapter-20-idoc-unknown.html' title='BizTalk SAP Adapter 2.0 - IDOC Unknown Segment'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-2351500932812801185</id><published>2009-01-19T21:35:00.000+01:00</published><updated>2009-01-19T21:36:03.394+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="Version Control"/><category scheme="http://www.blogger.com/atom/ns#" term="VS2008"/><title type='text'>Versionskontrolle mit VisualSVN &amp;amp; AnkhSVN</title><content type='html'>&lt;p&gt;Versionskontrolle ist sicherlich für jeden Entwickler ein Thema, vor allem natürlich im beruflichen Umfeld. Doch auch für die private Entwicklung ist sie ein Thema, denn auch hier möchte der Entwickler nicht auf die Sicherheit verzichten, die eine Versionskontrolle bietet. Nicht umsonst ist der Einsatz eines Versionskontrollsystems bereits für den ersten, den &lt;a href=&quot;http://www.clean-code-developer.de/wiki/CcdRoterGrad&quot;&gt;Roten Grad&lt;/a&gt; im Wertesystem der &lt;a href=&quot;http://www.clean-code-developer.de/&quot;&gt;Clean Code Developer&lt;/a&gt; vorgesehen.&lt;/p&gt;  &lt;p&gt;Aus genannten Gründen habe ich mich mit eben diesen Systemen auseinandergesetzt und mich letztlich für eine Kombination aus &lt;a href=&quot;http://www.visualsvn.com/server/&quot;&gt;VisualSVN&lt;/a&gt; als Server und &lt;a href=&quot;http://ankhsvn.open.collab.net/&quot;&gt;AnkhSVN&lt;/a&gt; als Visual Studio-AddIn entschieden. Dass beide kostenlos verwendet werden können, hat dabei natürlich auch eine Rolle gespielt.&lt;/p&gt;  &lt;p&gt;Obwohl sich Installation, Einrichtung und Verwendung als denkbar einfach erweisen, möchte ich hier eine kleine Hilfe für den Einstieg bieten, die eventuell auch für Unentschlossene als kleine Entscheidungshilfe dienen kann.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Installation&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Nachdem die beiden Installationsdateien für &lt;a href=&quot;http://www.visualsvn.com/server/&quot;&gt;VisualSVN&lt;/a&gt; und &lt;a href=&quot;http://ankhsvn.open.collab.net/&quot;&gt;AnkhSVN&lt;/a&gt;, die jeweils nur etwa 3 MB klein sind, heruntergeladen wurden, kann mit der Installation des Subversion-Servers begonnen werden. Man startet also zunächst die Installation von VisualSVN.&lt;/p&gt;  &lt;p&gt;Die Installation gestaltet sich dabei als einfach. Lediglich in einem Fenster müssen Entscheidungen getroffen werden, die der Konfiguration des Servers dienen. &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrihO5vH3nXwaybouBLogqt5sXEy-GbiuDvwSwz3trbD9LGft-MDpVq86wJa3ULSR0t9O9NffQITCldw2LGLeMspSn2ZSlWlJD-ts8fdzjgaS5qRs3gcf1JQ2KQGtdIEuADSy-Nlwa/s1600-h/SVN_001%5B15%5D.png&quot;&gt;&lt;img title=&quot;Konfiguration VisualSVN&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;189&quot; alt=&quot;Konfiguration VisualSVN&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzQGXKJu9ixnbmw179TzsrmKpaSD7AMLC71r8SGZRv4HSjRt3SDA8BoUIA4pl1yj-IipQWPBP3BlW2zDZvNzbs1-avG5IZStKFvcDeDxrsBFCqaU9cMLJbZ3vzzue8dSCn4j8upT_c/?imgmax=800&quot; width=&quot;240&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Neben dem Installationsverzeichnis kann hier das Verzeichnis gewählt werden, in dem später die Repositories des Servers abgelegt werden.    &lt;br /&gt;Auch kann man den zu verwendenden Port einstellen und wählen, ob eine sichere Verbindung via https:// verwendet werden soll, um eine Verbindung mit dem Server herzustellen.     &lt;br /&gt;Schlussendlich bleibt noch die Wahl, ob man für den Zugriff separate Subversion-Benutzer verwenden möchte oder lieber die bereits existierenden Windows-Benutzer.&lt;/p&gt;  &lt;p&gt;Der nebenstehende Screenshot zeigt die Standardeinstellungen, die ich für meine Installation auch so belassen werde.&lt;/p&gt;  &lt;p&gt;Damit ist die Installation des Servers auch bereits abgeschlossen und er ist damit funktionstüchtig. Bevor wir uns jedoch genauer damit auseinandersetzen, installieren wir zunächst noch das Visual Studio-AddIn AnkhSVN, das uns als Client dienen wird. Diese beschränkt sich auf das Starten der Installation plus mehrmaliges “Weiter”-Klicken, daher gehe ich darauf nicht näher ein.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Konfiguration &amp;amp; Einrichtung&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Nach erfolgreicher Installation starten wir zunächst den VisualSVN Server Explorer, den im Startmenü gefunden werden kann. Dieser dient der Verwaltung des Subversion-Servers. Hier werden beispielsweise Benutzer und Repositories angelegt, mit denen Subversion arbeitet. Auch kann hier der Server gestoppt und gestartet werden.&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1b8ifHqFulqJWOCcTHW4agaB_fEN0FAsDpCFuaTxx70Ei4QvrWcxEVm2YR7cMRg_hT1910dk_vgJN-V6cobjUBqICJA92nqb9zXEfZkE8-tZ22X2jafKHp4iKcrPhHaKX0zgCRjx1/s1600-h/SVN_002%5B3%5D.png&quot;&gt;&lt;img title=&quot;SVN_002&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;167&quot; alt=&quot;SVN_002&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNlcOXsgdAPUNZW-bTPLOln2A74fgQdrrhFpYi8Ek7lBZ9dVIl77gGBLu1fwtNyv7uPhXiUL4aDC45GaB-wE8bFk8dlcDGx1cD2TXJMAs24PFHQRIXZw5JIqcBQEmpQyNKPHqjZqXn/?imgmax=800&quot; width=&quot;244&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Diese grundlegenden Einstellungen kann man direkt vom Startbildschirm aus treffen.    &lt;br /&gt;Wurde als Authentifizierungsmethode die Subversion-Authentifizierung gewählt, sollte zunächst ein Benutzer erstellt werden.     &lt;br /&gt;Anschließend wird noch ein Repository angelegt und schon ist die grundlegende Einrichtung erledigt und der Server einsatzbereit.&lt;/p&gt;  &lt;p&gt;Bevor wir jetzt allerdings unser erstes Projekt unter Versionskontrolle stellen, möchte ich noch zeigen, wie man die Verwendung von Keywords bzw. Properties aktivieren kann.    &lt;br /&gt;Diese werden zur sogenannten Keyword Substitution benötigt. Dabei handelt es sich um die dynamische Ersetzung bestimmter Schlüsselwörter durch deren Werte innerhalb der Quelldatei. So kann man beispielsweise im Header der Quelldatei eine Übersicht realisieren, welcher Benutzer eine Datei zuletzt eingecheckt hat und wann dies geschehen ist.&lt;/p&gt;  &lt;p&gt;Um Keywords zu aktivieren, navigieren wir zunächst zum Konfigurations-Verzeichnis des Subversion-Servers, der unter Windows XP unter “C:\Dokumente und Einstellungen\&amp;lt;Benutzername&amp;gt;\Anwendungsdaten\Subversion” zu finden ist.&amp;#160; Dort öffnen wir die Datei “config” mit einem beliebigen Editor.    &lt;br /&gt;In der Sektion &lt;font color=&quot;#ff8000&quot;&gt;[miscellany]&lt;/font&gt; muss zunächst die Zeile &lt;font color=&quot;#ff8000&quot;&gt;enable-auto-props = yes&lt;/font&gt; einkommentiert werden. Hierzu wird einfach die vorangestellte Raute entfernt.     &lt;br /&gt;Anschließend muss in der Sektion [auto-props] noch ein Eintrag für jede Datei-Art eingefügt werden, für die Keywords aktiviert werden sollen. Für C#-Quelldateien sieht der Eintrag folgendermaßen aus:&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#ff8000&quot;&gt;*.cs = svn:keywords=HeadURL LastChangedBy LastChangedRevision LastChangedDate Id&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Wie hier zu sehen gibt es fünf Keywords, die aktiviert werden können. Diese haben teilweise noch Alias-Namen, die stattdessen verwendet werden können.    &lt;br /&gt;Um mehr über die Keywords und die Keyword Substitution an sich zu erfahren, kann unter &lt;a href=&quot;http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html&quot;&gt;http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html&lt;/a&gt; nachgelesen werden.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wichtig:      &lt;br /&gt;&lt;/strong&gt;Soll Keyword Substitution verwendet werden, muss das beschriebene durchgeführt werden, bevor das Projekt , in dem sie verwendet werden soll, unter Source-Control gestellt wird.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Verwendung&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Nun, da alles eingerichtet ist, können wir endlich dazu übergehen, unsere Subversion-Installation zu verwenden.    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNYStdqdhrtPW6oz-6sj9l76FSESfYORVAuxACy5fpHUZZTcY4a_rueDojVUlekbMfS1JOTjzs8Ve7CMH1OXD14qyBQUNX5uCXGA_XpopPpjuLqDnLS6QLtidDhY29BCOcG3D4sHp_/s1600-h/SVN_003%5B7%5D.png&quot;&gt;&lt;img title=&quot;SVN_003&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;179&quot; alt=&quot;SVN_003&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbmvPc4aSOYWSLHmaRGDpTnEylrCC_R-kXj_U47vDHHKaqKDL67c3GC17oDk1LeFSY7l6eMbxuBWKD4FPHVX3OzqaBeIS-RgH_o_ofOrWbUDVoIQM2POYQ3U-UWGsEr9IH9Dgm8V0a/?imgmax=800&quot; width=&quot;244&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Wird jetzt in Visual Studio ein neues Projekt angelegt, zeigt sich eine Checkbox, die zuvor nicht verfügbar war. Diese erlaubt es, das zu erstellende Projekt direkt unter Source-Control zu stellen.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI1zjHnN90bxN2jwvOsMJKl9AZF0fXsB9z-L87odzcjx7myOzf_ZWUHbHTgrVkiAbWn5BGd35aw2fRz7sGKfbf_cgnYuQOXYB_xk4HDsJQrXq05EvtyZJN6JPGnLhqSJhls48S2r25/s1600-h/SVN_004%5B3%5D.png&quot;&gt;&lt;img title=&quot;SVN_004&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;SVN_004&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiZ4HmTbJo9Vyro7yFsf0uEvjHL3cMMN_nQa0oGxo4kiQjyT2Qg1eXOBNIqaTXssS2fsevAT5gsP0veUWaCARjX1BSUVJHqsitYHknHOWNoAYkz_ry81O4rmqBalFYV4lhspTWwHwa/?imgmax=800&quot; width=&quot;221&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Wird diese Option ausgewählt, erscheint nach dem erfolgreichen Anlegen des Projekts ein Subversion-Dialog, in dem bestimmt werden kann, in welchem Repository es verwaltet werden soll.&lt;/p&gt;  &lt;p&gt;Hier muss lediglich die URL des zu verwendenden Repositories eingefügt werden. Diese kann ganz einfach aus dem VisualSVN Server Manager kopiert werden.&lt;/p&gt;  &lt;p&gt;Bei aktivierter Subversion-Authentifizierung kommt, muss sich der Benutzer nun zunächst anmelden.&lt;/p&gt;  &lt;p&gt;Nach einem Klick auf OK steht das neu erstellte Projekt jetzt offiziell unter Versionskontrolle.&lt;/p&gt;  &lt;p&gt;In Visual Studio wird man feststellen, dass einige neue Fenster hinzugekommen sind, ebenso wie einige Einträge ins Kontextmenü des Projektmappen-Explorers. Von entscheidender Bedeutung ist hierbei sicherlich das Fenster Pending Changes, dass anzeigt, welche Änderungen seit dem letzten Auschecken aufgetreten sind. Hier können diese Dateien auch wieder eingecheckt werden, was die Änderungen in das Versionskontrollsystem übernimmt.&lt;/p&gt;  &lt;p&gt;Da wir uns so viel Mühe gegeben haben, die Keyword Substituation zu aktivieren, zeige ich jetzt noch, wie sie auch tatsächlich verwendet werden kann. Soll beispielsweise nach jedem Einchecken angezeigt werden, wann dies passiert ist und wer dafür verantwortlich zeichnet, fügt man in die Datei einfach einen Header ein, der wie folgt aussehen könnte.&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;div class=&quot;csharpcode&quot;&gt;   &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;rem&quot;&gt;// $LastChangedDate$&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;// $LastChangedBy$&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;br /&gt;Die Keywords, die enthalten sind, werden nun bei jedem Einchecken ersetzt und überschrieben, so dass der Header immer aktuell ist.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Jetzt wünsche ich viel Vergnügen beim Coden und Herumprobieren mit Subversion.
  &lt;br /&gt;Sollten bei der Verwendung Fragen oder Probleme auftreten, kann das kostenlose Online-Buch &lt;a href=&quot;http://svnbook.red-bean.com/&quot;&gt;Version Control with Subversion&lt;/a&gt; sicherlich wertvolle Dienste leisten.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/2351500932812801185/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/2351500932812801185' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/2351500932812801185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/2351500932812801185'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/01/versionskontrolle-mit-visualsvn-ankhsvn.html' title='Versionskontrolle mit VisualSVN &amp;amp; AnkhSVN'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzQGXKJu9ixnbmw179TzsrmKpaSD7AMLC71r8SGZRv4HSjRt3SDA8BoUIA4pl1yj-IipQWPBP3BlW2zDZvNzbs1-avG5IZStKFvcDeDxrsBFCqaU9cMLJbZ3vzzue8dSCn4j8upT_c/s72-c?imgmax=800" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-6694310593481218353</id><published>2009-01-13T18:52:00.000+01:00</published><updated>2009-01-13T18:54:30.967+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Grundlagen"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><title type='text'>DataBinding mit einer List&amp;lt;string&amp;gt;</title><content type='html'>&lt;p&gt;Neulich stieß ich bei dem Versuch eine List&amp;lt;string&amp;gt; als Datenquelle für ein DataGridView zu verwenden auf ein interessantes Verhalten, das ich mir jedoch zunächst nicht erklären konnte.&lt;/p&gt;  &lt;p&gt;Nehmen wir beispielsweise folgenden Code:&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;div class=&quot;csharpcode&quot;&gt;   &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; FormMain()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.InitializeComponent();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;    List&amp;lt;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;&amp;gt; tvStations = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; List&amp;lt;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;Pro7&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;RTL&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;Sat1&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;VOX&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;Arte&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;N24&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;Phoenix&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;str&quot;&gt;&amp;quot;RTL II&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.dgvTvStations.DataSource = tvStations;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;br /&gt;Zu erwarten wäre, dass beim Start der Applikation unser DataGridView die in der Liste enthaltenen Fernsehsender anzeigt. Doch weit gefehlt, denn das Ergebnis sieht in Wirklichkeit so aus:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibK4lmjn2kyk6o_Dci1qSfMBUlNFMZZ0PjEO8HzHtJolmmXh3CS0brF9-sPko25m3LeCcsAo5E4E4Xz1VO6pv_MkVErk1o30n_hVgSIlNQKwvebdHeuyk_gTSEEcO_s-NvP7E7xV5i/s1600-h/callingResult%5B2%5D.png&quot;&gt;&lt;img title=&quot;callingResult&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;callingResult&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZf_vEIb02ZGPWNnJ-3U2e8EQif3Le60sXq49NXoVmVXRNfpCaWyc37c6HCWeIi65rUQMQDUKlgYf_D_Ll32JKupHnj6Dy1B1LhhUmjX5Z2VxkJjxYoWqD0InufggTT-CXKdhLu9ag/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Angezeigt werden uns also keineswegs die Fernsehsender sondern lediglich die Länge der Strings, die in der Liste enthalten sind. 
  &lt;br /&gt;Das liegt daran, dass die Datenquelle untersucht wird, wobei natürlich festgestellt wird, dass es sich um eine Liste von Strings handelt. Versucht man hier via Index auf einen bestimmten Wert zuzugreifen, wird man feststellen, dass die einzige verfügbare Eigenschaft dieses Wertes Length ist. Und genau diese wird dann vom DataGridView verwendet.&lt;/p&gt;

&lt;p&gt;Um die Daten nun korrekt anzuzeigen muss ein Umweg in Kauf genommen werden. 
  &lt;br /&gt;Wir erstellen hierfür zunächst eine Klasse, die die Daten entgegennimmt, die wir anzeigen wollen. Im vorliegenden Fall könnte diese beispielsweise so aussehen:&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;

&lt;div class=&quot;csharpcode&quot;&gt;
  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; TvStation&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; Name&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;        get&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;            &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; TvStation(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; name)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt;        &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.name = name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  17:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Nun verwenden wir im Formular, das die Daten anzeigen soll, statt einer List&amp;lt;string&amp;gt; eine List&amp;lt;TvStation&amp;gt; und binden diese an den DataGridView. &lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;

&lt;div class=&quot;csharpcode&quot;&gt;
  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; FormMain()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.InitializeComponent();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;    List&amp;lt;TvStation&amp;gt; tvStations = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; List&amp;lt;TvStation&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;Pro7&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;RTL&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;Sat1&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;VOX&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;Arte&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;N24&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;Phoenix&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;    tvStations.Add(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TvStation(&lt;span class=&quot;str&quot;&gt;&amp;quot;RTL II&amp;quot;&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.dgvTvStations.DataSource = tvStations;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Wenn jetzt die Anwendung gestartet wird, zeigt der DataGridView tatsächlich die erwarteten Daten.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJxdgF2UAzUCJND9ATmF0chugwYymkax8BXOHmvFkp_LfjEKOxVAkARxH3_OVx8P_5qc-Z9zB_MuYhVQfK6DSfvGUyJ6mnxEp34ZvrndHypF29hd61Ka_9dqHo5Q0ytYjvsMDaxmk/s1600-h/correctResult%5B2%5D.png&quot;&gt;&lt;img title=&quot;correctResult&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;244&quot; alt=&quot;correctResult&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-HBp6-N79bnBnaS7K5Sk81IeyAPQvJrBrKRmQOSdU0xKBuFdVirQDtfX-7da2AAU5QPZO1DSe8pxTzDz2Dqw1hAqF3QfxnPh940teExTK8z-9T657-hJycnBY5hxTqGCCndQwfMRL/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Schade, dass in diesem Fall ein solcher Umweg nötig ist, aber so funktioniert DataBinding nun einfach mal. &lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/6694310593481218353/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/6694310593481218353' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6694310593481218353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/6694310593481218353'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2009/01/databinding-mit-einer-list.html' title='DataBinding mit einer List&amp;lt;string&amp;gt;'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZf_vEIb02ZGPWNnJ-3U2e8EQif3Le60sXq49NXoVmVXRNfpCaWyc37c6HCWeIi65rUQMQDUKlgYf_D_Ll32JKupHnj6Dy1B1LhhUmjX5Z2VxkJjxYoWqD0InufggTT-CXKdhLu9ag/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-5561605487465149338</id><published>2008-12-11T16:12:00.006+01:00</published><updated>2008-12-19T16:34:24.667+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BizTalk2006"/><category scheme="http://www.blogger.com/atom/ns#" term="CRM 4.0"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><title type='text'>Error: 0x80040204 - Invalid user auth.</title><content type='html'>Die im Titel stehende Meldung erhielt ich letztens beim lauf einer meiner Schnittstellen, die sich sequentiell durch Datensätze (in meinem Fall Accounts) eines CRM Systems per Webservice itteriert und darin automatisiert Änderungen durchführt.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Kleiner Fehler ganz groß. Als erstes wurde von allen (ausser mir ;) ) vermutet das sich der am CRM anmeldende User etwas erlaubt was ihm so nicht gestattet ist. Da ich diesen User aber bei allen Zugriffen benutze und alle anderen ja einwandfrei funktionierten, konnte ich das gleich ausschließen.&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Meine Vermutung ging in Richtung des im Datensatz selbst zugewiesenen Systemuser (Owner) der bei jeder Änderung mit überegben wird. Dieser User ist ein auf der CRM Seite vorhandener Domänenuser und wird vom CRM System noch einmal extra als Entität &quot;Systemuser&quot; gehalten.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Meine Recherchen ergaben das man den Domänenuser aus der Domäne GELÖSCHT hatte, aber der User natürlich immer noch im CRM als Entität &quot;Systemuser&quot; vorhanden und bei vielen Datensätzen als Owner eingetragen war.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Durch die Löschung jedoch aus der Domäne hat der User praktisch alle rechte verloren und darf somit seine ihm zugeteilten Datensätze auch nicht mehr ändern.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Im vorliegenden Fall, hat die Firma in deren CRM das vorgekommen ist, in allen Datensätze mit einer Referenz zu dem rechtelosen User diesen durch einen in der Domäne noch aktiven User ausgetauscht. Damit hat dann wieder alles funktioniert.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;CU TerA &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/5561605487465149338/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/5561605487465149338' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5561605487465149338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5561605487465149338'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/12/error-0x80040204-invalid-user-auth.html' title='Error: 0x80040204 - Invalid user auth.'/><author><name>TerA</name><uri>http://www.blogger.com/profile/13709702576018227711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='17' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj18sNp4ysICcG30HKgLTY6c1-IZ-buUqufylxGZlrVIsXOPKMaArCe_8E9R1pyMMB3bZbDyH1UpC1OcQ1mEAvneoXaBXCo9tzCY0Nxt-0wGX26hE00HD3KP1cVnRVpkP0/s1600/confused-emoticon-416.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-7616105458459903690</id><published>2008-12-05T17:26:00.005+01:00</published><updated>2008-12-05T17:42:51.504+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Errors"/><title type='text'>throw ex vs throw</title><content type='html'>Es ist eigentlich ein alter Hut, der Unterschied zwischen throw ex und throw sollte jedem bekannt sein. Throw ex schneidet den alten Stack Trace ab und verpackt sozusagen den Fehler neu, Throw hingegen nicht.&lt;br&gt;
&lt;br&gt;
Aber dennoch halten sich irgendwie hartnäckig gegenteilige Meinungen, vermutlich aus den Gegenbenheiten aus Java resultierend, aber ich habe auch schon einige ellenlange Threads gelesen in denen das vollkommen Falsche dargelegt wurde, bis hin zu Projektleitern die von einem Verlangen ein ganzes Projekt umzuprogrammieren, weil sie der Meinung wären es wäre genau anders herum. &lt;br&gt;
&lt;br&gt;
Den Beweis zu führen ist recht simpel, entweder man schaut sich den MSIL Code an und erkennt das throw zu einem rethrow compiliert, während throw ex, ein throw ex bleibt. Oder aber man testet es einfach mit einem Programm folgender Art selber aus, um auch den letzten Kritiker hoffentlich verstummen zu lassen...&lt;br&gt;
&lt;br&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; ThrowVsThrowEx&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; Main(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;         ReThrow();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt;(Exception ex)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;         Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;ReThrow sent: &quot;&lt;/span&gt; + ex.ToString());&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;      Console.Write(System.Environment.NewLine);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  17:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  18:  &lt;/span&gt;         ThrowNew();&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  19:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  20:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  21:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  22:  &lt;/span&gt;         Console.WriteLine(&lt;span class=&quot;str&quot;&gt;&quot;ThrowNew sent: &quot;&lt;/span&gt; + ex.ToString());&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  23:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  25:  &lt;/span&gt;      Console.ReadLine();&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  26:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  27:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  28:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; ReThrow()&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  29:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  30:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  31:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  32:  &lt;/span&gt;         DontCallMe();&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  33:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  34:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  35:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  36:  &lt;/span&gt;         &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  37:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  38:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  39:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  40:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; ThrowNew()&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  41:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  42:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  43:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  44:  &lt;/span&gt;         DontCallMe();&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  45:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  46:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt;(Exception ex)&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  47:  &lt;/span&gt;      {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  48:  &lt;/span&gt;         &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; ex;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  49:  &lt;/span&gt;      }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  50:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  51:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  52:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; DontCallMe()&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  53:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  54:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ApplicationException(&lt;span class=&quot;str&quot;&gt;&quot;I said don&#39;t call me!!&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  55:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  56:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;br&gt;

&lt;span style=&quot;font-weight:bold;&quot;&gt;Ergebnis von throw:&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
ReThrow sent: System.ApplicationException: I said don&#39;t call me!!
   at DemoExceptions.ThrowVsThrowEx.DontCallMe() in C:\Projects\DemoExceptions\D
emoExceptions\ThrowVsThrowEx.cs:line 54
   at DemoExceptions.ThrowVsThrowEx.ReThrow() in C:\Projects\DemoExceptions\Demo
Exceptions\ThrowVsThrowEx.cs:line 36
   at DemoExceptions.ThrowVsThrowEx.Main(String[] args) in C:\Projects\DemoExcep
tions\DemoExceptions\ThrowVsThrowEx.cs:line 7
&lt;br&gt;&lt;br&gt;&lt;br&gt;

&lt;span style=&quot;font-weight:bold;&quot;&gt;und das Ergebnis von throw ex:&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
ThrowNew sent: System.ApplicationException: I said don&#39;t call me!!
   at DemoExceptions.ThrowVsThrowEx.ThrowNew() in C:\Projects\DemoExceptions\Dem
oExceptions\ThrowVsThrowEx.cs:line 48
   at DemoExceptions.ThrowVsThrowEx.Main(String[] args) in C:\Projects\DemoExcep
tions\DemoExceptions\ThrowVsThrowEx.cs:line 18
&lt;br&gt;&lt;br&gt;&lt;br&gt;

Wunderbar zu erkennen wie throw ex den Ursprung abgeschnitten hat und stattdessen bei sich &quot;selbst&quot; anfängt... keine Worte :)&lt;br&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/7616105458459903690/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/7616105458459903690' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/7616105458459903690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/7616105458459903690'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/12/throw-ex-vs-throw.html' title='throw ex vs throw'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-5748636917147051269</id><published>2008-11-10T15:50:00.001+01:00</published><updated>2008-11-10T15:52:58.378+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Gedanken"/><category scheme="http://www.blogger.com/atom/ns#" term="Grundlagen"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><title type='text'>Konsole in Konsolenanwendung verbergen</title><content type='html'>&lt;p&gt;Gerade hatte ich mal wieder eine &lt;span style=&quot;color:#ffcc00;&quot;&gt;&quot;wie Schuppen von den Augen&quot;-Situation&lt;/span&gt;.
&lt;/p&gt;
&lt;p&gt;
Zielsetzung war, eine Konsolenanwendung zu erstellen, bei der die Konsole nicht sichtbar sein sollte.&lt;br /&gt;
Zuerst habe ich an etwas gedacth wie Console.Hide(), doch eine solche Methode existiert nicht.&lt;br /&gt;
Dann habe ich Google bemüht und &lt;a href=&quot;http://chiragrdarji.blogspot.com/2007/08/hide-console-window-in-console.html&quot;&gt;seltsame Verrenkungen gefunden, die einen DllImport benötigten&lt;/a&gt;. Auch nicht gerade die feine Art, wie ich fand.
&lt;/p&gt;
&lt;p&gt;
Und dann schoss es mir in den Kopf:
Einfach den &lt;span style=&quot;color:#ffcc00;&quot;&gt;Ausgabetyp&lt;/span&gt; auf &lt;span style=&quot;color:#ffcc00;&quot;&gt;Windows-Anwendung&lt;/span&gt; setzen und glücklich werden!
&lt;br /&gt;
Schon erstaunlich, wie einfach es manchmal sein kann und wie weit man dennoch daneben liegt...&lt;/p&gt;&lt;p&gt;P.S.:
Gerade habe ich noch gesehen, dass in den Kommentaren des obigen Blog-Eintrags die von mir verwendete Möglichkeit tatsächlich auch von jemandem erwähnt wurde.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/5748636917147051269/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/5748636917147051269' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5748636917147051269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5748636917147051269'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/11/konsole-in-konsolenanwendung-verbergen.html' title='Konsole in Konsolenanwendung verbergen'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-3632138675469983041</id><published>2008-10-30T09:01:00.004+01:00</published><updated>2008-10-30T09:32:54.570+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Problem"/><category scheme="http://www.blogger.com/atom/ns#" term="VS2008"/><title type='text'>Toolbox-Item hinzufügen bei installierten Power Commands nicht möglich</title><content type='html'>&lt;p&gt;
Gerade eben wollte ich mir die &lt;a href=&quot;http://blogs.msdn.com/seanboon/archive/2008/10/25/microsoft-chart-controls-for-net-framework-3-5-released.aspx&quot;&gt;Chart Controls für das .NET Framework 3.5&lt;/a&gt; anschauen, die Microsoft vor kurzem veröffentlicht hat.
&lt;br /&gt;
Leider war nach der Installation des Pakets nichts neues im Data-Tab der Toolbox zu finden. Laut Anleitung soll man für diesen Fall die Controls einfach händisch hinzufügen. Als ich das jedoch versuchte, fror mein Visual Studio 2008 einfach ein oder stürzte gar ab. Letzteres erfreulicherweise ohne jede Fehlermeldung.
&lt;/p&gt;
&lt;p&gt;
Nach ein wenig Recherche habe ich tatsächlich herausgefunden, dass das Verhalten durch die installierten &lt;a href=&quot;http://code.msdn.microsoft.com/PowerCommands&quot;&gt;Power Commands für Visual Studio 2008&lt;/a&gt; hervorgerufen wird.
&lt;br/&gt;
Also habe ich diese schnell deinstalliert und siehe da, ich kann wieder Items zur Toolbox hinzufügen.
&lt;/p&gt;
&lt;p&gt;
Sehr schade, dass die Power Commands einen derart negativen Einfluss auf VS2008 haben, denn eigentlich finde ich sie sehr nützlich. Deshalb werde ich sie auch wieder installieren und hoffen, dass ich mich das nächste mal, wenn ich etwas in die Toolbox schieben möchte, daran denke, sie zuvor zu deinstallieren.
&lt;/p&gt;
&lt;p&gt;
Interessant ist im Übrigen auch, dass mein Kollege die Power Commands ebenfalls installiert hat, er jedoch problemlos neue Items in die Toolbox einfügen kann...
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;&lt;u&gt;Nachtrag:&lt;/u&gt;&lt;/b&gt;
&lt;br /&gt;
Ich habe die Power Commands jetzt wieder installiert und erneut versucht, ein Toolboxelement hinzuzufügen. Siehe da, es funktioniert einwandfrei.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/3632138675469983041/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/3632138675469983041' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/3632138675469983041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/3632138675469983041'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/10/toolbox-item-hinzufgen-bei.html' title='Toolbox-Item hinzufügen bei installierten Power Commands nicht möglich'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-1573117820330667118</id><published>2008-10-29T21:32:00.002+01:00</published><updated>2008-10-29T21:38:31.687+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><title type='text'>Hexadezimaldarstellung eines Strings nach Int32 umrechnen - bbo-Style</title><content type='html'>&lt;p&gt;Wie &lt;strong&gt;&lt;em&gt;tropensturm&lt;/em&gt;&lt;/strong&gt; Hex-Strings nach Int32 konvertiert, haben wir heute schon &lt;a href=&quot;http://justacodeblog.blogspot.com/2008/10/hexadezimaldarstellung-eines-strings.html&quot;&gt;gelernt&lt;/a&gt;. Nat&amp;#252;rlich hat er gleich wieder Forderungen gestellt, also kommt hier meine Version.&lt;/p&gt;  &lt;p&gt;Zun&amp;#228;chst muss ich anmerken, dass ich wesentlich pragmatischer an die Sache herangegangen bin. Ich habe Dinge wie Encoding und Little- / Big-Endian vernachl&amp;#228;ssigt, denn ich brauchte schnell eine funktionierende L&amp;#246;sung f&amp;#252;r einen Test.&lt;/p&gt;  &lt;p&gt;Folgender Code ist bei mir dabei heraus gekommen:&lt;/p&gt;  &lt;p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/p&gt;  &lt;div class=&quot;csharpcode&quot;&gt;   &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; ConvertHexStringToInt(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; hexString)         &lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; hex = &lt;span class=&quot;str&quot;&gt;&amp;quot;0x&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; hexString.Length; i++)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;        hex += ((int)hexString[i]).ToString(&lt;span class=&quot;str&quot;&gt;&amp;quot;X&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; Convert.ToInt32(hex, 16);&lt;/pre&gt;

  &lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Im Prinzip ist das, was ich hier tue, eigentlich recht einfach. 
  &lt;br /&gt;Zun&amp;#228;chst lege ich mir eine String-Variable an, die die hexadezimale Darstellung des &amp;#252;bergebenen Strings aufnehmen soll. In der for-Schleife sorge ich entsprechend daf&amp;#252;r, dass dies auch so ist. In &lt;font color=&quot;#ff8000&quot;&gt;Zeile 7&lt;/font&gt; wandle ich zun&amp;#228;chst jeden Buchstaben des &amp;#220;bergabe-Strings in seine ASCII-Int32-Repr&amp;#228;sentation, die anschlie&amp;#223;end nach Hexadezimal konvertiert und dem finalen String angeh&amp;#228;ngt wird. 

  &lt;br /&gt;Ist die Schleife f&amp;#252;r alle Zeichen des Strings durchlaufen worden, haben wir einen String im Format &lt;font color=&quot;#00ff00&quot;&gt;0xA9AE&lt;/font&gt;. 

  &lt;br /&gt;Diesen String konvertiere ich dann in &lt;font color=&quot;#ff8000&quot;&gt;Zeile 10&lt;/font&gt; noch nach Int32, wobei ich eine Basis von 16 (also hexadezimal) angebe und gebe das Ergebnis zur&amp;#252;ck.&lt;/p&gt;

&lt;p&gt;So weit, so einfach... 
  &lt;br /&gt;... leider aber auch so &amp;quot;beschr&amp;#228;nkt&amp;quot;. 

  &lt;br /&gt;Durch das Konvertieren jedes Buchstabens in seine Int32-Repr&amp;#228;sentation in &lt;font color=&quot;#ff8000&quot;&gt;Zeile 7&lt;/font&gt; wird diese L&amp;#246;sung auf Zeichen beschr&amp;#228;nkt, die im &lt;a href=&quot;http://de.wikipedia.org/wiki/ASCII-Tabelle#ASCII-Tabelle&quot;&gt;ASCII-Zeichensatz&lt;/a&gt; vorhanden sind. Werden Zeichen verwendet, die in diesem nicht auftauchen, f&amp;#252;hrt das zu &lt;font color=&quot;#ff0000&quot;&gt;falschen Ergebnissen&lt;/font&gt;.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;FAZIT:
      &lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;F&amp;#252;r meine Zwecke ist diese Implementierung absolut ausreichend, da ich mir sicher sein kann, dass mein &amp;#220;bergabe-String nur Zeichen enth&amp;#228;lt, die auch im ASCII-Zeichensatz auftauchen. F&amp;#252;r einen produktiven Einsatz ist aber auf jeden Fall &lt;strong&gt;&lt;em&gt;tropensturms&lt;/em&gt;&lt;/strong&gt; L&amp;#246;sung vorzuziehen, da diese eben auch mit nicht ASCII-konformen Zeichen umgehen kann.&lt;/p&gt;

&lt;p&gt;bbo-Style: 0
  &lt;br /&gt;tropensturm-Style: 1&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/1573117820330667118/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/1573117820330667118' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1573117820330667118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/1573117820330667118'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/10/hexadezimaldarstellung-eines-strings_29.html' title='Hexadezimaldarstellung eines Strings nach Int32 umrechnen - bbo-Style'/><author><name>BBo</name><uri>http://www.blogger.com/profile/02572660303817964815</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-4751697607992556728</id><published>2008-10-29T20:44:00.004+01:00</published><updated>2008-10-29T21:00:37.090+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Cryptography"/><category scheme="http://www.blogger.com/atom/ns#" term="Link"/><title type='text'>Freie Cryptography API</title><content type='html'>&lt;p&gt;Eine freie Cryptography API, inkl. OpenPGP, ohne jegliche Lizenzeinschränkungen mit der Ausnahme das License Informations File weiterzugeben. Hört sich zu gut an um wahr zu sein? :)
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.bouncycastle.org/csharp/index.html&quot;&gt;The Legion of the Bouncy Castle - Bouncy Castle Cryptography API&lt;/a&gt;
&lt;/p&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Features:&lt;/span&gt;

&lt;li&gt;Generation and parsing of PKCS-12 files.  &lt;/li&gt;&lt;li&gt;X.509: Generators and parsers for V1 and V3 certificates, V2 CRLs and  attribute certificates.  &lt;/li&gt;&lt;li&gt;PBE algorithms supported by PBEUtil: PBEwithMD2andDES-CBC,  PBEwithMD2andRC2-CBC, PBEwithMD5andDES-CBC, PBEwithMD5andRC2-CBC,  PBEwithSHA1andDES-CBC, PBEwithSHA1andRC2-CBC, PBEwithSHA-1and128bitRC4,  PBEwithSHA-1and40bitRC4, PBEwithSHA-1and3-keyDESEDE-CBC,  PBEwithSHA-1and2-keyDESEDE-CBC, PBEwithSHA-1and128bitRC2-CBC,  PBEwithSHA-1and40bitRC2-CBC, PBEwithHmacSHA-1, PBEwithHmacSHA-224,  PBEwithHmacSHA-256, PBEwithHmacRIPEMD128, PBEwithHmacRIPEMD160, and  PBEwithHmacRIPEMD256.  &lt;/li&gt;&lt;li&gt;Signature algorithms supported by SignerUtilities: MD2withRSA, MD4withRSA,  MD5withRSA, RIPEMD128withRSA, RIPEMD160withECDSA, RIPEMD160withRSA,  RIPEMD256withRSA, SHA-1withRSA, SHA-224withRSA, SHA-256withRSAandMGF1,  SHA-384withRSAandMGF1, SHA-512withRSAandMGF1, SHA-1withDSA, and SHA-1withECDSA.  &lt;/li&gt;&lt;li&gt;Symmetric key algorithms: AES, Blowfish, Camellia, CAST5, CAST6, DESede,  DES, GOST28147, HC-128, HC-256, IDEA, ISAAC, NaccacheStern, Noekeon, RC2, RC4,  RC5-32, RC5-64, RC6, Rijndael, Salsa20, SEED, Serpent, Skipjack, TEA/XTEA,  Twofish and VMPC.  &lt;/li&gt;&lt;li&gt;Symmetric key modes: CBC, CFB, CTS, GOFB, OFB, OpenPGPCFB, and SIC (or CTR).   &lt;/li&gt;&lt;li&gt;Symmetric key paddings: ISO10126d2, ISO7816d4, PKCS-5/7, TBC, X.923, and  Zero Byte.  &lt;/li&gt;&lt;li&gt;Asymmetric key algorithms: RSA (with blinding), ElGamal, DSA, and ECDSA.  &lt;/li&gt;&lt;li&gt;Asymmetric key paddings/encodings: ISO9796d1, OAEP, and PKCS-1.  &lt;/li&gt;&lt;li&gt;AEAD block cipher modes: CCM, EAX, and GCM.  &lt;/li&gt;&lt;li&gt;Digests: GOST3411, MD2, MD4, MD5, RIPEMD128, RIPEMD160, RIPEMD256,  RIPEMD320, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, Tiger, and Whirlpool.  &lt;/li&gt;&lt;li&gt;Signer mechanisms: DSA, ECDSA, ECGOST3410, GOST3410, ISO9796d2, PSS, RSA.  &lt;/li&gt;&lt;li&gt;Key Agreement: Diffie-Hellman and EC-DH.  &lt;/li&gt;&lt;li&gt;Macs: CBCBlockCipher, CFBBlockCipher, GOST28147, HMac, ISO9797 Alg. 3, and  VMPCMAC.  &lt;/li&gt;&lt;li&gt;PBE generators: PKCS-12, and PKCS-5 - schemes 1 and 2.  &lt;/li&gt;&lt;li&gt;OpenPGP (RFC 2440)  &lt;/li&gt;&lt;li&gt;Cryptographic Message Syntax (CMS, RFC 3852), including streaming API.  &lt;/li&gt;&lt;li&gt;Online Certificate Status Protocol (OCSP, RFC 2560).  &lt;/li&gt;&lt;li&gt;Time Stamp Protocol (TSP, RFC 3161).  &lt;/li&gt;&lt;li&gt;Elliptic Curve Cryptography (support for F2m and Fp curves).  &lt;/li&gt;&lt;li&gt;Reading/writing of PEM files, including RSA and DSA keys, with a variety of  encryptions. &lt;/li&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/4751697607992556728/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/4751697607992556728' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4751697607992556728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/4751697607992556728'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/10/freie-cryptography-api.html' title='Freie Cryptography API'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5745762969201250264.post-5088245731042882813</id><published>2008-10-29T16:02:00.016+01:00</published><updated>2008-10-29T21:45:21.745+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Encoding"/><category scheme="http://www.blogger.com/atom/ns#" term="VS2008"/><title type='text'>Hexadezimaldarstellung eines Strings nach Int32 umrechnen</title><content type='html'>&lt;p&gt;
BBo hat mir eine Aufgabenstellung hingeworfen und wir haben diese dann unterschiedlich gelöst. Es ging darum die Hexadezimaldarstellung eines 2 Byte langen String nach Int32 zu konvertieren. Das war etwas schwieriger als wir dachten. Hier nun meine Lösungsvariante, vielleicht postet BBo ja noch seine ;)
&lt;/p&gt;
&lt;p&gt;
Das Erste was mir durch den Kopf ging ist, dass dies etwas gefährlich ist in Bezug auf das Stringencoding. Denn je nach dem wie der String decodiert wurde, hat man ja je nach Umgebung eine andere Hexadezimalwertdarstellung nach dem Encodieren. Darum habe ich einfach zur Absicherung das Encoding mit eingebaut in meine Lösung. Theoretisch kann man in einer homogenen Welt darauf verzichten, doch meine praktischen Erfahrungen in den letzten Monaten haben mir oft genug die Finger verkokelt. Man kann ja selber mal damit herumspielen und mit unterschiedlichen Encodings die unterschiedlichen Ergebnisse vergleichen...
&lt;/p&gt;
&lt;p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;rem&quot;&gt;// test&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; erg = TwoByteStringHexValueToInt32(&lt;span class=&quot;str&quot;&gt;&quot;Aÿ&quot;&lt;/span&gt;, System.Text.Encoding.GetEncoding(1252));&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;...&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; TwoByteStringHexValueToInt32(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; input, Encoding encoding)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (input.Length != 2)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;      &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ArgumentException(&lt;span class=&quot;str&quot;&gt;&quot;TwoByteStringHexValueToInt32 - parameter input is allowed to be 2 byte long only!&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;            &lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (encoding == &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;      encoding = System.Text.Encoding.Default;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; result = 0;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] ba = encoding.GetBytes(input); &lt;span class=&quot;rem&quot;&gt;// split to byte array of 2&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (System.BitConverter.IsLittleEndian) &lt;span class=&quot;rem&quot;&gt;// when little endian we need to do a workaround&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  17:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  18:  &lt;/span&gt;      result = (Convert.ToInt32(ba[0]) &amp;lt;&amp;lt; 8) + Convert.ToInt32(ba[1]);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  19:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  20:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  21:  &lt;/span&gt;   {&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  22:  &lt;/span&gt;      result = (&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt;)System.BitConverter.ToInt16(ba, 0);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  23:  &lt;/span&gt;   }&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  24:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  25:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  26:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
In &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Zeile 14&lt;/span&gt;&lt;/span&gt; geht es richtig los, da zerleg ich den Input string in ein 2-Byte Array in Abhängigkeit (!) vom Encoding des Strings. 1252 ist das herkömmliche Encoding unter Windows für lateinische Schriftsysteme, u.a. Deutsch. Danach steht also in unserem Byte Array die Hexdarstellung unseres Strings.
&lt;/p&gt;
&lt;p&gt;
Danach mache ich einen kleinen Kunstgriff in &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Zeile 16&lt;/span&gt;&lt;/span&gt;, x86 Syteme sind LittleEndian kodiert, Motorola z.B. normalerweise BigEndian. &lt;a href=&quot;http://de.wikipedia.org/wiki/Big_Endian&quot;&gt;Hier&lt;/a&gt; eine kleine Info wenn man damit nichts anfangen kann. Im Klartext, normalerweise rechnet man den Wert in unserem Bytearray wie in &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;Zeile 22&lt;/span&gt;&lt;/span&gt; gezeigt um. Mit dem Bitkonverter nach 16Bit Integer, werden 2 Bytes aus dem Bytearray ab der Position 0 gelesen und in Integer umgerechnet (Int32 bräuchte 4 Bytes, darum dieser Umweg).
&lt;/p&gt;
&lt;p&gt;
Und &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;GENAU&lt;/span&gt; hier schlägt die Sache mit dem Little/Big Endian System zu! Denn wir haben zuvor oben unseren String eigentlich verkehrt herum abgelegt für unser x86 System!! Denn das rechnet von Hinten nach Vorne Bytedarstellungen nach Integer um!
&lt;/p&gt;
&lt;p&gt;
Daher das Byteshifting in &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(255, 102, 0);&quot;&gt;Zeile 18&lt;/span&gt;&lt;/span&gt;, falls ein Little Endian System vorliegt. Ich greife mir das erste Byte konvertiere es nach Int32 und verschiebe es mal 8 Bits nach &quot;links&quot; (= 1 Byte, wir haben ja 2 Bytes und schieben das Erste sozusagen nach &quot;vorne&quot;), um dann einfach das Ergebnis aus der zweiten Byte Konvertierung dazu addieren.
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-weight:bold;&quot;&gt;Nachtrag:&lt;/span&gt; Der Rückweg
&lt;/p&gt;
&lt;p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] Int16ToBigEndianByteArray(&lt;span class=&quot;kwrd&quot;&gt;short&lt;/span&gt; input)&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; higher = input &amp;gt;&amp;gt; 8;     &lt;span class=&quot;rem&quot;&gt;// shift 1 byte -&amp;gt; get higher byte&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; lower  = input &amp;amp; 0x00ff; &lt;span class=&quot;rem&quot;&gt;// mask -&amp;gt; get lower byte&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   6:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] ba = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[2];&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   7:  &lt;/span&gt;   ba[0] = Convert.ToByte(higher);&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   8:  &lt;/span&gt;   ba[1] = Convert.ToByte(lower);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  10:  &lt;/span&gt;   &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; ba;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  14:  &lt;/span&gt;...&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  15:  &lt;/span&gt;&lt;span class=&quot;rem&quot;&gt;// test&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;  16:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] ba = Int16ToBigEndianByteArray((&lt;span class=&quot;kwrd&quot;&gt;short&lt;/span&gt;)31910);&lt;/pre&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;  17:  &lt;/span&gt;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; res = System.Text.Encoding.GetEncoding(1252).GetString(ba);&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://justacodeblog.blogspot.com/feeds/5088245731042882813/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5745762969201250264/5088245731042882813' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5088245731042882813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5745762969201250264/posts/default/5088245731042882813'/><link rel='alternate' type='text/html' href='http://justacodeblog.blogspot.com/2008/10/hexadezimaldarstellung-eines-strings.html' title='Hexadezimaldarstellung eines Strings nach Int32 umrechnen'/><author><name>Tropensturm</name><uri>http://www.blogger.com/profile/09305855003846590340</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>