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
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> Rediger Forside Artikel</b> - <a href="default.asp?action=article&preview=true&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"> </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
%>
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
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.
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?