Toon posts:

[ASP] ABC... Omzetten naar 123...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
Select case x
    Case A
        z = 0
    Case B
        z = 1
    Case C
        z = 2
    Case D
        z = 3
    ........
End Select

Maar ik moet dit nummeren tot minimaal BF (Dus de zelfde nummering van een excel sheet) Maar ik zie het niet zitten om bovenstaande code tot BF door te nummeren!

Wie weet er een trukje om dit simpeler te doen :?

Ik hoop dat jullie mijn probleem snappen, anders zal ik het beter uitleggen!

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 05-09 11:47
Tipje:

Kijk eens naar de Asc functie en de waarden die letters en cijfers hebben in de ascii-tabel

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Ken geen asp, maar er zit vast wel een functie in om de ascii waarde van een letter te bepalen? 'A'=65 decimaal denk ik zo, dus voor de eerste 26 krijg je iets als z=ascii(x)-65.

Voor de rest kun je iets met 26*(ascii(x[0])-65)+(ascii(x[1])-65) doen.

edit: te laat, en foutje

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 13:25 schreef Poohbear het volgende:
Keen geen asp, maar er zit vast wel een functie in om de ascii waarde van een letter te bepalen? 'A'=65 decimaal denk ik zo, dus voor de eerste 26 krijg je iets als z=ascii(x)-65.

Voor de rest kun je iets met 26*(ascii(z[0])-65)+(ascii(z[1])-65) doen.

edit: te laat, en foutje
Goed idee ja, ik ga ff in de boeken spitten hoe ik het voor me kaar krijgt!

Verwijderd

Topicstarter
In VB6 Lukt het om achter de ASCII code te komen, maar ik geloof dat het niet in ASP kan. In mijn boek staat het niet en ook op google kan ik nier vinden hoe ik in ASP de Code kan achterhalen! Wie kan mij ff uitleggen hoe ik het moet doen!

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Volgens mij chr() functie zo uit me hoofd


....
Even nagezocht het is dus asc() functie

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 13:53 schreef raptorix het volgende:
Volgens mij chr() functie zo uit me hoofd


....
Even nagezocht het is dus asc() functie
Bedankt asc("Hier een letter") werkt!

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 05-09 11:47
Nope, chr is het tegenovergestelde. Geeft je van een ascii getal het teken wat erbij hoort :)

http://msdn.microsoft.com/library/en-us/script56/html/vsfctAsc.asp?frame=true

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 13:55 schreef GTI_RI het volgende:

[..]

Bedankt asc("Hier een letter") werkt!
Ik heb nu alleen het volgende probleem. Ik heb nu:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<%
Function CelUitlezen(x)
    Dim adoCn
    Dim adoRs
    Dim adoFld
    Dim strQuery
    Dim strResults
    
    Const adUseClient = 3
    Const adClipString = 2
    'Const strColDelim = "&nbsp;&nbsp;</td><td>"
    Const strColDelim = "</td><td>"
    Const strRowDelim = "</td></tr><tr><td>"
    
    Set adoCn = CreateObject("ADODB.Connection")
    Set adoRs = CreateObject("ADODB.Recordset")
    adoCn.Provider = "Microsoft.Jet.OLEDB.4.0"
    adoCn.ConnectionString = "Data Source=e:\GTI RI\Excel\test.xls;" & "Extended Properties=Excel 8.0;"
    adoCn.CursorLocation = adUseClient
    adoCn.Open
    
    strQuery = "SELECT * FROM [Island$]"
    
    With adoRs
        Set .ActiveConnection = adoCn
        .Open strQuery
    End With
    
    strResults = adoRs.GetString(adClipString, adoRs.RecordCount, strColDelim, strRowDelim)
    strResults = Left(strResults, InStrRev(strResults,"<tr><td>") - 1)
    
    TempXY = Split(x, ",")
    x = TempXY(0)

    asc(x) - 65 'Dit is Het ASCII gebeuren, dit is regel 35
    
    'Select case x
    '   Case A
    '       z = 0
    '   Case B
    '       z = 1
    '   Case C
    '       z = 2
    '   Case D
    '       z = 3
    'End Select
    
    If TempXY(1) = 1 Then
        Response.Write "Er is een ongeldige Uitleesrange ingesteld, er mag geen ""1"" voorkomen (" & TempXY(0) & TempXY(1) & ")"
        Response.End
    End If
    
    y = TempXY(1) - 2
    AlleRijen = Split(strResults, "</tr><tr>")
    
    TempRijen1 = Replace(AlleRijen(y), "</td><td>", "#;#")
    TempRijen1 = Replace(TempRijen1, "</td>", "")
    TempRijen1 = Replace(TempRijen1, "</tr>", "")
    TempRijen1 = Replace(TempRijen1, "<td>", "")
    
    TempKolomen = Split(TempRijen1, "#;#")
    
    'Response.Write TempKolomen(z)
End Function

CelUitlezen("B,2")

Maar als ik dit script draaid dan krijg ik:
code:
1
2
3
4
5
Runtimefout Microsoft VBScript error '800a000d' 

Typen komen niet met elkaar overeen: '[string: "B"]' 

/excel/index.asp, line 35

Maar ik weet niet wat ik nu precies heb foutgedaan :?

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 05-09 11:47
Op vrijdag 22 maart 2002 14:12 schreef GTI_RI het volgende:


asc(x) - 65 'Dit is Het ASCII gebeuren, dit is regel 35
z=asc(x)-65

dat zou moeten werken ?

Je moet trouwens ook nog iets bedenken voor als je rijen (of kolommen) boven de Z uitkomen.
Iets als:
code:
1
2
3
4
5
6
intTel=1
intAantal=len(x)
z=0
for intTel=1  to intAantal
   z = z + asc(mid(x,intTel,1))-65    
next

Verwijderd

Misschien moet er ook nog Int omheen omdat je fout melding type-mismath is.
code:
1
z = Int(asc(x)) - 65

B.T.W.
In plaats van die lange select ken je ook een for-next gebruiken:
code:
1
2
3
4
5
For i = 65 To 95
    If x = chr(i) Then
      x = i - 65
    End If  
Next

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 14:15 schreef ParaNoiMia het volgende:

[..]

z=asc(x)-65

dat zou moeten werken ?

Je moet trouwens ook nog iets bedenken voor als je rijen (of kolommen) boven de Z uitkomen.
Iets als:
code:
1
2
3
4
5
6
intTel=1
intAantal=len(x)
z=0
for intTel=1  to intAantal
   z = z + asc(mid(x,intTel,1))-65    
next
z=asc(x)-65 is inderdaad wel goed, had ik ook zelf kunnen verzinnen, maar ja, het is bijna weekend en was er helemaal over hee gelezen :P


Maar als hij dus groter wordt dan Z dan raak ik in de problemen. Met onderstaande code lukt het helaas niet!
code:
1
2
3
4
5
6
intTel=1
intAantal=len(x)
z=0
for intTel=1  to intAantal
   z = z + asc(mid(x,intTel,1))-65    
next

edit:

Het is ook vreemd dat de laadtijd met bovenstaande er in meteen een stuk langer is. Zonder bovenstaande was het refresh en het stond meteen op het scherm. Nu duurd het twee seconde en de CPU van de IIS schiet meteen rond de 80% :?


  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 05-09 11:47
Stringbewerkingen zijn meestal langzaam, gok dat het door die mid functie komt, hoewel ik 80% belasting wel erg veel vind...
Pagina: 1