webForumDet fria alternativet

förklara lite kod

ASP

6 svar · 251 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1

försöker lista ut lite kod från denna tråd:
http://www.webforum.nu/showthread.php?s=&postid=37155#post37155

bla:

mAsc=asc(mid(mQuery,i,1))

vad gör "asc"?

'skapa arrayer för AND, AND NOT och OR. 
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

Filet() vad gör dessa koder exakt? Har jag förstått det rätt att den gör egentligen en typ av "instr" kontroll fast med en array?

Medlem sedan okt. 20041 556 inlägg
#2

Asc kan du läsa om här: http://www.w3schools.com/vbscript/func_asc.asp
Filter kan du läsa om här: http://www.devguru.com/Technologies/vbscript/quickref/filter.html

mQueryArr Är väl en array ifrån funktionen mQuery och den ser man ju inte så mycket av i den bifogade koden.

Medlem sedan sep. 20026 425 inlägg
#3

Asc Function
The filter function

Allt jag kan bidra med just nu :(

/r men det var ju faaaen :bla ;)

Medlem sedan dec. 19996 721 inlägg
#4

Jag vill understryka att den koden är gammal och inte helt felfri. Tror att förbättringar har diskuterats i andra trådar.

Medlem sedan juni 20019 519 inlägg
#5

märker lite fel.. emission har du några mer "fräsha" exemplen?

Medlem sedan dec. 19996 721 inlägg
#6

Rätt bra verkar den fungera. La in den i en funktion och fixade enkelfnuttsreplace


response.write SearchString("SELECT * from Tabell WHERE ","soekfaelt LIKE '%%'","hej hopp +hoppla")
'grunddelarna i frågan

Function SearchString(ByVal SQL,ByVal Where,ByVal Query)
    dim i,j,QueryArr,mAndArr,mNotArr,mOrArr

'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1). 
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(Query)
   mAsc=asc(mid(Query,i,1))
   if mAsc=34 then
      mCount=mCount+1
      blnInQ=not blnInQ
   else
      if blnInQ and mAsc=32 then
         Query=left(Query,i-1) & chr(1) & mid(Query,i+1)
      end if
   end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
   Query=replace(Query,chr(1)," ")
end if

'ta bort citattecknen
Query=replace(Query,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
Query=chr(0) & replace(Query," "," " & chr(0))

'splitta upp i en array
QueryArr=split(Query," ")
response.write Query
'skapa arrayer för AND, AND NOT och OR. 
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(QueryArr,chr(0) & "+",true)
QueryArr=filter(QueryArr,chr(0) & "+",false)
mNotArr=filter(QueryArr,chr(0) & "-",true)
QueryArr=filter(QueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
   mAndArr(i)=replace(mAndArr(i),chr(1)," ")
   mAndArr(i)=replace(Where,"%%","%" & replace(mid(mAndArr(i),3),"'","''") & "%")
next
for i=0 to ubound(mNotArr)
   mNotArr(i)=replace(mNotArr(i),chr(1)," ")
   mNotArr(i)=replace(Where,"%%","%" & replace(mid(mNotArr(i),3),"'","''") & "%")
next
for i=0 to ubound(QueryArr)
   QueryArr(i)=replace(QueryArr(i),chr(1)," ")
   QueryArr(i)=replace(Where,"%%","%" & replace(mid(QueryArr(i),2),"'","''") & "%")
next

'tejpa ihop en färdig fråga
Query=join(QueryArr," OR ")
if Query<>"" then 
   Query="(" & Query  & ")"
   if ubound(mAndArr) > -1 then Query=Query & " AND "
end if
Query=Query & join(mAndArr," AND ")
if Query<>"" and ubound(mNotArr) > -1 then Query=Query & " AND NOT "
Query=SQL & Query & join(mNotArr," AND NOT ")

	SearchString=Query
  End Function
Medlem sedan juni 20019 519 inlägg
#7

sorry för missförståndet på förra frågan :e var inte en bugg jag läste fel :e mycket rolig kod måste jag säga... kommer kolla igenom den mer noga imorgon också :e

277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)