高分求解解决方案!!

tang 2005-04-25 09:45:29

下面这段代码功能:
产生一定数量的随机数据。如:t1=16 t2=1000
选中up项,则会生成1000个16位大写英文字母。
我想添加一项输入项如:inpt
如:inpt=ABCD0001时
输出为:
ABCD0001 ADG....P(16位)
.
.
.
ABCD1000 DTY...L(16位)
<HTML>
<TITLE>随机数产生</TITLE>
<%
T1=Trim(Request("T1")) '随机数位数
T2=Trim(Request("T2")) '随机数数量
UP=Trim(Request("C1")) '大写英文字母
LOW=Trim(Request("C2")) '小写英文字母
NUM=Trim(Request("C3")) '阿拉伯数字
nowtime=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)
DIM A,B,c(10000000)
Randomize

for j=0 to INT(T2)-1
B=""
FOR I=0 TO (INT(T1)-1)

IF UP<>"" AND LOW<>"" AND NUM="" THEN
A=INT(RND*58+65)
if A>90 and A<97 then
A=A+10
end if
END IF

IF UP<>"" AND LOW="" AND NUM="" THEN
A=INT(RND*26+65)
END IF

IF UP="" AND LOW<>"" AND NUM="" THEN
A=INT(RND*26+97)
END IF

IF UP<>"" AND LOW<>"" AND NUM<>"" THEN
A=INT(RND*75+48)
if A>90 and A<97 then
A=A+10
end if
if A>57 and A<65 then
A=A+10
end if
END IF

IF UP<>"" AND LOW="" AND NUM<>"" THEN
A=INT(RND*43+48)
if A>57 and A<65 then
A=A+10
end if
END IF

IF UP="" AND LOW<>"" AND NUM<>"" THEN
A=INT(RND*43+48)
if A>57 and A<97 then
A=INT(RND*26+97)
end if
END IF


IF UP="" AND LOW="" AND NUM<>"" THEN
A=INT(RND*10+48)
END IF

B=B&CHR(A)
NEXT
c(j)=b
next
set objfso=server.createobject("scripting.filesystemobject")
set objts=objfso.opentextfile(server.mappath("../rand/rand"&T1&"_"&T2&"_"&nowtime&".TXT"),2,true)
for z=0 to j
objts.writeline c(z)
next
%>
<BODY>
<A HREF="../rand/rand<%=T1%>_<%=T2%>_<%=nowtime%>.TXT">RAND<%=T1%>_<%=T2%>_<%=nowtime%></A>
</BODY>
</HTML>





...全文
269 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
fantiny 2005-04-27
  • 打赏
  • 举报
回复


你这里这样<input type="checkbox" name="C3" value="NUM">,value传递的值是num过去当然不行。

应当改为
<p>大写英文字母:<input type="checkbox" name="C1" value="True" checked="TRUE">  </p>
<p>小写英文字母:<input type="checkbox" name="C2" value="True"></p>
<p>阿拉伯数字  :<input type="checkbox" name="C3" value="True"></p>

不然你就把asp里面的request那几个项的判断改一下。这个应该懂吧?
tang 2005-04-27
  • 打赏
  • 举报
回复
我用你的页面测试是正确的。
唯一的不同是我这里第一个页面用的是checkbox选择的输出的数据类型:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>随机数产生工具</title>
</head>
<body>
<form method="POST" action="RND_CHECK.ASP" name ="FORM1">
<p>随机数位数:<input type="text" name="T1" size="20"></p>
<p>大写英文字母:<input type="checkbox" name="C1" value="UP" checked="TRUE">  </p>
<p>小写英文字母:<input type="checkbox" name="C2" value="LOW"></p>
<p>阿拉伯数字  :<input type="checkbox" name="C3" value="NUM"></p>
<p>随机数数量  :<input type="text" name="T2" size="20"></p>
<p>随机数起始值  :<input type="text" name="inpt" size="20"></p>
<p>   <input type="button" value="确认" name="OK" OnClick=Check()>     
</form>
<SCRIPT language=VBScript>
Sub Check()
str1 = Form1.T1.Value
str2 = Form1.T2.Value
str3 = Form1.T3.Value
If str1 = empty Then
window.alert "请输入随机数位数!"
Exit Sub
elseif str2 = empty then
window.alert "请输入随机数数量!"
Exit Sub
elseif str3 = empty then
window.alert "请输入随机数起始值!"
Exit sub
End If
Form1.Submit
End Sub
</SCRIPT>
</body>
</html>
fantiny 2005-04-27
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<style TYPE="TEXT/CSS">
<!--
td {font:9pt}
-->
</style>

</HEAD>

<BODY>
<div align="center">
<FORM METHOD=POST ACTION="radomize.asp">
<TABLE width=200 bgcolor="#cccccc">
<TR>
<TD>随机数数量:</TD><TD><INPUT TYPE="text" NAME="T2" value="1000"></TD>
</TR>
<TR>
<TD>随机数位数:</TD><TD><INPUT TYPE="text" NAME="T1" value="16"></TD>
</TR>
<TR>
<TD>大写  字母:</TD><TD><INPUT TYPE="text" NAME="C1" value="True"></TD>
</TR>
<TR>
<TD>小写  字母:</TD><TD><INPUT TYPE="text" NAME="C2" value="False"></TD>
</TR>
<TR>
<TD>阿拉伯数字:</TD><TD><INPUT TYPE="text" NAME="C3" value="False"></TD>
</TR>
<TR>
<TD>用戸  格式:</TD><TD><INPUT TYPE="text" NAME="inpt" value="ERT0001"></TD>
</TR>
<TR>
<TD align="center"><INPUT TYPE="reset" name="reset" value="reset"></TD>
<TD align="center"><INPUT TYPE="submit" name="submit" value="submit"></TD>
</TR>
</TABLE>
</FORM>
</div>
</BODY>
</HTML>

这个是我做测试的页面,你看看跟你前面的提交页面的那些表单名字是否是相同的。
tang 2005-04-27
  • 打赏
  • 举报
回复
我添加response.write(T1&"<br>")
显示的是空白。以前没有碰到过怎么回事?
是空白的一行。
fantiny 2005-04-27
  • 打赏
  • 举报
回复
<% Option Explicit %>
<HTML>
<head>
<TITLE>随机数</TITLE>
</head>
<BODY>
<%
Dim T1 '随机数位数
Dim T2 '随机数数量
Dim UP '大写英文字母
Dim LOW '小写英文字母
Dim NUM '阿拉伯数字
Dim nowtime '当前時間
Dim inpt '用戸輸入数字
Dim upperbound '随机数上限範囲
Dim lowerbound '随机数下限範囲
Dim i 'Loop用
Dim j 'Loop用
Dim k 'Loop用
Dim dl '随机数
Dim LenI 'Loop用
Dim Title '字符串前面表示
Dim Leninpt '用戸輸入字符串長度
Dim LenIntCount '
Dim LenstrTarget '
Dim strOne '
Dim strAll '
Dim strTitle '
Dim strSubinpt '
DIm strAddZero '
Dim strSplitOne '
Dim strSplitTwo '
Dim objfso '
Dim objts '

T1=Trim(Request("T1")) '随机数位数
T2=Trim(Request("T2")) '随机数数量
UP=Trim(Request("C1")) '大写英文字母
LOW=Trim(Request("C2")) '小写英文字母
NUM=Trim(Request("C3")) '阿拉伯数字
inpt=Trim(Request("inpt")) '用戸輸入数字

Response.Write ( T1 & "<br>" )
Response.Write ( T2 & "<br>" )
Response.Write ( UP & "<br>" )
Response.Write ( LOW & "<br>" )
Response.Write ( NUM & "<br>" )
Response.Write ( inpt & "<br>" )

''''''''''''''''' Just For Test '''''''''''''''''''''''''
'T1 = 16
'T2 = 1000
'UP = True
'LOW = False
'NUM = False
'inpt ="ERT0001"
''''''''''''''''' Just For Test '''''''''''''''''''''''''
Randomize

If UP = "True" then
'大写英文字母 ASCII 範囲
upperbound = 90
lowerbound = 65
ElseIf Low = "True" then
'小写英文字母 ASCII 範囲
upperbound = 122
lowerbound = 97
ElseIf NUM = "True" then
'阿拉伯数字 ASCII 範囲
upperbound = 57
lowerbound = 48
End If

strSplitOne = ""
strSplitTwo = ""

'字符串分析
Call SplitStr(inpt,strSplitOne,strSplitTwo)

For i=0 To T2 - 1
'字符串串接
Call FormatStr(T2,strSplitOne,Title,i)
strOne = ""
For j=0 To T1 - 1
'随机数生成
dl=Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
strOne = strOne & Chr(dl)
Next
strOne = strOne & vbCrlf
Response.Write ( Title & " " & strOne & "<br>" )
Next

Response.Write ( "Len(strSplitOne):" & Len(strSplitOne) & "<br>" )
Response.Write ( "strSplitOne:" & strSplitOne & "<br>" )
Response.Write ( "strSplitTwo:" & strSplitTwo & "<br>" )

nowtime=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)
Response.Write nowtime
'set objfso=server.createobject("scripting.filesystemobject")
'set objts=objfso.opentextfile(server.mappath("../rand/rand"&T1&"_"&T2&"_"&nowtime&".TXT"),2,true)
'objts.Write strAll
'objts.Close

'set objts = Nothing
'set objfso = Nothing

%>
</BODY>
</HTML>
<%
'字符串串接函数
Function FormatStr(ByVal intCount,ByRef strTarget,ByRef strTitle,ByVal intLoop)

LenIntCount = Len(intCount * 1)
LenStrTarget = Len(strTarget)

strAddZero = ""
'strAddZero = Cint(strTarget) + Cint(intLoop)
strAddZero = strTarget + intLoop * 1

For LenI = 0 To LenIntCount - Len(intLoop + 1) Step 1
If Len(strAddZero) < Len(intCount) Or Len(strAddZero) < LenStrTarget Then
strAddZero = "0" & "" & strAddZero
End If
Next
strTitle = strSplitTwo & strAddZero

End Function

'字符串分析函数
Function SplitStr(ByVal inpt,ByRef SplitOne,ByRef SplitTwo)

Leninpt = Cint(Len(inpt))
strSubinpt = ""

For LenI = 0 To Leninpt - 1
strSubinpt = Mid(inpt,LenI + 1,1)
For k = 0 To 10
If strSubinpt = Chr(48 + k) Then
SplitOne = SplitOne & strSubinpt
Else
SplitTwo = Mid(inpt,1,Leninpt - Len(SplitOne))
End If
Next
Next

End Function
%>

你把我后面注释掉的那几段
'set objfso=server.createobject("scripting.filesystemobject")
'set objts=objfso.opentextfile(server.mappath("../rand/rand"&T1&"_"&T2&"_"&nowtime&".TXT"),2,true)
'objts.Write strAll
'objts.Close

'set objts = Nothing
'set objfso = Nothing

注释去掉看行不行。当然其中的输出格式你自己还需要改一下。我电脑上不能用fso,所以没办法测试。
tang 2005-04-27
  • 打赏
  • 举报
回复
现在代码没有什么问题了,就是怎么改成保存为TXT格式的,或者告诉到那里查到学习资料。
fantiny 2005-04-26
  • 打赏
  • 举报
回复
'Cint' 是类型转换的时候出的问题。你搜索看看 RND_CHECK.ASP,行99 代码里面是那个然后看着修改。
可能是转换的变量里面包含有非数字的字符串。
-----------
后面的保存为txt格式的功能,你自己把以前的代码复制添上去稍微修改一下就可以了啊。要是这样都不会,我也没办法了。
tang 2005-04-26
  • 打赏
  • 举报
回复
我以前的代码是可以保存为txt格式就是这两列可以考到excel表中的”两列“中的。但是现在你的代码没有这个功能了。
我的代码能力不好。但是公司费的叫我改这东西。没有办法了!!
tang 2005-04-26
  • 打赏
  • 举报
回复
Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft VBScript 运行时错误 错误 '800a000d'

类型不匹配: 'Cint'

/RND_CHECK.ASP,行99

我把你设的初始值去掉,就有这个出错信息。怎么回事呢,就算提交相同的值也不行。
fantiny 2005-04-26
  • 打赏
  • 举报
回复
这样应该达到你要求了。拜托你看看我写的程序,把流程看懂。要学会自己改。
fantiny 2005-04-26
  • 打赏
  • 举报
回复
<% Option Explicit %>
<HTML>
<head>
<TITLE>随机数</TITLE>
</head>
<BODY>
<%
Dim T1 '随机数位数
Dim T2 '随机数数量
Dim UP '大写英文字母
Dim LOW '小写英文字母
Dim NUM '阿拉伯数字
Dim nowtime '当前時間
Dim inpt '用戸輸入数字
Dim upperbound '随机数上限範囲
Dim lowerbound '随机数下限範囲
Dim i 'Loop用
Dim j 'Loop用
Dim k 'Loop用
Dim dl '随机数
Dim LenI 'Loop用
Dim Title '字符串前面表示
Dim Leninpt '用戸輸入字符串長度
Dim LenIntCount '
Dim LenstrTarget '
Dim strOne '
Dim strAll '
Dim strTitle '
Dim strSubinpt '
DIm strAddZero '
Dim strSplitOne '
Dim strSplitTwo '

T1=Trim(Request("T1")) '随机数位数
T2=Trim(Request("T2")) '随机数数量
UP=Trim(Request("C1")) '大写英文字母
LOW=Trim(Request("C2")) '小写英文字母
NUM=Trim(Request("C3")) '阿拉伯数字
inpt=Trim(Request("inpt")) '用戸輸入数字

''''''''''''''''' Just For Test '''''''''''''''''''''''''
T1 = 16
T2 = 1000
UP = True
LOW = False
NUM = False
inpt ="ERT0001"
''''''''''''''''' Just For Test '''''''''''''''''''''''''
Randomize

If UP = True then
'大写英文字母 ASCII 範囲
upperbound = 90
lowerbound = 65
ElseIf Low = True then
'小写英文字母 ASCII 範囲
upperbound = 122
lowerbound = 97
ElseIf NUM = True then
'阿拉伯数字 ASCII 範囲
upperbound = 57
lowerbound = 48
End If

strSplitOne = ""
strSplitTwo = ""

'字符串分析
Call SplitStr(inpt,strSplitOne,strSplitTwo)

For i=0 To T2 - 1
'字符串串接
Call FormatStr(T2,strSplitOne,Title,i)
strOne = ""
For j=0 To T1 - 1
'随机数生成
dl=Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
strOne = strOne & Chr(dl)
Next
strOne = strOne & vbCrlf
Response.Write ( Title & " " & strOne & "<br>" )
Next

'Response.Write ( "strSplitOne:" & strSplitOne & "<br>" )
'Response.Write ( "strSplitTwo:" & strSplitTwo & "<br>" )

'set objfso=server.createobject("scripting.filesystemobject")
'set objts=objfso.opentextfile(server.mappath("../rand/rand"&T1&"_"&T2&"_"&nowtime&".TXT"),2,true)
'objts.Write strAll
'objts.Close

'set objts = Nothing
'set objfso = Nothing

%>
</BODY>
</HTML>
<%
'字符串串接函数
Function FormatStr(ByVal intCount,ByRef strTarget,ByRef strTitle,ByVal intLoop)

LenIntCount = Len(Cint(intCount))
LenStrTarget = Len(strTarget)

strAddZero = ""
strAddZero = Cint(strTarget) + Cint(intLoop)

For LenI = 0 To LenIntCount - Len(intLoop + 1) Step 1
If Len(strAddZero) <= Len(intCount) -1 Then
strAddZero = "0" & "" & strAddZero
End If
Next
strTitle = strSplitTwo & strAddZero

End Function

'字符串分析函数
Function SplitStr(ByVal inpt,ByRef SplitOne,ByRef SplitTwo)

Leninpt = Cint(Len(inpt))
strSubinpt = ""

For LenI = 0 To Leninpt - 1
strSubinpt = Mid(inpt,LenI + 1,1)
For k = 0 To 10
If strSubinpt = Chr(48 + k) Then
SplitOne = SplitOne & strSubinpt
Else
SplitTwo = Mid(inpt,1,Leninpt - Len(SplitOne))
End If
Next
Next

End Function
%>
tang 2005-04-26
  • 打赏
  • 举报
回复
fantiny你来了么??
fantiny 2005-04-26
  • 打赏
  • 举报
回复
还有可能是数据的数值超越Cint的最大界限,你把Cint去掉就可以了。
fantiny 2005-04-26
  • 打赏
  • 举报
回复
If UP = "True" then
'大写英文字母 ASCII 範囲
upperbound = 90
lowerbound = 65
ElseIf Low = "True" then
'小写英文字母 ASCII 範囲
upperbound = 122
lowerbound = 97
ElseIf NUM = "True" then
'阿拉伯数字 ASCII 範囲
upperbound = 57
lowerbound = 48
End If

这里判断的时候,如果是传过来的,就给True加上引号。

T1=Trim(Request("T1")) '随机数位数
T2=Trim(Request("T2")) '随机数数量
UP=Trim(Request("C1")) '大写英文字母
LOW=Trim(Request("C2")) '小写英文字母
NUM=Trim(Request("C3")) '阿拉伯数字
inpt=Trim(Request("inpt")) '用戸輸入数字

这里获取的变量先
Response.Write ( T1 & "<br>" )
Response.Write ( T2 & "<br>" )
Response.Write ( UP & "<br>" )
Response.Write ( LOW & "<br>" )
Response.Write ( NUM & "<br>" )
Response.Write ( inpt & "<br>" )
看看是不是正确的格式。如果不是,那么你需要在前面的页面用javascript控制一下。
tang 2005-04-25
  • 打赏
  • 举报
回复
没有人可以解决么?帮帮忙,分不够可以再加!!!!!
tang 2005-04-25
  • 打赏
  • 举报
回复
帮帮忙,急用!!
tang 2005-04-25
  • 打赏
  • 举报
回复
谢谢liuxiaoyi。
  • 打赏
  • 举报
回复
挺清楚也不难就是麻烦,在写东西,没人帮你的话,我写
fantiny 2005-04-25
  • 打赏
  • 举报
回复
你的语言真的比较难以理解。
tang 2005-04-25
  • 打赏
  • 举报
回复
怎么没有人回答,是不是我没有讲清楚???
加载更多回复(9)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧