|
| Jeg giver op! (debugging af kode) Fra : Jens Rex |
Dato : 07-08-03 14:56 |
|
Jeg har siddet med det her i flere timer nu. Det kan være jeg har stirret mig
blind på det. Håber der er nogen der kan hjælpe.
Når jeg eksekverer nedenstående kode, så havner serveren i hvad der ligner et
uendeligt loop. Jeg kan simpelt hen ikke regne ud hvad der går galt.
Selve hsl2rgb funktionen, har jeg fået til at virke. Men lige så snart jeg
prøver at bruge den i et loop, så går det galt.
<%Option Explicit%>
<%
'test-kode der skal generere en farveskala, baseret på 2 tilfældige tal for hue
og saturation, som skaleres via luminans
Dim hRandom,sRandom,count,m1,m2,r,g,b,h,s,l
Randomize
'generer to tilfældige tal til hue og saturation
hRandom = Int(Rnd*239+1)
sRandom = Int(Rnd*239+1)
For count = 100 To 200 Step 10
'luminans skal gå fra 100 til 200 i steps på 10
hsl2rgb hRandom, sRandom, count, r, g, b
' funktion der omregner HSL værdier til RGB som CSS kan forstå. RGB værdier
returneres til variablerne r, b og g.
Response.Write "<div style=""width: 100px; height: 50px;
background-color: rgb(" & Int(r) & "," & Int(g) & "," & Int(b) &
")""> </div>" & vbcrlf
'har laves en simpel farvet bjælke baseret på ovenstående beregninger
Next
'nedenstående kode, som jeg har fundet på nettet, var oprindeligt til VB, men
har jeg skrevet om til ASP. Kan muligvis være kilden til problemet, selvom jeg
ikke lige kan se hvordan/hvorfor. Det er den funktion der omregner fra HSL til
RGB.
Sub hsl2rgb(h, s, l, r, g, b)
h = h / 240
s = s / 240
l = l / 240
If s = 0 Then
r = l * 255
g = l * 255
b = l * 255
Exit Sub
End If
If l < 0.5 Then
m2 = l * (1 + s)
Else
m2 = l + s - l * s
End If
m1 = 2 * l - m2
r = HueToRGB(m1, m2, h + 1 / 3) * 255
g = HueToRGB(m1, m2, h) * 255
b = HueToRGB(m1, m2, h - 1 / 3) * 255
End Sub
Function HueToRGB(m1, m2, h )
If (h < 0) Then h = 1 + h
If (h > 1) Then h = h - 1
If (6 * h < 1) Then
HueToRGB = (m1 + (m2 - m1) * h * 6)
ElseIf (2 * h < 1) Then
HueToRGB = m2
ElseIf (3 * h < 2) Then
HueToRGB = (m1 + (m2 - m1) * ((2 / 3) - h) * 6)
Else
HueToRGB = m1
End If
End Function
%>
--
Der er ingen tal i min e-mail adresse.
| |
Dcasso (07-08-2003)
| Kommentar Fra : Dcasso |
Dato : 07-08-03 16:57 |
|
En lille ting og jeg tager sikkert bare fejl, men alligevel...
Ved ikke lige, men sender man i ASP som byref eller byval, for hvis
det er byreft, kunne det tænkes at l = l / 240 medfører at count
ændres.
Og altså prøv at ændre l til højre til et andet samt også i
funktionstitlen.
Som sagt, et meget stort skud i tågen.
Dennis
On Thu, 07 Aug 2003 15:55:31 +0200, Jens Rex
<jens2000@jensrex2000.net> wrote:
>Jeg har siddet med det her i flere timer nu. Det kan være jeg har stirret mig
>blind på det. Håber der er nogen der kan hjælpe.
>
>Når jeg eksekverer nedenstående kode, så havner serveren i hvad der ligner et
>uendeligt loop. Jeg kan simpelt hen ikke regne ud hvad der går galt.
>
>Selve hsl2rgb funktionen, har jeg fået til at virke. Men lige så snart jeg
>prøver at bruge den i et loop, så går det galt.
>
><%Option Explicit%>
><%
>
>'test-kode der skal generere en farveskala, baseret på 2 tilfældige tal for hue
>og saturation, som skaleres via luminans
>
>Dim hRandom,sRandom,count,m1,m2,r,g,b,h,s,l
>
>Randomize
>
>'generer to tilfældige tal til hue og saturation
>hRandom = Int(Rnd*239+1)
>sRandom = Int(Rnd*239+1)
>
>For count = 100 To 200 Step 10
>'luminans skal gå fra 100 til 200 i steps på 10
>
> hsl2rgb hRandom, sRandom, count, r, g, b
>' funktion der omregner HSL værdier til RGB som CSS kan forstå. RGB værdier
>returneres til variablerne r, b og g.
>
> Response.Write "<div style=""width: 100px; height: 50px;
>background-color: rgb(" & Int(r) & "," & Int(g) & "," & Int(b) &
>")""> </div>" & vbcrlf
>'har laves en simpel farvet bjælke baseret på ovenstående beregninger
>Next
>
>
>
>'nedenstående kode, som jeg har fundet på nettet, var oprindeligt til VB, men
>har jeg skrevet om til ASP. Kan muligvis være kilden til problemet, selvom jeg
>ikke lige kan se hvordan/hvorfor. Det er den funktion der omregner fra HSL til
>RGB.
>
>Sub hsl2rgb(h, s, l, r, g, b)
> h = h / 240
> s = s / 240
> l = l / 240
>
> If s = 0 Then
> r = l * 255
> g = l * 255
> b = l * 255
> Exit Sub
> End If
>
> If l < 0.5 Then
> m2 = l * (1 + s)
> Else
> m2 = l + s - l * s
> End If
> m1 = 2 * l - m2
>
> r = HueToRGB(m1, m2, h + 1 / 3) * 255
> g = HueToRGB(m1, m2, h) * 255
> b = HueToRGB(m1, m2, h - 1 / 3) * 255
>End Sub
>
>Function HueToRGB(m1, m2, h )
> If (h < 0) Then h = 1 + h
> If (h > 1) Then h = h - 1
> If (6 * h < 1) Then
> HueToRGB = (m1 + (m2 - m1) * h * 6)
> ElseIf (2 * h < 1) Then
> HueToRGB = m2
> ElseIf (3 * h < 2) Then
> HueToRGB = (m1 + (m2 - m1) * ((2 / 3) - h) * 6)
> Else
> HueToRGB = m1
> End If
>End Function
>
>%>
| |
Jens Rex (07-08-2003)
| Kommentar Fra : Jens Rex |
Dato : 07-08-03 21:08 |
|
On Thu, 07 Aug 2003 17:56:33 +0200, Dcasso wrote:
>En lille ting og jeg tager sikkert bare fejl, men alligevel...
>
>Ved ikke lige, men sender man i ASP som byref eller byval, for hvis
>det er byreft, kunne det tænkes at l = l / 240 medfører at count
>ændres.
>
>Og altså prøv at ændre l til højre til et andet samt også i
>funktionstitlen.
>
>Som sagt, et meget stort skud i tågen.
Hmm, jeg er ikke helt med. Hvad foreslår du præcist at jeg ændrer.
Jeg fornemmer at du er inde på noget af det rigtige med at count ændres, for jeg
har set på det output dem af og til når at sende, at tallene er helt hen i
skoven.
--
Der er ingen tal i min e-mail adresse.
| |
Dcasso (07-08-2003)
| Kommentar Fra : Dcasso |
Dato : 07-08-03 22:06 |
|
>Jeg fornemmer at du er inde på noget af det rigtige med at count ændres, for jeg
>har set på det output dem af og til når at sende, at tallene er helt hen i
>skoven.
Sub hsl2rgb(h, s, l, r, g, b)
h = h / 240
s = s / 240
l = l / 240
I linie 3 ændrer du jo værdien på l og hvis asp kører med byref burde
den således også ændre count
hurtigste løsning burde være:
Sub hsl2rgb(h, s, lx, r, g, b)
h = h / 240
s = s / 240
l = lx / 240
så gemmer man jo i en ny variabel og derved ændres den oprindelige
ikke
men som sagt et forslag kan ik garantere en løsning
mvh
Dennis
| |
Jens Rex (07-08-2003)
| Kommentar Fra : Jens Rex |
Dato : 07-08-03 22:20 |
|
On Thu, 07 Aug 2003 23:05:44 +0200, Dcasso wrote:
>Sub hsl2rgb(h, s, lx, r, g, b)
> h = h / 240
> s = s / 240
> l = lx / 240
>
>så gemmer man jo i en ny variabel og derved ændres den oprindelige
>ikke
>
>men som sagt et forslag kan ik garantere en løsning
Spot on. Du er dagens mand.
Det var der det gik galt.
Jeg måtte lige rette:
Sub hsl2rgb(hx, sx, lx, r, g, b)
h = hx / 240
s = sx / 240
l = lx / 240
Nu virker det som det skal.
Tjek http://www.fabul.dk/colors2.asp for en herlig random genereret farveskala.
Nu kan jeg komme videre med min originale plan.
Tak igen.
--
Der er ingen tal i min e-mail adresse.
| |
Torben Brandt (07-08-2003)
| Kommentar Fra : Torben Brandt |
Dato : 07-08-03 23:39 |
|
Jens Rex wrote:
> Dcasso wrote:
>
>>Sub hsl2rgb(h, s, lx, r, g, b)
>> h = h / 240
>> s = s / 240
>> l = lx / 240
>>
>>så gemmer man jo i en ny variabel og derved ændres den oprindelige
>>ikke men som sagt et forslag kan ik garantere en løsning
>
> Jeg måtte lige rette:
>
> Sub hsl2rgb(hx, sx, lx, r, g, b)
> h = hx / 240
> s = sx / 240
> l = lx / 240
Vil tro at du kunne have rettet
Sub hsl2rgb(h, s, l, r, g, b)
til
Sub hsl2rgb(ByVal h, ByVal s, ByVal l, ByVal r, ByVal g, ByVal b)
for så overføres kun _værdien_ af variablen, og ikke _hele_variablen_,
og dermed rettes den ikke udenfor funktionen.
Det var det Dcasso snakkede om (ByRef er default i VBS/ASP).
PS Jeg var lige ved at svare på dit oprindelige indlæg fra 06.35, men
problemet var jo løst. Fortsæt gerne i samme tråd, hvis det er samme
problem en anden gang :)
mvh Torben
| |
Jens Rex (08-08-2003)
| Kommentar Fra : Jens Rex |
Dato : 08-08-03 00:33 |
|
Det færdige resultat kan nu ses på:
http://www.fabul.dk/
Det ser pænsest ud i Mozilla, da den understøtter PNG med alpha transparency.
Jeg har lavet prikkerne antialiased på den måde, men det vil IE ikke være med
til.
--
Der er ingen tal i min e-mail adresse.
| |
Jørn Andersen (08-08-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 08-08-03 07:43 |
|
On Fri, 08 Aug 2003 01:32:41 +0200, Jens Rex
<jens2000@jensrex2000.net> wrote:
>Det færdige resultat kan nu ses på:
>
> http://www.fabul.dk/
>
>Det ser pænsest ud i Mozilla, da den understøtter PNG med alpha transparency.
>Jeg har lavet prikkerne antialiased på den måde, men det vil IE ikke være med
>til.
Det ser fancy ud
Prøv lige at teste i Opera - hos mig går det galt fra det tredje
bogstav og frem - ???
Men bortset fra det, så synes jeg det er et flot eksempel på en
utraditionel anvendelse af ASP!
--
Jørn Andersen,
Brønshøj
| |
Jens Rex (08-08-2003)
| Kommentar Fra : Jens Rex |
Dato : 08-08-03 15:53 |
|
On Fri, 08 Aug 2003 08:42:57 +0200, Jørn Andersen wrote:
>Prøv lige at teste i Opera - hos mig går det galt fra det tredje
>bogstav og frem - ???
Det ser ud til at virke fint her. Bruger ikke Opera normalt, men jeg hentede den
nyeste version jeg kunne finde, og der er ikke umiddelbart nogen problemer.
Dog identificerer Opera som standard sig selv som IE6, og det er lidt fjollet.
Har nemlig slået antialiasing med alpha-transperante PNG'er fra for IE, fordi
den ikke fatter det, men det gør Opera (og de fleste andre browsere jeg kan
komme i tanker om). Men hvis man slår det fra (id som Opera) er der ingen
problemer.
Dog renderes siden lidt sært. Der er ingen vertikale mellemrum mellem prikkerne.
Skal jeg vidst lige kigge lidt på.
>Men bortset fra det, så synes jeg det er et flot eksempel på en
>utraditionel anvendelse af ASP!
Ja, det er jo ikke noget man umiddelbart kan bruge til noget, men det var
interessant at udvikle (og frustrerende til tider).
--
Der er ingen tal i min e-mail adresse.
| |
Lasse Reichstein Nie~ (08-08-2003)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 08-08-03 20:11 |
|
Jens Rex <jens2000@jensrex2000.net> writes:
> Dog identificerer Opera som standard sig selv som IE6, og det er
> lidt fjollet.
Opera7 identificerer sig som standard som noget der *kan* forveksles
med IE6, men kun hvis man ikke kigger ordentligt efter.
IE6 siger:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Opera siger:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.20 [en]
Jeg vil sige at din browserdetektering ikke er god nok. Sådan nogen er
også et konstant besvær at holde ved lige. :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL: http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Jens Rex (08-08-2003)
| Kommentar Fra : Jens Rex |
Dato : 08-08-03 20:53 |
|
On 08 Aug 2003 21:10:59 +0200, Lasse Reichstein Nielsen wrote:
>Jeg vil sige at din browserdetektering ikke er god nok. Sådan nogen er
>også et konstant besvær at holde ved lige. :)
Arg, jeg hader browser detection. Det er noget rod.
Lige nu checker den bare efter "MSIE". Kan godt være jeg skal checke efter Opera
også.
--
Der er ingen tal i min e-mail adresse.
| |
Lasse Reichstein Nie~ (08-08-2003)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 08-08-03 23:10 |
| | |
|
|