C# Datentypen

by wolfgang@gehirnwindung.de (Wolfgang) April 30, 2009 19:30

Insgesamt 15 Datentypen können direkt mit C#-Keywords beschrieben werden. Diese Schlüsselwörter sind dabei "nur" Aliasnamen für entsprechende .NET-Framework-Datentypen.

Übersicht

Die meisten Datentypen sind Werttypen (siehe struct). Diese können den angegebenen Werte annehmen. Dagegen können Verweistypen wie string und object (und alle Klassen) zusätzlich den "Wert" null annehmen. Will man nun, dass auch ein Werttyp null annehmen kann, so kann man auf die Nullable-Typen zugreifen.

Keyword .NET-Datentyp Speicher Wertebereich Bemerkung
bool System.Boolean 8 bit
1 byte
true oder false (0xFF oder 0x00)  
byte System.Byte 8 bit
1 byte

0x0 bis 0xFF
0 bis 255

 
char System.Char 16 bit
2 byte
0x0 bis 0xFFFF (ein Unicode-Zeichen)
0 bis 65.535
einzelnes Unicode-Zeichen innerhalb einfachen Anführungsstrichen (')
decimal System.Boolean 128 bit
16 byte
(-7,9x1028 bis 7,9x1028) / 10x10(0 bis 28) Suffix M
double System.Double 64 bit
8 byte
-1,79769313486232x10308 bis 1,79769313486232x10308 Suffix D
float System.Single 32 bit
4 byte
-3,402823x1038 bis 3,402823x1038 Suffix F
int System.Int32 32 bit
4 byte

0x8000 0000 bis 0x7FFFFFFF
-2.147.483.648 bis 2.147.483.647

 
long System.Int64 64 bit
8 byte

0x8000 0000 0000 0000 bis 0x7FFF FFFF FFFF FFFF
-9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807

Suffix L
object System.Object      
sbyte System.SByte 8 bit
1 byte

0x80 bis 0x7F
-128 bis 127

 
short System.Int16 16 bit
2 byte
0x8000 bis 0x7FFF
-32.768 bis 32.767
 
string System.String     Kein oder mehrere Unicode-Zeichen innerhalb doppelten Anführungsstrichen (") - oder null.
uint System.UInt32 32 bit
4 byte
0x0 bis 0xFFFF FFFF
0 bis 4.294.967.295
 
ulong System.UInt64 64 bit
8 byte
0x0 bis 0xFFFF FFFF FFFF FFFF
0 bis 18.446.744.073.709.551.615
Suffix UL (U, L)
ushort System.UInt16 16 bit
2 byte
0x0 bis 0xFFFF
0 bis 65.535
 

vollständigen Artikel anzeigen...

Tags:

C#

BizTalk 2009: Ein Feature das keines ist

by wolfgang@gehirnwindung.de (Wolfgang) April 29, 2009 18:31

Das neue Projektformat der BizTalk-Projekte lässt einiges erhoffen. Neben MSBuild-Deploys z.B. auch, dass unterschiedliche Elemente wie z.B. C#-Dateien mit eingefügt werden können. Und tatsächlich ist sogar schon eine *.cs-Datei in neuen BizTalk-Projekten enthalten: AssemblyInfo.cs.

Und diese ist nicht nur proforma vorhanden, sondern wird tatsächlich auch vom C#-Compiler kompiliert.

vollständigen Artikel anzeigen...

Tags:

Microsoft BizTalk Server

BizTalk Server 2009 verfügbar

by wolfgang@gehirnwindung.de (Wolfgang) April 28, 2009 10:56

Seit heute ist der BizTalk Server 2009 verfügbar. Eine 120-Tage-Testversion gibt's hier zum download.

Neben Verbesserungen an den Adaptern ist auch das Entwickeln der Orchestrations und Mappings vereinfacht worden. BizTalk-Projekte sind nun (wie C#- oder VB.NET-Projekte) echte "MSBuild-Projekte" (ich kenn keinen anderen Namen dafür). Dadurch steht einer Unterstützung von MSBuild (was zuvor mit vielen kleinen Hilfsmitteln auch ging) und Team Foundation Server nichts mehr im Weg, Der SQL Server 2008 wird nun unterstützt und auch die Unterstützung von SQL Server 2005 wurde verbessert.

Mit Visual Studio 2008 lassen sich die Projekte nun debuggen (z.B. Map debug), Unit Tests unterziehen und mittels MSBuild auch automatisierte Builds erstellen. Zudem wird ein Optimierter EDI- und AS2-Support versprochen... Und sowieso ist alles besser ;)

Vieles ging auch vorher - nur wesentlich umständlicher. Um z.B. ein Mapping zu debuggen musste man sich mittels "Validate Map" den XSLT-Code ausgeben und diesen dann mit XSLT-Debug debuggen.

Tags:

Microsoft BizTalk Server

Identitätsspalte zurücksetzen

by wolfgang@gehirnwindung.de (Wolfgang) April 16, 2009 18:44

Manchmal kommt es vor, dass man (z.B. nach letzten Tests) seine Daten aus Tabellen löschen und dabei entsprechende Identitätsspalten zurücksetzen will.

Hierbei gibt es mehrere Möglichkeiten. Man kann z.B. mittels TRUNCATE TABLE gleich beides auf einmal erledigen. Das empfiehlt sich aber nicht wirklich, da dies spätestens dann aufhört, wenn die Tabelle repliziert wird oder Foreign Keys gesetzt sind. Die Replikation kann auch dafür verantwortlich sein, dass man eine Tabelle nicht einfach so löschen und neu anlegen kann.

Mit all diesen Versuchen kann man aber - wenn Sie denn überhaupt gelingen - immer nur ganz von vorne anfangen. Es müssen alle Daten gelöscht werden. Falls Daten erhalten bleiben sollen, müssen diese zuerst gelöscht und danach wieder eingefügt werden.

Aber es gibt natürlich noch eine andere Möglichkeit. Der Befehl

DBCC CHECKIDENT ('table'[, NORESEED|RESEED[, seed_value]] )

ist zwar nicht sonderlich bekannt, wird aber durchaus verwendet. Dennoch, auch DBCC CHECKIDENT hat so seine Tücken. Zum Einen werden neu erstellte und bereits verwendete Tabellen unterschiedliche behandelt. Dadurch fällt es wiederum etwas schwerer, DBCC CHECKIDENT innerhalb eines Scripts zu verwenden.

vollständigen Artikel anzeigen...

Tags: ,

Microsoft SQL Server

Lokalisierung in BlogEngine.NET anpassen

by wolfgang@gehirnwindung.de (Wolfgang) April 15, 2009 19:57

Wenn man mal einen Eintrag in der labels.de.resx (oder einer anderen Resourcen-Datei) geändert hat, kennt man das.

Was macht man bei einem Update? Einfach die Datei weglassen geht sicherlich daneben, da einige Einträge dann mit aller wahrscheinlichkeit fehlen werden. Überschreiben bedeutet auf der anderen Seite, dass die Änderungen verloren gehen oder dass man diese nochmal ausführen muss.

Einfacher geht es - zumindest bei den Sprachen, bei denen nur die Kultur lokalisiert wurde - wenn man zusätzlich zu dieser noch eine Datei für die Subkultur anlegt. Also beispielsweise eine Datei Namens labels.de-de.resx.

Ein solcher Eintrag ist z.B. nützlich, wenn man den "Mehr" - Schalter mit einem anderen Text versehen will. Statt "Mehr" kann man auch "[vollständigen Artikel anzeigen]" angeben. In der Datei labels.de-de.resx ist dieser Text definitiv besser aufgehoben und muss bei einem Update lediglich wieder in das entsprechende Verzeichnis kopiert werden... Natürlich müsste man bei einem Update auch Testen, ob die Schlüsselnamen sich nicht geändert haben, aber davon muss man nicht unbedingt ausgehen (wäre ja unnötige Arbeit).

In den Einstellungen sollten man dann für die Sprache des Blogs auch den entsprechenden Eintrag (in dem Fall "Deutsch (Deutschland)") auswählen.

Download: labels.de-de.zip (1,64 kb)

Tags: ,

BlogEngine.NET

Weitere Lokalisierungslücken in BlogEngine.NET 1.5.0.7 und 1.5.0.8

by wolfgang@gehirnwindung.de (Wolfgang) April 15, 2009 19:24

Wenn man mal anfängt zu suchen... ;) Es fehlen innerhalb der lablels.de.resx-Datei etliche Einträge. Welche davon überhaupt noch verwendet werden, und welche nicht, hab ich im einzelnen jetzt mal nicht nachvollzogen. Ein paar sind zumindest auch außerhalb der Administration zu finden - und dort stört mich das ein wenig (z.B. nextPost und previousPost).

Zum aufspüren der fehlenden Einträge habe ich die Dateien lable.resx und label.de.resx verglichen (aus Version 1.5.0.8). Dabei sind folgende Einträge aufgefallen, die in der deutschen Übersetzung fehlen, was natürlich gleich nachgeholt wurde.

Key Englisch Deutsch
changePassword Change password Passwort ändern
chooseOtherName Please choose another name Bitte verwenden Sie einen anderen Namen
emailSubjectPrefix Subject prefix Prefix im Betreff
enablePingbacks Enable pingbacks Pingbacks aktivieren
enableTrackbacks Enable trackbacks Trackbacks aktivieren
enterValidEmail Please enter a valid e-mail Bitte geben Sie eine gültige eMail-Adresse an
enterValidUrl Please enter a valid URL Bitte geben Sie eine gültige URL an
mobileTheme Mobile theme Thema für Mobilgeräte
nextPost Next post Nächster Artikel
nextPosts Next posts Nächste Artikel
previousPost Previous post Vorheriger Artikel
previousPosts Previous posts Vorherige Artikel
receive Receive Empfangen
required Required Erforderlich
savingTheComment Saving the comment... Kommentar speichern...
send Send Senden
showPostNavigation Show post navigation links Links zur Artikel-Navigation anzeigen
userProfiles User Profile(s) Benutzerprofil(e)
view View Ansicht
firstName First Name Vorname
aboutMe About Me Über mich
birthday Birthday Geburtstag
cityTown City/Town Stadt
displayName Display Name Anzeigename
fullName Full Name Voller Name
gender Gender Geschlecht
industry Industry Branche
interests Interests Interessen
isPrivate Is Private Privates Profil
lastName Last Name Nachname
occupation Occupation Beruf
photoURL PhotoURL Photo URL
regionState State/Region Staat / Region
saveProfile Save Profile Speichern
switchUserProfile Switch to user profile zu Benutzerprofil wechseln
company Company Firma
middleName Middle Name Zweitname
phoneFax Phone Fax Fax
phoneMain Phone Main Telefon
phoneMobile Phone Mobile Mobil
profile Profile Profil
calendar Calendar Kalender
commentWaitingModeration Thank you for the feedback. The comment is now awaiting moderation Vielen Dank für Ihren Beitrag. Der Kommentar wartet auf Bestätigung vom Moderator
requireSslForMetaWeblogApi Require SSL for MetaWeblog API Für die MetaWeblog API wird SSL benötigt
requireSslForMetaWeblogApiDescription Enforce the use of SSL when communicating with the MetaWeblog API SSL für Kommunikation mit MetaWeblog API erzwingen
compressWebResource Compress WebResource.axd WebResource.axd komprimieren
compressWebResourceDescription This may break third-party functionality Dies kann Funktionen von Drittanbietern beeinträchtigen
useBlogNameInPageTitles Use blog name in page titles Blogname in Seitentitel anzeigen
useBlogNameInPageTitlesDescription Prefixes the page titles with the name of the blog Zeigt den Blognamen im Seitentitel als Prefix zum Artikelnamen an
uncategorized Uncategorized Unkategorisiert
cancel Cancel Abbrechen
filter Filter Filter
filterByApml Filter by APML APML-Filter
filterByApmlDescription Enter the URL to your website or to your APML document Geben Sie die URL zu Ihrer Website oder zu Ihrem APML-Dokument an
login Log in Anmelden
logoff Log off Abmelden
useRawHtmlEditor Use raw HTML editor Puren HTML-Editor verwenden
enableCommentNesting Enable nested comments Verschachtelte Kommentare aktivieren
enableCommentNestingDescription This only works if the theme supports it. Funktioniert nur, wenn das Thema dies unterstützt
replyTo In reply to In Beantwortung von
replyToBase the original post dem Originalartikel
replyToThis Reply Antwort
deleteKeepReplies Delete this, but keep replies Diesen Eintrag löschen, Antworten behalten
deletePlusReplies Delete this and replies Diesen Eintrag und alle Antworten löschen
cancelReply Cancel reply to comment Antwort auf Kommentar abbrechen
numberOfCharacters Number of characters Anzahl der Buchstaben
ratingHasBeenRegistered Your rating has been registered. Thank you! Ihre Bewertung wurde gespeichert. Vielen Dank.
rateThisXStars Rate this {0} star{1} out of 5 Diesen Artikel mit {0} von 5 Sternen bewerten

Ich bin kein Übersetzer! Daher bin ich dankbar für Verbesserungen ;) Die Liste habe ich zwar bereits auch als Patch veröffentlicht, aber das ist änderbar...

Bis es soweit ist, und die Übersetzung in einem Release endet, kann man diese aber auch hier herunterladen: labels.de.zip (5,25 kb). Die enthaltene Datei einfach in den Ordner App_GlobalResources kopieren.

UPDATE: geänderte Einträge werde ich rot markieren (und nicht jedes mal dazuschreiben, warum *g*)...

UPDATE 2: in Version 1.5.0.9 kam die letzte Zeile dazu. Damit ist beim Rating nun auch der Tooltip-Text lokalisiert...

Tags:

BlogEngine.NET

Kleiner Fehler in BlogEngine.NET 1.5.0.7

by wolfgang@gehirnwindung.de (Wolfgang) April 14, 2009 18:49

Da hat sich wohl ein kleiner Lokalisierungs-Fehler eingeschlichen...

"Be the first to rate this post" steht an jedem Post dran - statt der lokalisierten Variante "Gib die erste Bewertung ab" wie sie auch (immer noch) in der entsprechenden .resx - Datei steht.

Das Problem scheint Aufgrund einer Lade-Optimierung hervorgekommen zu sein, denn das Rating wird nun über die JavaScript-Funtion showRating innerhalb der Datei blog.js angezeigt - und dort steht der Text fest drin ;) Kurzfristig hilft es also nur, genau diesen Text innerhalb blog.js zu ändern...

 

Hier eine kleine Übersetzungshilfe ins Deutsche:

Zeile Ist Soll
339
p.innerHTML = 'Be the first to rate this post';
p.innerHTML = 'Gib die erste Bewertung ab';
342
p.innerHTML = 'Currently rated ' + new Number(rating).toFixed(1) + ' by ' + raters + ' people';
p.innerHTML = 'Bewertung: ' + new Number(rating).toFixed(1) + ' von ' + raters + ' Benutzern';
352
li.innerHTML = 'Currently ' + rating + '/5 Stars.';
li.innerHTML = 'Bewertung: ' + rating + '/5';
361
a.title = "Rate this " + i.toString() + " star" + (i == 1 ? "" : "s") + " out of 5";
a.title = "Diesen Artikel mit " + i.toString() + " von 5 Sterenen bewerten";

 

UPDATE:
Nach meiner Anfrage ist dieser Fehler in Version 1.5.0.8 wieder behoben ;) Das ging schnell.

Und wie man sieht, funktioniert es auch wunderbar.

UPDATE 2:
Bis auf den Tooltip-Text (Zeile 364, ehemals 361). Der ist gleich geblieben und immer noch nicht lokalisiert :(

UPDATE 3:
In Version 1.5.0.9 soll auch dies nun behoben sein. Mal sehn - heut Abend werd ich's installieren...

Tags:

BlogEngine.NET

Globale Stored Procedure im SQL Server

by Wolfgang Kluge April 14, 2009 17:38

Um eine Stored Procedure im SQL Server global (d.h. über mehrere Datenbanken hinweg) verfügbar zu machen, gibt es den nur wenig (bzw. offiziell gar nicht) dokumentierten Befehl sp_ms_marksystemobject. Damit es funktioniert muss der Name der Stored Procedure mit "sp_" beginnen und in der master-Datenbank gespeichert sein! Es gibt keine Fehlermeldung, falls dies nicht so wäre...

Folgende Tabelle soll den Unterschied verdeutlichen. Die Aufgerufene Stored Procedure gibt (wie in dem Beispiel unten) lediglich den aktuellen Datenbanknamen zurück.

SP Aufruf aus AdventureWorks-DB DB_NAME()
in master-Datenbank, aber nicht als System Object markiert
EXEC master.dbo.StoredProcedure
master
EXEC dbo.StoredProcedure
Fehler
in master-Datenbank und als System Object markiert
EXEC master.dbo.StoredProcedure
master
EXEC dbo.StoredProcedure
AdventureWorks

vollständigen Artikel anzeigen...

Tags: ,

Microsoft SQL Server

IIS 7 und + in URLs

by wolfgang@gehirnwindung.de (Wolfgang) April 08, 2009 19:12

Ich hab gerade nach einem Fehler suchen müssen, der Plus-Zeichen in URLs betrifft. "Früher" (IIS 6) hat's noch so funktioniert wie es funktionieren sollte. %20 ist der Code für ein Leerzeichen, aber auch + kann für ein Leerzeichen angegeben werden (warum auch immer). Auf dem Server wird dies wieder dekodiert und entsprechend verwertet. Wollte man, dass der Server ein Plus-Zeichen, statt einem Leerzeichen übergeben bekommt, so musste man das + entsprechend mit %2B codieren.

Im IIS 7 wurde aber aus %2B kein +, sondern es kam zu einer Fehlermeldung (File not found). Auch bei %252B (%25 ist das %-Zeichen selbst) kommt es zu diesem Fehler.

In der erweiterten Fehlermeldung eines lokalen IIS 7.0 steht es dann genauer drin. Hier wurden erweiterte Sicherheitsmechanismen erdacht, die (in diesem Fall) Schutz vor dem so genannten double encodingbieten sollen. Um diesen Schutz abzuschalten und damit wieder ein + in Dateinamen angeben zu können, muss man in die entsprechende web.config folgendes eintragen.

vollständigen Artikel anzeigen...

Tags: ,

IIS 7.0

Powered by BlogEngine.NET 1.6.1.6
Theme by Mads Kristensen | Modified by Mooglegiant and me ;)