Avatar billede daniel_d Nybegynder
27. september 2002 - 23:38 Der er 6 kommentarer og
2 løsninger

Hvordan undgår man at konstanterne bliver redefined ???

Jeg kører et aspscript hvor jeg anvender en select case og har en 5-6 forskellige cases. Virker fint nok. Problemet opstod da jeg skulle bruge nogle konstanter i forbindelse med en lille funktion. KOnstanterne skal bruges i flere af casene og her er problemet. Det vil den ikke acceptere og kommer med denne fejlmeddelelse:

Microsoft VBScript compilation error '800a0411'

Name redefined

Hvad kan man gøre. Er der en funktion man kan skrive i enden af hver case som nulstiller eller sletter alle konstanter?

Egentlig forstår jeg ikke problemet opstår idet at jeg troede at hver case var en funktion for sig og altså ikke imiddelbart havde noget med hinanden at gøre.

Kan nogen gøre det mere lyst for mig ?
med venlig hilsen
Daniel Duvald
Avatar billede excession Nybegynder
27. september 2002 - 23:44 #1
kan du ikke lige komme med koden så vi kan se hvad der sker
Avatar billede eagleeye Praktikant
27. september 2002 - 23:47 #2
Cases er en del af koden og du kan godt hvade flere cases som bruge de samme konstanter. Men lidt kode ville hjælpe.
Avatar billede daniel_d Nybegynder
27. september 2002 - 23:48 #3
øhhh okay - det er lidt forvirrende men prøver.

Jeg poster kun 1 case idet der står det samme i de andre der hvor problemet er.

først en case og så includefilen med konstanterne:
<%    Case "forside" %>
        <%
        Dim myForsideArticle
        Set myForsideArticle = GetForsideArticle(Request.QueryString("ID"))
        %>
        <p><font size="2"><b>&nbsp;Rediger Forside Artikel</b> - <a href="default.asp?action=article&amp;preview=true&amp;ID=<%=Request.QueryString("ID") %>" target="_blank">Se Artiklen</a></font></p>
        <form method="post" action="Admin_Artikler.asp?action=updateForside" name="frmRichText" onsubmit="return submit_richtext();">
        <table width="100%" align="center" border="0">
            <tr>
                <td align="right" style="border: 1 solid #000000; padding: 2" bgcolor="#99CCFF" valign="top">Topbillede:
                </td>
                <td width="0%" height="0%" style="border: 1 solid #000000" bgcolor="#99CCFF" valign="middle">
                    <!-- #include file="Editor_Select_Topbillede.asp" -->
                <% If myForsideArticle("Topbillede")="" Then %>                   
                  <SELECT name="Topbillede">
                    <OPTION SELECTED>Vælg Topbillede</OPTION>
                    <% For i = 0 To fileCount %>
                    <% If IsImageFile(theFiles(i)(0)) Then %>
                    <OPTION value="<%=theFiles(i)(0) %>" name="Topbillede"><%=theFiles(i)(0) %></OPTION>
                    <% End If %>
                    <% Next %>                 
                  </SELECT>
                <% Else %>
                  <SELECT name="Topbillede">
                    <OPTION SELECTED Value="<%=myForsideArticle("Topbillede")%>"><%=myForsideArticle("Topbillede")%></OPTION>
                    <% For i = 0 To fileCount %>
                    <% If IsImageFile(theFiles(i)(0)) Then %>
                    <OPTION value="<%=theFiles(i)(0) %>" name="Topbillede"><%=theFiles(i)(0) %></OPTION>
                    <% End If %>
                    <% Next %>                 
                  </SELECT>
                  <% End If %>
                </td>
                <td rowspan="3" width="100%" style="border: 1 solid #000000" bgcolor="#99CCFF" valign="top">&nbsp;</td>               
            </tr>
            <tr>               
                <td align="right" style="border: 1 solid #000000; padding: 2" bgcolor="#99CCFF" valign="top">Titel:</td>
                <td width="0%" style="border: 1 solid #000000" bgcolor="#99CCFF"><input type="text" name="title" size="70" value="<%=myForsideArticle("title") %>" style="border: 1 dashed #000000" maxlength="20"></td>
            </tr>
            <tr>
                <td align="right" style="border: 1 solid #000000; padding: 2" bgcolor="#99CCFF" valign="top">Resume:</td>
                <td width="0%" style="border: 1 solid #000000" bgcolor="#99CCFF"><textarea name="abstract" rows="5" cols="60" style="border: 1 dashed #000000"><%=Trim(myForsideArticle("abstract")) %></textarea></td>
            </tr>
            <tr>
                <td align="right" style="border: 1 solid #000000; padding: 2" bgcolor="#99CCFF" valign="top">Artikel:</td>
                <td colspan="2">
                    <!-- #include file="inc_richtexteditor_forside.asp" -->
                    <input type="hidden" value name="article">
                </td>
            </tr>
            <tr>
                <td align="right"><input type="hidden" name="ID" value="<%=Request.QueryString("ID") %>"><input type="submit" name="submit" value="Gem Artikel"></form></td>
                <td colspan="2"><form method="post" action="Admin_Artikler.asp?category=<%=CurrentCategory%>" name="frmCancel"><input type="submit" name="submit" value="Annuller"></form></td>
            </tr>
        </table>




og her includefilen:


<script language="JavaScript">
function SelectImage(ImageName, Justification)
    {
    if (Justification == "")
        {
        var imglink = "<img src='" + ImageName + "' border='0'>";
        }
    if (Justification == "left")
        {
        var imglink = "<img align='left' src='" + ImageName + "' border='0'>";
        }
    if (Justification == "right")
        {
        var imglink = "<img align='right' src='" + ImageName + "' border='0'>";
        }
    var placewhere = window.opener.idContent.document.selection.createRange();
    placewhere.pasteHTML(imglink);
    placewhere.select();
    //window.opener.cmdExec("InsertImage",ImageName);
    //window.opener.idContent.document.execCommand('InsertImage',"", ImageName);
    self.close();
    }
</script>

<%
        If (LCase(Request.QueryString("filetype")) = "images" Or LCase(Request.QueryString("filetype")) = "") And Request.QueryString("folder") = "" Then
            directory = "Images/Topbilleder/"
            parentdirectory = "../"
        Else
            directory = Request.QueryString("folder")
            parentdirectory = Left(Request.QueryString("folder"), InStrRev(Request.QueryString("folder"), "/", Len(Request.QueryString("folder")) - 1))
        End If


        CONST FILE_NAME = 0
        CONST FILE_EXT = 1
        CONST FILE_TYPE = 2
        CONST FILE_SIZE = 3
        CONST FILE_CREATED = 4
        CONST FILE_MODIFIED = 5
        CONST FILE_ACCESSED = 6

        req = Request("sortBy")
        If Len(req) < 1 Then sortBy = 0 Else sortBy = CInt(req)
        req = Request("priorSort")
        If Len(req) < 1 Then priorSort = -1 Else priorSort = CInt(req)

        If sortBy = priorSort Then
            reverse = true
            priorSort = -1
        Else
            reverse = false
            priorSort = sortBy
        End If


        path = Server.MapPath(DIRECTORY)
        URLPath = Replace(directory, "../", "")

        Set fso = CreateObject("Scripting.FileSystemObject")
        Set theCurrentFolder = fso.GetFolder(path)
        Set curFiles = theCurrentFolder.Files
        Set curSubDirs = theCurrentFolder.SubFolders


        Dim theFiles( )
        ReDim theFiles( 500 )
        currentSlot = -1

        For Each fileItem in curFiles
            fname = fileItem.Name
            fext = InStrRev( fname, "." )
            If fext < 1 Then fext = "" Else fext = Mid(fname,fext+1)
            ftype = fileItem.Type
            fsize = fileItem.Size
            fcreate = fileItem.DateCreated
            fmod = fileItem.DateLastModified
            faccess = fileItem.DateLastAccessed
            currentSlot = currentSlot + 1
            If currentSlot > UBound( theFiles ) Then
                ReDim Preserve theFiles( currentSlot + 99 )
            End If

            theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess)
        Next

        For Each fileItem in curSubDirs
            fname = fileItem.Name
            If Left(fname, 1) <> "_" Then
                fext = InStrRev( fname, "." )
                If fext < 1 Then fext = "" Else fext = Mid(fname,fext+1)
                ftype = fileItem.Type
                fsize = fileItem.Size
                fcreate = fileItem.DateCreated
                fmod = fileItem.DateLastModified
                faccess = fileItem.DateLastAccessed
                currentSlot = currentSlot + 1
                If currentSlot > UBound( theFiles ) Then
                    ReDim Preserve theFiles( currentSlot + 99 )
                End If

                theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess)
            End If
        Next

        fileCount = currentSlot
        ReDim Preserve theFiles(currentSlot)
       
        If fileCount > 0 Then

            If VarType(theFiles(0)(sortBy)) = 8 Then
                If reverse Then kind = 1 Else kind = 2
            Else
                If reverse Then kind = 3 Else kind = 4
            End If

            For i = fileCount TO 0 Step -1
                minmax = theFiles( 0 )( sortBy )
                minmaxSlot = 0
                For j = 1 To i
                    Select Case kind
                    Case 1
                        mark = (strComp( theFiles(j)(sortBy), minmax, vbTextCompare ) < 0)
                    Case 2
                        mark = (strComp( theFiles(j)(sortBy), minmax, vbTextCompare ) > 0)
                    Case 3
                        mark = (theFiles( j )( sortBy ) < minmax)
                    Case 4
                        mark = (theFiles( j )( sortBy ) > minmax)
                    End Select

                    If mark Then
                        minmax = theFiles( j )( sortBy )
                        minmaxSlot = j
                    End If
                Next
                If minmaxSlot <> i Then
                    temp = theFiles( minmaxSlot )
                    theFiles( minmaxSlot ) = theFiles( i )
                    theFiles( i ) = temp
                End If
            Next
        End If
        %>
Avatar billede daniel_d Nybegynder
27. september 2002 - 23:49 #4
Problemet o casen er omkring:

                  <SELECT name="Topbillede">
                    <OPTION SELECTED>Vælg Topbillede</OPTION>
                    <% For i = 0 To fileCount %>
                    <% If IsImageFile(theFiles(i)(0)) Then %>
                    <OPTION value="<%=theFiles(i)(0) %>" name="Topbillede"><%=theFiles(i)(0) %></OPTION>
                    <% End If %>
                    <% Next %>                 
                  </SELECT>

Måske lidt nemmere at se sådan
Avatar billede daniel_d Nybegynder
27. september 2002 - 23:53 #5
Har fundet problemet. Havde sat includefilen i hver case... Det skal man jo ikke. Jubii det virker
Avatar billede eagleeye Praktikant
27. september 2002 - 23:54 #6
case "opret"

  KODE_1 HER

case "slet"

  KODE_2 HER

end case


KODE_1 og KODE_2 er i princippet i samme kode så hvis man definere konstanter i både KODE_1 og KODE_2 og de har samme nanv så kommer fejlen.
Man skal definere konstanter uden for
Select Case variablenavn.
Avatar billede daniel_d Nybegynder
27. september 2002 - 23:59 #7
Det er nemlig det. Men nogengang når det går stærkt og man er træt tænker man ikke så langt.

I princippet kan man jo sige at der er tale om globle konstanter, hvorfor de ikke skal angives i hver funktion eller i dette tilfælde i hver case.

Eagleeue - du kom jo med det rette svar. Jeg havde dog fundet ud af det selv først, men hvad skal vi sige. er den 30 værd - ok?
Avatar billede eagleeye Praktikant
28. september 2002 - 00:02 #8
Jamen det kan vi godt sige :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester