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...
cd98333f-6064-4554-9b46-0c9d768a0edc|1|5.0
Tags: C#
C#
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...
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.
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...
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)
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...
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...
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...
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...