Avatar billede Slettet bruger
07. november 2002 - 09:56 Der er 24 kommentarer og
1 løsning

Streng -> Nummer

Hvordan omdanner man en tekststreng til et nummer? Jeg mener der findes en funktion der gør at fx "Andreas" bliver til 42653 eller sådan noget. Det skal naturligvis være sådan at de strenge der kommer først på en alfabetisk liste har det laveste tal...
Avatar billede medions Nybegynder
07. november 2002 - 09:59 #1
CInt("123123")

//>Rune
Avatar billede ocp Nybegynder
07. november 2002 - 10:00 #2
dim t as integer
dim str as string
dim num as long
str = "Andreas"

num = 0
for t = 0 to len(str)
  num = num + asc(mid(str,t,1)
next

msgbox num
Avatar billede medions Nybegynder
07. november 2002 - 10:00 #3
altså fx.:

Dim strStreng As String
Dim intInteger As Integer

strStreng = "1234"

så kan du konvetere det sådan her:
intInteger = CInt(strStreng)

//>Rune
Avatar billede terry Ekspert
07. november 2002 - 10:01 #4
in in VB is max 32767 or something like that
CLng(32768) or CDbl() or ...... LOOK AT VB HELP!
Avatar billede medions Nybegynder
07. november 2002 - 10:02 #5
Jeg tror ik' jeg har forstået dig korrekt..

Er det det her du ønsker?
For i = 65 to 90
    MsgBox((chr(i))
Next

//>Rune
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:02 #6
Jeg tror ikke der en vb funktion men du kan selv lave det.
Evt. noget som dette:

ls = "andreas"

For i = 1 To Len(ls)
    ret = ret & Asc(Mid(ls, i, 1))
Next
MsgBox ret
Avatar billede Slettet bruger
07. november 2002 - 10:02 #7
ocp > tager den højde for at nogle strenge er længere end andre?

Rune > Du har misforstået det!
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:03 #8
Hmm. alt for sent på den ...
Avatar billede ocp Nybegynder
07. november 2002 - 10:05 #9
Yes.
Avatar billede Slettet bruger
07. november 2002 - 10:08 #10
Gør asc() ikke forskel på store og små bogstaver? (A=65 og a=97)
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:09 #11
Jo
Avatar billede Slettet bruger
07. november 2002 - 10:17 #12
Ole 288
Steen 511
Anders 605

Det skulle være:

Anders
Ole
Steen

Kan det ikke lade sig gøre?
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:20 #13
Det er jo fordi at du lægger flere asc værdier sammen ved Anders end ved Ole

Så skal du lægge asc værdierne sammen som jeg viste i mit eks :

ls = "andreas"

For i = 1 To Len(ls)
    ret = ret & Asc(Mid(ls, i, 1))
Next
MsgBox ret

altså med & isteddet for +
Avatar billede zyber Nybegynder
07. november 2002 - 10:22 #14
Hvorfor vil du lave et navn om til et tal ?
Vil du ikke bare have sorteret navnene ?
Avatar billede ocp Nybegynder
07. november 2002 - 10:30 #15
Du kan jo gøre således?

asc(mid(lcase(str),t,1)
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:35 #16
Bo = (66 + 111) = 177
Andreas = (97 + 110 + 100 + 114 + 101 + 97 + 115)  = 734


Bo = (66 & 111) = 66111
Andreas = (97 & 110 & 100 & 114 & 101 & 97 & 115)  = 9711010011410197115
Avatar billede ocp Nybegynder
07. november 2002 - 10:37 #17
Ja, hvad er det egentlig du skal lave?
Avatar billede zyber Nybegynder
07. november 2002 - 10:40 #18
Hvis du laver bogstaverene om til tal får du også problemer med "a" og f.eks "d"
a = 97
d = 100
Så kommer "d" før "a" hvis der sorteres på tallet.
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:42 #19
zyber >> det er da noget sludder... et sortering på tal vil da give 97 før 100.

//akj
Avatar billede zyber Nybegynder
07. november 2002 - 10:44 #20
Dim I, J, t, arr(2)
arr(0) = "Bo"
arr(1) = "Ole"
Arr(2) = "Andreas"

For I = UBound(arr) - 1 To 0 Step -1
    For J = 0 To I
        If Arr(J) > Arr(J+1) Then
            t = Arr(J)
            Arr(J) = Arr(J+1)
            Arr(J+1) = t
        End If
    Next
Next

Så er array'et alfabetisk sorteret.
Avatar billede zyber Nybegynder
07. november 2002 - 10:47 #21
dk_akj> ja ok, men tallet er faktisk en tekst string og derfor går det galt med sortering. Jeg ved ikke hvilken data type du vil bruge til at holde på tal værdien 9711010011410197115 ("andreas", hvilket endda er et forholdsvis kort navn)
Avatar billede Slettet bruger
07. november 2002 - 10:48 #22
dk_akj >>> uanset om man bruger + eller & så skulle Andreas helst komme før Bo.
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:51 #23
Jeg tror man kan bruge en double
Fra msdn:
Contains a double-precision, floating-point number in the range -1.79769313486232E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values.

Så kan selv de kongelige få deres navn konverteret til et tal i muta's db eller hvad han nu laver :o)

///akj
Avatar billede Slettet bruger
07. november 2002 - 10:53 #24
zyber > Det er netop det jeg skal bruge. Og det virker!
Avatar billede dk_akj Nybegynder
07. november 2002 - 10:54 #25
Min fejl, sorry...

Bo = (66 & 111) = 66111
Andreas = (65 & 110 & 100 & 114 & 101 & 97 & 115)  = 6511010011410197115

Så vil andreas komme før bo

//akj
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester