Kollade på http://www.pellesoft.se/login/tips/t_view4.asp?tid=1730. Tipset är ju snudd på genialiskt, ändå har folk gett den betyg runt 40%! Jag gav det en trea, inget innovativt där enligt min erfarenhet. Har inte sett den innan, och den är definitivt bättre än alla "Dela med fyra, dela med 100, dela med 400"-grejer. Vad skall man skriva i ett tips om det skall vara innovativt? Du har rätt på sätt och vis men om tipset i fråga redan är känt för betraktaren så måste man ju subjektivt bedöma tipsets innehåll. Jag bedömde det till medelmåtigt på grund av orsakerna: jag har använt det själv i många år, man har inte behov av det SÅ ofta och det är begränsat till språk med IsDate (eller liknande) fnktionen. Jag skulle skrivit det som en genrell funktion. Ett tips som vore guld är om användaren kan skriver ,(komma) eller .(punkt) Val utgår alltid att punkt är decimalseparator. Det kan man använda: Denna kod är inge snabb men den borde fungera rent generellt: Andreas tips är tilltalande att alltid använda .(punkt) En lite osäker och ganska ineffektiv metod kunde ju vara att göra en lista på vanliga avskiljare, >Tipset är ju snudd på genialiskt Ditt exempel ger fel för att val tar en sträng som arggument. Alltså görs din double om till sträng med aktuell lokal inställning. Det är därför man skall köra en replace på värdet innan det förs in i val funktionen. Det har du rätt i, dock så använder jag en maskeditbox när jag vill låta användare tilldela mig ett numeriskt värde. På den gamla goda tiden körde vi detta med listiga IF satser med SkottårKonstig bedömning av tips
Gör folk så för att jävlas, fattar ni inte hur det funkar, eller vad?
Själv gav jag den 5 direkt!Sv: Konstig bedömning av tips
Sv: Konstig bedömning av tips
Det ska ju vara små kodsnuttar, och inga tunga grejer...Sv: Konstig bedömning av tips
Därmed inte sagt att tipset är dåligt (en trea indikerar för mig medelmåttigt), ett bra tips enligt min syn är däremot [Prestanda optimering i kod.] som är generellt och kan användas till mycket. Men den enskilda bedömningen är som sagt subjektiv och borde inte syfta till att spegla den helhet som den samlade bedömningen gör...Sv: Konstig bedömning av tips
T.ex.
<code>
Function IsLeapYear(ByVal Value As Integer) As Boolean
IsLeapYear = Day(DateSerial(Value, 2, 29)) = 29
End Function
</code>
Vilket gör det lättre att implementera tipset i sina applikationer.Sv: Konstig bedömning av tips
som decimalavskiljare skall programmet räkna rätt i alla läge.
Dvs Val CSing CDbl och Format$ nån listig Ifsats ?Sv: Konstig bedömning av tips
<code>
Function ToNumber(ByVal Value As Variant) As Variant
ToNumber = Val(Replace(Value, ",", "."))
End Function
</code>
Kan ställa till problem om man använder sig av tusenavgränsare. Har för mig att någon inställning har komma som tusenavgränsare och punkt som decimal eller tvärtom.Sv: Konstig bedömning av tips
<code>
Function GetValue(s As String)
Dim i as integer, s2 as string, e as integer
s = trim(s)
for i = 1 to len(s)
if isnumeric(mid(s,i,1)) then
s2 = s2 & mid(s,i,1)
e = e + 1
else
e = 0
end if
Next i
GetValue = val(s2) / iif(e=0,1,(10 * e))
End Function
</code>Sv: Konstig bedömning av tips
Men då kommer strulet med Format$(--- ,--- ) enl ex nedan
Option Explicit
Private Sub Command1_Click()
Dim test As Double
test = Val(3.14159237 * 4)
Label1.Caption = Format$(test, "0.000")
test = 3.14159237 * 4
Label2.Caption = Format$(test, "0.000")
End SubSv: Konstig bedömning av tips
" ",
",",
".",
":",
osv. Sen kollar man hur många förekomster av varje tecken det är. Om det är fler än en, så kallar man det tusenavskiljare. Finns det exakt en av den så är det decimaltecken.
Finns det fler än två av tecknen är strängen felaktig, finns det mer än en som är tusenavskiljare är strängen felaktig. Är det inte 3 tecken mellan olika delar av tusenavskiljaren (och decimalpunkten) så är det felaktigt.
Finns det två som kan klassas som decimalpunkt, men ingen som tusenavskiljare är det odefinierat.
Eller så gör man två listor, en för tusen ("." " "), och en för decimal (";" ":" "," "."), och får lite större flexibilitet så.Sv: Konstig bedömning av tips
Njaaa If IsDate("2006-02-28") = True Then MsgBox "Skottår" blir också True mfl.Sv: Konstig bedömning av tips
Sv: Konstig bedömning av tips
Sv: Konstig bedömning av tips
Känner Ni vingslagen :-)
Ett år som är jämnt delbart med fyra
INTE är jämnt delbart med 100...
...om det INTE också är jämnt delbart med 400.
Således är 2000 ett skottår, men inte år 1900.