airwolfMedlem sedan okt. 2003132 inlägg Jag har en kod som läser exif ur en bild.
Men ifall den inte hittar nåt ska case else spotta ur sig ett värde
det gör den inte av nån anledning.
Måste det finnas ett värde för att case else ska fungera?
Se nedanstående kod.
Ifall värdet är 7 då skickar den ut case else, men om värdet
är helt tomt skippar den case else.
Case 37383 'Metering Mode
strTemp = System.BitConverter.ToUInt16(objProp.Value, 0).ToString
Select Case strTemp
Case "1"
strMeteringMode = "Average"
Case "2"
strMeteringMode = "Center Weighted Ave"
Case "3"
strMeteringMode = "Spot"
Case "4"
strMeteringMode = "Multi-Spot"
Case "5"
strMeteringMode = "Pattern"
Case "6"
strMeteringMode = "Partial"
Case Else
strMeteringMode = "Other"
End Select
Case 37383 'Metering Mode
strTemp = System.BitConverter.ToUInt16(objProp.Value, 0).ToString
if (strTemp)
Select Case strTemp
Case "1"
strMeteringMode = "Average"
Case "2"
strMeteringMode = "Center Weighted Ave"
Case "3"
strMeteringMode = "Spot"
Case "4"
strMeteringMode = "Multi-Spot"
Case "5"
strMeteringMode = "Pattern"
Case "6"
strMeteringMode = "Partial"
Case Else
strMeteringMode = "Other"
End Select
else
strMeteringMode = "(None)"
endif
Kanske?
airwolfMedlem sedan okt. 2003132 inlägg Samma sak, ingenting skrivs ut
Jag tror följande är ditt problem: Bilden du försöker kolla har ingen meteringMode alls, alltså reagerar inte raden Case 37383, eftersom det inte alls finns något värde som har index 37383.
Detta kan du lätt kolla genom att lägga till msgbox "" direkt efter Case 37383
Visas ingen msgbox, så körs inte heller koden efteråt, och då är det inte konstigt att strMeteringMode inte får något värde.
airwolfMedlem sedan okt. 2003132 inlägg Hur kommer man förbi detta?
airwolfMedlem sedan okt. 2003132 inlägg Jag presenterar i form
<%=strMeteringMode%>
Man kanske skulle kunna sätta nån regel där ifall den är ingenting, skriv detta.
Nåt förslag?
Jagb tycker du ska sätta strMeteringMode (Och eventuella andra variabler som kan drabbas) till ett default-värde innan den yttre select'en.
strMeteringMode="(none)"
select case id_nånting
...
Case 37383 'Metering Mode
strTemp = System.BitConverter.ToUInt16(objProp.Value, 0).ToString
if (strTemp)
Select Case strTemp
Case "1"
strMeteringMode = "Average"
Case "2"
strMeteringMode = "Center Weighted Ave"
Case "3"
strMeteringMode = "Spot"
Case "4"
strMeteringMode = "Multi-Spot"
Case "5"
strMeteringMode = "Pattern"
Case "6"
strMeteringMode = "Partial"
Case Else
strMeteringMode = "Other"
End Select
else
strMeteringMode = "(None)"
endif
...
airwolfMedlem sedan okt. 2003132 inlägg Det gjorde saken biff!
strMeteringMode="Unknown"
Case 37383 'Metering Mode
strTemp = System.BitConverter.ToUInt16(objProp.Value, 0).ToString
Select Case strTemp
Case "1"
strMeteringMode = "Average"
Case "2"
strMeteringMode = "Center Weighted Ave"
Case "3"
strMeteringMode = "Spot"
Case "4"
strMeteringMode = "Multi-Spot"
Case "5"
strMeteringMode = "Pattern"
Case "6"
strMeteringMode = "Partial"
Case Else
strMeteringMode = "Other"
End Select
Kommentar...
Vet inte om du bara har klippt ut delar av källan, men att ha den direkt innan case på det viset som det ser ut nu är riskabelt, eftersom det förutsätter att case'n innan körs. Bättre är att ha det innan select istället.
airwolfMedlem sedan okt. 2003132 inlägg Du menar
Case 37383 'Metering Mode
strTemp = System.BitConverter.ToUInt16(objProp.Value, 0).ToString
strMeteringMode="Unknown"
Select Case strTemp
Case "1"
strMeteringMode = "Average"
Case "2"
strMeteringMode = "Center Weighted Ave"
Case "3"
strMeteringMode = "Spot"
Case "4"
strMeteringMode = "Multi-Spot"
Case "5"
strMeteringMode = "Pattern"
Case "6"
strMeteringMode = "Partial"
Case Else
strMeteringMode = "Other"
End Select
Då skriver den inte ut nånting
Nej! Innan den select case som "Case 37383" tillhör.