Manfred Skrevet 28. november 2005 Del Skrevet 28. november 2005 Jeg sitter her med et ganske tricky problem, som egentlig haster litt å finne ut av. Jeg har laget en applikasjon for et firma, og alt fungerer helt fint NESTEN overalt. Jeg klarte til slutt, etter å ha lånt den ene maskina dems (som de fikk feil på) og installert debugger på den (cordbg) hvor feilen ligger. MANGE steder i programmet bruker jeg funksjonen System.DateTime.Now.ToShortDateString(). Av en eller annen grunn returneres det på denne, og en annen maskin de har, absolutt ingenting fra den funksjonen, noe som lager en klikk fordi jeg bruker en .Substring på den senere. (Får en nusselig ArgumentOutOfRangeException) Noen som kan hjelpe til litt her? Hvorfor returnerer ikke ToShortDateString() noen ting? Forslag til en quickfix? Hva kan brukes i stedet? alternativet er at jeg henter ut dagens dato fra databasen liksom, men det blir også litt overkill i endel av sammenhengene. Lenke til kommentar
Gjakmarrja Skrevet 28. november 2005 Del Skrevet 28. november 2005 Forferdelig merkelig... vil no eg si.... Nei nei.. du kan vel bruke database tingen også skrive en overload sak så du slipper å endre på resten av koden kanskje... Eller så er det sikkert en fin API du kan bruke ( som enum windows ) Hva det glupt sagt.. eller må eg lengre ut på vidden med den? Lenke til kommentar
Manfred Skrevet 28. november 2005 Forfatter Del Skrevet 28. november 2005 Jeg vil gjerne vite hvorfor, og om det er en fornuftig fix på dette.Det er ikke alle funksjonene som bruker System.DateTime.Now som bruker databasen heller, så det blir litt overkill. Noen? :\ Lenke til kommentar
Moskus Skrevet 29. november 2005 Del Skrevet 29. november 2005 Bare et par forslag ut i luften: - Er det noen spesielle kjennetegn med disse maskinene? De er gamle, bruker Windows ME, har lite RAM, eller noe sånt. Selv har jeg dårlig erfaring med WinME og tildels Win98. - Har du prøvd å reinstallere Framework på disse maskinene? (Noen filer kan jo blir korrupte). Lenke til kommentar
Manfred Skrevet 29. november 2005 Forfatter Del Skrevet 29. november 2005 Det er WinXP på begge. Har reinstallert .net på den ene som jeg hadde her hjemme. Lenke til kommentar
j000rn Skrevet 12. desember 2005 Del Skrevet 12. desember 2005 Som argument til den kan du vel sette CultureInfo? Du kan også sette dette som default for hele applikasjonen. System.Globalization.CultureInfo.CurrentCulture = new System.Globalization.CultureInfo("noBK"); (culturestring'n er ganske sikkert feil...) Slik blir output'n fra disse funksjonene like samme hvilken maskin du kjører det på. Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Fancy... så hvis jeg helt i starten av applikasjonen legger inn den linjen, så vil System.DateTime funke? Lenke til kommentar
Moskus Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Det vil iallfall være større sannsynlighet for det, men jeg tror jeg ville satt den til engelsk. Jeg gjør det slik: Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US") 'Kode her 'Jeg må gjøre dette når jeg laster et Excel-regneark 'Så setter vi tilbake igjen System.Threading.Thread.CurrentThread.CurrentCulture = oldCI Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Hvorfor i all verden ville du satt den til engelsk? Lenke til kommentar
j000rn Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Hvorfor i all verden ville du satt den til engelsk? 5288309[/snapback] Smak og behag? Vel, hvis man skal gjøre det på den "riktige" måten så bør man ikke forandre på den, men heller bruke de overload funksjonene som tar cultureinfo som parameter. Hvis applikasjonen din er på norsk, kan det kanskje være lurt å sette CurrentCulture til norsk ved oppstart... CurrentCulture angir jo hvilket instillinger som skal bli brukt for å vise alt av datoer og tall. Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Men hva kan ha ført til at System.DateTime.Now.ToShortDateString() ikke har resturnert en dritt, egentlig? Lenke til kommentar
j000rn Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Men hva kan ha ført til at System.DateTime.Now.ToShortDateString() ikke har resturnert en dritt, egentlig? 5288739[/snapback] "Av en eller annen grunn returneres det på denne, og en annen maskin de har, absolutt ingenting fra den funksjonen, noe som lager en klikk fordi jeg bruker en .Substring på den senere. (Får en nusselig ArgumentOutOfRangeException)" Sikker på at den returnerer en tom string? ArgumentOutOfRangeException kan jo bety at den returnerer en string med forskjellig lengde enn du hadde regnet med... Tror også man kan sette opp(/"ødelegge") måten windows formaterer på til å bli en tom string ved å forandre på Regional Settings i Control Panel. (Du får prøve selv...) Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Jeg prøver det som er foreslått ved å sette CultureInfo manuelt, og se om det funker på de maskinene det krasjer på. Jeg har dessverre ingen av de tilgjengelig. de er ute hos min kunde. Lenke til kommentar
j000rn Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Jeg prøver det som er foreslått ved å sette CultureInfo manuelt, og se om det funker på de maskinene det krasjer på. Jeg har dessverre ingen av de tilgjengelig. de er ute hos min kunde. 5288908[/snapback] Eller... du kan bruke DateTime.Now.Year, .Month, .Day istedenfor å bruke .Substring() Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Funker ikke. Det er en funksjon som bl.a. sender med System.DateTime.Now.ToShortDateString() som argument til en annen funksjon som peller den fra hverandre. Lenke til kommentar
Moskus Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Da kan du jo bygge funksjonen selv. Private Function MyShortDate() as String Dim dt As Date = Now Return dt.Day & "." & dt.Month & "." & dt.Year End Function Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 ...hvis det hadde vært snakk om ett sted, ja... men det er snakk om i ca 40 filer... Lenke til kommentar
Moskus Skrevet 13. desember 2005 Del Skrevet 13. desember 2005 Det er da "Search and replace" er genialt. Bare huk av for å søke igjennom hele prosjektet. Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Poenget er at jeg gidder jo ikke det hvis det bare holder å sette globale verdier i starten av applikasjonen. Lenke til kommentar
Manfred Skrevet 13. desember 2005 Forfatter Del Skrevet 13. desember 2005 Det vil iallfall være større sannsynlighet for det, men jeg tror jeg ville satt den til engelsk. Jeg gjør det slik: Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US") 'Kode her 'Jeg må gjøre dette når jeg laster et Excel-regneark 'Så setter vi tilbake igjen System.Threading.Thread.CurrentThread.CurrentCulture = oldCI 5287950[/snapback] ve å bruke en-US klarte jeg jammen å fremkalle samme feilen på de maskinene som ikke har hatt denne feilen før hehe... Men hva i all verden er koden for bokmål da? no-NO, no-NOB, no-BM, no-BK, no-NOR... ingen av disse... noen som vet? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå