Loading...
X

Koden betydde nåt annat förr

Stötte på en intressant grej på jobbet i veckan. Uppdaterade ett projekt från .NET Framework 3.5 till 4.0 och felmeddelanden började att visa sig…Nooo, vad har jag gjort nu?! Bara att ta itu med problemet.

Jag startade en virtuell miljö där jag körde den gamla koden i .NET 3.5 med Visual Studio 2008 och det uppgraderade projektet i min vanliga miljö med Visual Studio 2010. Därefter satte jag ut ett antal breakpoints och felsökte mig fram till en ArrayList innehållandes en sträng: [Data_Status]='{1}’

I dotNet 3.5 gjordes arrayen om till ([Data_Status]='{1}’) genom koden Return "(" & String.Join(" OR ", arr.ToArray(GetType(String))) & ")". I dotNet 4 blev resultatet (System.String[]). ArrayList.ToString() returnerar alltså inte alls samma sak här. Aja, lätt fixat genom att loopa igenom arrayen istället…men då kom nästa problem som jag fick ägna lite mer tid åt: Denna sträng skulle anges som värde för en DataView.RowFilter. Felmeddelandet sa att hakparentéserna var ogiltiga. Efter att ha snöat in på regular expressions och annat med mer eller mindre kvalificerade gissningar blev lösningen att helt enkelt att ta bort hakparentéserna. Varför man ändrat på detta vet jag inte men jag tror att det har med att man nu kan indikera att koden innehåller regular expressions. Om någon har en vettig försklaring så skulle det vara kul om du hörde av dig. Nu kan jag bara konstarera att koden betydde nåt annt förr.

 

Leave Your Observation

E-postadressen publiceras inte. Obligatoriska fält är märkta *