Posts

Posts uit oktober, 2009 tonen

ASCII, ANSI en Unicode

De Basis In de computer worden letters gerepresenteerd door numerieke codes. Als de computer een code van 100 (decimaal) tegenkomt, dan representeert dat een kleine 'd'. Er bestaat alleen nog wel onduidelijkheid over de code 250 en hier bestaat dan nogal wat wrijving. ASCII en ANSI Voor de Windows generatie, DOS gebaseerde systemen maakte gebruik van de ASCII karakterset (charset). Deze karakterset is een 7-bit standaard die bestaat sinds eind 1950. Het definieert 128 verschillende karakters, wat meer dan genoeg is voor het Nederlands of Engels: klein- en hoofdletters, punctuaties, nummers, control codes (control-c) en niet printbare codes zoals tab, return en backspace. Windows 3.x en later maken gebruik van de ANSI (American national Standards Institute) karakterset, welke 128 "uitgebreide" of bijkomende karaketers toevoegd. In de meeste ANSI fonts is bijvoorbeeld het uitgebreide karaketer (C) (copyright symbool) toegevoegd. ASCII en ANSI zijn goed te gebruiken zo

[SQL Server] varchar vs nvarchar

Bij het maken van een tabel in SQL Server 2008 heb je de mogelijkheid om een veld van het type varchar of nvarchar te voorzien. Wat is nu eigenlijk het verschil? Het verschil zit hem in het volgende: varchar Varchar heeft een maximum van 8000 tekens. Er wordt 1 byte per teken gereserveerd en wordt gebruikt om ASCII en ANSI in op te slaan. nvarchar Nvarchar neemt twee keer zoveel ruimte in als varchar. Dit komt omdat per teken twee bytes wordt gereserveerd en daarom kunnen er 4000 tekens worden opgeslagen. Dit type wordt gebruikt bij Unicode. Dus stel dat je een klantensite heb met invoerveleden waar wereldwijd gebruik van wordt gemaakt dan moet je gebruik maken van nvarchar. (n)char En dan is er ook nog (n)char. Deze string wordt opgevuld met spaties totdat de opgegeven lengte is bereikt.

[C#] Class serialiseren en deserialiseren

Enkel even een code dump deze keer: public void Serialize(Configuration c) { XmlSerializer serializer = new XmlSerializer( c.GetType() ); StreamWriter streamwrite = new StreamWriter("config.xml"); serializer.Serialize(streamwrite, this); streamwrite.Close(); } public static Configuration Deserialize() { FileInfo file = new FileInfo("config.xml"); if (file.Exists) { StreamReader reader = new StreamReader("config.xml"); XmlSerializer ser = new XmlSerializer(typeof(Configuration)); Configuration c = (Configuration)ser.Deserialize(reader); reader.Close(); return c; } else return null; }

[C#] Levenscyclus ASP.NET pagina

Bij het laden van een ASP.NET pagina treden er verschillende events op. Stap 1: Genereer de gecompileerde class De eerste stap van de levenscyclus is het genereren van een gecompileerde class die de aangevraagde pagina voorsteld. Zoals je weer bestaat een ASPX pagina uit een combinatie van een HTML en Server controls. Een dynamisch gecompileerde class is gegenereerd dat deze ASPX pagina representeerd. Deze gecompileerde class wordt dan opgeslagen in de "Tijdelijke ASp.NET bestanden" map. Zolang de ASPX pagina niet wordt aangepast worden toekomstige aanvragen voor deze ASPX pagina aangeboden door dezelfde gecompileerde class. Deze gecompileerde class bevat eigenlijk de geprogrammeerde definitie van de controls die zijn gedefinieerd op de ASPX pagina. PreInit(nieuew in ASP.NET 2.0) De levenscyclus van een pagina begint met het PreInit event. Dit is het enige event waar toegang (via code) tot master pages en themes zijn toegestaan. Dit event is niet recursief, dit betekent dat e

[C#] ViewState

Wat doet ViewState: Slaat waarden op per control, zoals een hashtable. Volgt veranderingen van een ViewState's geinitialiseerde status Serialiseert en deserialiseert opgeslagen data in verborgen form fields op de cliënt Zet automatisch de ViewState waarden waarden terug bij postbacks. 1. De ViewState slaat waarden op per control ViewState slaat waarden op zoals een hashtable dat ook doet. De ViewState heeft een index die bereikbaar is via een key van het type string. De index accepteert elk object als waarde: ViewState["Key1"] = 123.45am; // slaat een datum op ViewState["Key2"] = 132;// slaat een integer op ViewState["Key3"] = "hello world!"; // slaat een string op Eigenlijk is ViewState gewoon maar een naam. ViewState is een protected property die is gedefinieerd in de System.Web.UI.Control class. Hiervan erven alle controls zoals server controls, user controls en pages. Het type van de property is System.Web.UI.StateBag. Strict gesproken he

[C#] Object initialiseren binnen ListView

Om asp controls te benaderen die in je ListView zitten kan je deze niet benaderen zoals je gewend bent. Stel dat er in de ListView staat met als name lblDate, dan kan je deze in de codebehind niet als volgt aanspreken: lblData.Text = "Datum";. Dit komt omdat alle controls pas benaderbaar zijn nadat de DataBound heeft plaatsgevonden. Om lblData toch te kunnen benaderen kun je dit door het OnInt event aan te roepen: En in de codebehind: protected void lblDate_OnInit(object sender, EventArgs e) { ((Label)sender).Text = "Datum"; } Op deze manier wordt de text toch nog gezet en hoef je niet te loopen of findcontrol te gebruiken. Zelf vind ik dit de netste manier. Voor meer info: http://blogs.msdn.com/scothu/archive/2008/03/26/accessing-controls-in-listview-templates.aspx

[C#] Overerving of inheritance

Even wat basis aspecten over overervering (inheritance) in C#. Onderstaande code even om een beeld te krijgen hoe het ook alweer zat. Het is heel basis en vereist geen verdere uitleg denk ik: public class Parent { private string _waarde; public Parent(string waarde) { _waarde = waarde; Response.Write("Parent constructor MET parameter "); } public Parent() { _waarde = "default;"; Response.Write("Parent constructor zonder parameter"); } public void Print() { Response.Write(_waarde); } } public class Child : Parent { public Child() { Response.Write("Child constructor zonder parameter"); } } // Create en initialize Child object: Child child = new Child(); child.Print(); // Uitkomst Parent constructor zonder parameter Child constructor zonder parameter default Maar hoe zat het ook alweer als je nou de constructor van de parent aan wil roepen vanuit de Child? En hoe roep je nou methods aan vanuit de Child van de Parent? En hoe overschrijf j

[IIS] Site wordt niet geparsed / aangeroepen / geladen

Als je een site in IIS heb gehangen en hem vervolgens wilt benaderen en je krijgt de volgende (soortgelijke) melding: [Stacktrace] [NullReferenceException: Object reference not set to an instance of an object.] System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name) +349 System.Web.Hosting.ISAPIWorkerRequest.ReadRequestHeaders() +95 System.Web.Hosting.ISAPIWorkerRequest.GetKnownRequestHeader(Int32 index) +55 System.Web.HttpRequest.get_UserLanguages() +33 System.Web.HttpContext.UserLanguageFromContext() +32 System.Web.HttpContext.CultureFromConfig(String configString, Boolean requireSpecific) +75 System.Web.ThreadContext.SetRequestLevelCulture(HttpContext context) +8767807 System.Web.ThreadContext.Enter(Boolean setImpersonationContext) +247 System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext) +42 System.Web.ApplicationStepManager.ResumeSteps(Exception error) +120 Dan heb je waarschijnlijk IIS geïnstalleerd nadet je het .NET Framew