'Programming/VB'에 해당되는 글 18건
- 2008.11.17 vb 서브폴더 구하기
- 2008.11.17 vb 이미지를 불러와 가로, 세로크기를 구한다.
- 2008.11.17 vb 복호화
- 2008.11.17 vb 암호화
- 2008.11.17 vb php의 ceil() 과 같은 기능을 한다.
- 2008.11.17 vb table tag안에 br을 제거한다.
- 2008.11.17 vb nl2br() 구현
- 2008.11.17 vb page번호 출력
- 2008.11.17 vb 페이지번호나 레코드번호 값을 받아 페이지리스트 출력
- 2008.11.17 vb - Quick Sort
' ---------------------------------------------
' 서브폴더 구하기(재귀호출)
' 함수사용전에 전역변수로 fso, path가 선언되 있어야 한다.
' strFld를 리턴한다.
' vb Script에서는 배열의 크기가 자동으로 증가되지 않기 때문에
' vbCrLf를 구분자로 사용해서 문자열로 리턴함.
' ---------------------------------------------
function getSubFolder(fso, path, strFld, depth)
Dim fld, sfld, f, fld1, sfld1, files
if not isObject(fso) then
getSubFolder = "fso가 선언되지 않았습니다."
Exit function
end if
set fld = fso.getfolder(path)
set sfld = fld.subfolders
for each f in sfld
set fld1 = fso.getfolder(f.path)
set files = fld1.files
set sfld1 = fld1.subfolders
if Len(strFld) > 0 then strFld = strFld & vbCrLf
strFld
= strFld & depth & "|" & f.name & "|" & f.path
& "|" & files.count & "|" & sfld1.count
if sfld1.count > 0 then Call getSubFolder(fso, f.path, strFld, depth+1)
next
getSubFolder = strFld
end function
' ---------------------------------------------------
' 이미지를 불러와 가로, 세로크기를 구한다.
' ---------------------------------------------------
function getImageSize(imgPath)
Dim pic, picWH(1)
' LoadPicture를 지원하지 않는 서버가 있는데..
' 이유는 모르겠다.
On Error Resume Next
set pic = LoadPicture(imgPath)
if Err.Number > 0 then
response.write err.number & ": " & err.description
picWH(0) = 500 ' set default value
picWh(1) = 500
getImageSize = picWH
exit function
end if
picWH(0) = CLng(CDbl(pic.Width) * 24 / 635)
picWH(1) = CLng(CDbl(pic.Height) * 24 / 635)
set pic = nothing
getImageSize = picWH
end function
' --------------------------------------------
' 복호화
' --------------------------------------------
function unEncrypt(theText)
Dim output, Temp(), Temp2()
'theText = unEscape(theText)
TextSize = Len(theText)
if TextSize < 1 then
unEncrypt = ""
exit function
end if
ReDim Temp(TextSize-1)
ReDim Temp2(TextSize-1)
for i = 0 to TextSize-2 step 2
Temp(i) = AscW(Mid(theText, i+1, 1))
Temp2(i) = AscW(Mid(theText, i+2, 1))
next
for i = 0 to TextSize-1 step 2
output = output & ChrW(Temp(i) - Temp2(i))
next
unEncrypt = output
end function
' -------------------------------------------- Randomize
' 암호화
' --------------------------------------------
function Encrypt(theText)
Dim output, Temp(), Temp2()
TextSize = Len(theText)
if TextSize < 1 then
Encrypt = ""
exit function
end if
ReDim Temp(TextSize-1)
ReDim Temp2(TextSize-1)
for i = 0 to TextSize-1
rndVal = Int((255 * Rnd) + 128)
' mid 는 자동으로 2바이트 문자를 1글자로 인식한다.
Temp(i) = AscW(Mid(theText, i+1, 1)) + rndVal
Temp2(i) = rndVal
next
for i = 0 to TextSize-1
output = output & ChrW(Temp(i)) & ChrW(Temp2(i))
next
'Encrypt = Escape(output)
Encrypt = output
end function
' ----------------------------------------------------------
' php의 ceil() 과 같은 기능을 한다.
' ----------------------------------------------------------
function ceil(num)
' 소수점이 있으면 1을 더한다.
if num - int(num) > 0 then
ceil = Int(num) + 1
else
ceil = Int(num)
end if
end function
' ---------------------------------------------------------- ' table안에 \n이 br로 치환되지 않도록 구분함.
' table tag안에 br을 제거한다.
' ----------------------------------------------------------
function conv_nl(str)
'str = stripslashes($str);
str = eregi_replace("<br>(\r\n|\n\r|\r|\n)", vbLf, str)
str = ereg_replace("(\r\n|\n\r|\r)", vbLf, str)
str = eregi_replace("<(/?(TABLE|TR|TH|TD)[^>]*)> *\n", "<$1>\t_nl_\t", str)
' table태그 앞에 공백을 없앤다.
str = eregi_replace(" *<(/?(TABLE|TR|TH|TD)+)", "<$1", str)
' <, > 태그 안에 \n 제거
str = ereg_replace("<([^><\n]*)\n+([^><\n]*)>", "<$1 $2>", str)
str = ereg_replace("\n[:space:]*\n", "<BR>" & vbLf, str)
str = ereg_replace("\n\n", "<BR><BR>" & vbLf, str)
str = nl2br(str)
str = ereg_replace("\t_nl_\t", vbLf, str)
str = eregi_replace("</?pre>", "", str)
conv_nl = str
end functio
' ----------------------------------------------------------
' nl2br() 구현
' ----------------------------------------------------------
function nl2br(str)
nl2br = ereg_replace("(\r\n|\n\r|\r|\n)", "<br>", str)
end function
' ----------------------------------------------------------
' page번호 출력
' ----------------------------------------------------------
function page_print(pi, page_per_block, get_param)
' 처음, 이전 출력
if pi(PiStart_page) > 1 then
pp = "<a href=" & get_param & "&page=1>[처음] </a>" & _
"<a href=" & get_param & "&page=" & pi(PiPre_page) & ">[이전 " & _
page_per_block & "개]</a> "
end if
' 페이지 번호 출력
for i = pi(piStart_page) to pi(piEnd_page)
if i = pi(piCurrent_page) then
pp = pp & "<font color='red'>[" & i & "]</font> "
else
pp = pp & "<a href=" & get_param & "&page=" & i & ">[" & i & "]</a> "
end if
next
' 다음, 끝 출력
if pi(piEnd_page) < pi(piTotal_page) then
pp
= pp & "<a href=" & get_param & "&page=" &
pi(piNext_page) & ">[다음 " & page_per_block &
"개]</a> " &_
"<a href=" & get_param & "&page=" & pi(piTotal_page) & ">[끝]</a> "
end if
page_print = pp
end function
' --------------------------------------------------------
' Quick Sort
' --------------------------------------------------------
Function QuickSort(vec, loBound, hiBound)
Dim pivot,loSwap,hiSwap,temp
' QuickSort는 정렬이 안된 배열을 정렬할 때 가장 빠른 방식이다.
' 정렬되어야 할 아이템이 두 개일 경우
if hiBound - loBound = 1 then
if vec(loBound) > vec(hiBound) then
temp=vec(loBound)
vec(loBound) = vec(hiBound)
vec(hiBound) = temp
End If
End If
' 정렬되어야 할 아이템이 세 개 이상일 경우
pivot = vec(int((loBound + hiBound) / 2))
vec(int((loBound + hiBound) / 2)) = vec(loBound)
vec(loBound) = pivot
loSwap = loBound + 1
hiSwap = hiBound
do
' 적절한 loSwap 찾기
while loSwap < hiSwap and vec(loSwap) <= pivot
loSwap = loSwap + 1
wend
' 적절한 hiSwap 찾기
while vec(hiSwap) > pivot
hiSwap = hiSwap - 1
wend
' loSwap이 hiSwap보다 작으면 값 교체
if loSwap < hiSwap then
temp = vec(loSwap)
vec(loSwap) = vec(hiSwap)
vec(hiSwap) = temp
End If
loop while loSwap < hiSwap
vec(loBound) = vec(hiSwap)
vec(hiSwap) = pivot
' QuickSort의 백미 : 재귀 호출(Recursively call function)
'첫 번째 섹션에서 두 개 또는 그 이상의 아이템
if loBound < (hiSwap - 1) then Call QuickSort(vec,loBound,hiSwap-1)
'두 번째 섹션에서 두 개 또는 그 이상의 아이템
if hiSwap + 1 < hibound then Call QuickSort(vec,hiSwap+1,hiBound)
End Function