---
title: "förklara lite kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/134847-förklara-lite-kod"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "voigtann1"
published: "2005-09-26T20:43:11.000Z"
updated: "2005-09-26T21:32:23.000Z"
replies: 6
views: 254
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/134847-förklara-lite-kod"
---

# förklara lite kod

## #1 — voigtann1, 2005-09-26T20:43Z

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?

Permalänk: https://www.webforum.nu/p/134847

## #2 — Travoni, 2005-09-26T20:51Z

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.

Permalänk: https://www.webforum.nu/p/1678486

## #3 — m_soderlund, 2005-09-26T20:51Z

[Asc Function](http://www.w3schools.com/vbscript/func_asc.asp)
[The filter function](http://www.w3schools.com/vbscript/func_filter.asp)

Allt jag kan bidra med just nu :(

**/r** men det var ju faaaen  :bla   ;)

Permalänk: https://www.webforum.nu/p/1678487

## #4 — emission, 2005-09-26T20:54Z

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

Permalänk: https://www.webforum.nu/p/1678488

## #5 — voigtann1, 2005-09-26T21:02Z

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

Permalänk: https://www.webforum.nu/p/1678492

## #6 — emission, 2005-09-26T21:29Z

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
```

Permalänk: https://www.webforum.nu/p/1678502

## #7 — voigtann1, 2005-09-26T21:32Z

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

Permalänk: https://www.webforum.nu/p/1678504

---

Tråden på webben: https://www.webforum.nu/amne/asp/134847-förklara-lite-kod
