Avatar billede bomme Nybegynder
16. marts 2006 - 12:12 Der er 28 kommentarer og
1 løsning

Hente værdier fra textbox

Hej jeg har lavet et program der læser en email, det jeg så vil have er at jeg skal kunne hente nogle værdier ud fra min mail til nogle tekst felter.

Jeg har en textbox hvor indholdet kan så sådan her ud


£@$£€$£€$€{€{€$654654654£$@5£€$€gfdgfdgfdg......
-----------------------------------------------------
Navn: John Johnson

Gade: John vej John

By: Johnville john
------------------------------------------------------

Hvordan laver jeg det sådan at værdien efter Navn kommer over i text2.text, gade i text3.text og by i text4.text ?
Avatar billede thesurfer Nybegynder
16. marts 2006 - 12:20 #1
Du kan bruge noget streng manipulation:
http://www.w3schools.com/vbscript/vbscript_ref_functions.asp#string

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 12:42 #2
Det kan sikkert godt hjælpe, men altså jeg forstår ikke meget af det, jeg er total noob.
Avatar billede thesurfer Nybegynder
16. marts 2006 - 12:51 #3
' Dette eksempel er ikke testet, så sig til hvis det ikke virker:

tekst = textbox.text ' indeholder alle linierne
arrTekst = split(tekst, vbCrLf) ' split teksten op ved linieskift, dvs 1 plads i arrayen per linie

dim navn, gade, bynavn

for i = 0 to ubound(arrTekst) ' kør en loop fra 0 og til max pladser i arrayen
  linie = arrTekst(i) ' smid den nuværende linie over i variablen "linie"

  if instr(linie, "Navn: " then
    navn = split(linie, ": ")
    text2.text = tmp(1)
  end if

  if instr(linie, "Gade: " then
    gade = split(linie, ": ")
    text3.text = tmp(1)
  end if

  if instr(linie, "By: " then
    bynavn = split(linie, ": ")
    text4.text = tmp(1)
  end if
next

' Læg mærke til, at jeg kalder det "bynavn" i stedet for "by".
' "by" er et reserveret engelsk ord i programmering, og kan måske give problemer

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 12:53 #4
Jeg har rettet koden:

' Dette eksempel er ikke testet, så sig til hvis det ikke virker:

dim i, tmp, linie, tekst, arrTekst

tekst = textbox.text ' indeholder alle linierne
arrTekst = split(tekst, vbCrLf) ' split teksten op ved linieskift, dvs 1 plads i arrayen per linie

for i = 0 to ubound(arrTekst) ' kør en loop fra 0 og til max pladser i arrayen
  linie = arrTekst(i) ' smid den nuværende linie over i variablen "linie"

  if instr(linie, "Navn: " then
    tmp = split(linie, ": ")
    text2.text = tmp
  end if

  if instr(linie, "Gade: " then
    tmp = split(linie, ": ")
    text3.text = tmp
  end if

  if instr(linie, "By: " then
    tmp = split(linie, ": ")
    text4.text = tmp
  end if
next

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 12:55 #5
Der er flere fejl.. tester lige koden..

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 13:00 #6
' Dette eksempel virker:

dim i, tmp, linie, tekst, arrTekst ' definer alle variablerne

' --- Dette er simulation af indholdet af en textbox ---
tekst = ""
tekst = tekst & "£@$£€$£€$€{€{€$654654654£$@5£€$€gfdgfdgfdg......" & vbcrlf
tekst = tekst & "-----------------------------------------------------" & vbcrlf
tekst = tekst & "Navn: John Johnson" & vbcrlf
tekst = tekst & "" & vbcrlf
tekst = tekst & "Gade: John vej John" & vbcrlf
tekst = tekst & "" & vbcrlf
tekst = tekst & "By: Johnville john" & vbcrlf
tekst = tekst & "------------------------------------------------------" & vbcrlf
' --- Simulation slut ---

arrTekst = split(tekst, vbCrLf) ' split teksten op ved linieskift, dvs 1 plads i arrayen per linie

for i = 0 to ubound(arrTekst) ' kør en loop fra 0 og til max pladser i arrayen
  linie = arrTekst(i) ' smid den nuværende linie over i variablen "linie"

  if instr(linie, "Navn: ") then ' undersøg om linien indeholder "Navn: "
    ' Yep.. linien indeholde "Navn: "
    tmp = split(linie, ": ") ' split linien op ved ": ", så der oprettes en array med 2 plads, start ved 0
    text2.text = tmp(1) ' smidt det andet felt (felt 2 = plads 1, da den start ved 0) over i textbox'en
'    msgbox "navn: " & tmp(1) ' debug/test.. denne linie kan slettes
  end if

  if instr(linie, "Gade: ") then
    tmp = split(linie, ": ")
    text3.text = tmp(1)
'    msgbox "gade: " & tmp(1)
  end if

  if instr(linie, "By: ") then
    tmp = split(linie, ": ")
    text4.text = tmp(1)
'    msgbox "by: " & tmp(1)
  end if
next

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 13:12 #7
Den bliver ved med at klage over text2.text = tmp
Avatar billede thesurfer Nybegynder
16. marts 2006 - 13:27 #8
Min nye kode skal erstatte de gamle.
Koden fra 16/03-2006 13:00:27 er et komplet eksempel.

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 13:28 #9
Med andre ord: Der skal stå tmp(1)

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 13:29 #10
Sorry var lidt for langsom :) Det virker men så vil jeg gerne have hjælp til to ting mere..

Jeg har jo teksten

jfdsjf9edwiri"¤%#&¤%&%W&%¤&%/fdsfjdkgjfd
<body>
min tekst jeg skal bruge
bla
bla

</body>

Jeg vil gerne have den tekst der kun står i mellem <body> og </body>
Avatar billede thesurfer Nybegynder
16. marts 2006 - 13:40 #11
Hvordan får du teksten ind i dit program?

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 14:01 #12
det gør jeg ved

iStart = 0
iEnd = 0
Open "C:\nyt\20060209140105DF31.tmp" For Input As #2 'Fil der åbnes

For i = 1 To 63
      Line Input #2, fil ' den skifter værdi ved hver linie
strFil = strFil & fil & vbCrLf
Next

  Close
  Text4.Text = strFil
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:10 #13
"For i = 1 To 63"? Hvorfor kører den kun fra 0 og til 63?
Body kan jo godt lægge længere ned..

Men anyways..:

dim boolBody
boolBody = false

For i = 1 To 63
      Line Input #2, fil ' den skifter værdi ved hver linie
strFil = strFil & fil & vbCrLf

if instr(strFil, "<body") then boolBody = true
if instr(strFil, "</body") then boolBody = false
if boolBody = true then strBody = strBody & fil & vbCrLf

Next

' variablen "body" indeholder fra "<body" og til "</body".. men den stopper ved samme linie som "</body"

' PS: Det kan godt være, at InStr skal bruge "> -1" eller
' Eksempel: if Instr(alfabet, "abc") > - 1 then

/theSurfer
Avatar billede sjh Nybegynder
16. marts 2006 - 14:11 #14
Jeg vil gerne have den tekst der kun står i mellem <body> og </body>


Private Sub Form_Load()
Dim strHtml As String
Dim strText As String

  strHtml = "<html><body>Body tekst</body></html>"

  strText = FindTags(strHtml, "<body>", "</body>")
  MsgBox strText

End Sub

Public Function FindTags(strData As String, strTag1 As String, strTag2 As String) As String
Dim intStart As Long
Dim intEnd As Long
  intStart = InStr(1, strData, strTag1, vbTextCompare)
  If intStart > 0 Then
    intStart = (intStart + Len(strTag1))
    intEnd = InStr(intStart, strData, strTag2, vbTextCompare)
    If intEnd > 0 Then
      FindTags = Mid$(strData, intStart, (intEnd - intStart))
    End If
  End If
End Function
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:13 #15
sjh> Du kan ikke regne med at der står "<body>"..
Hvad med <body bgcolor="#ffffff"> ? :-)

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:14 #16
Så man skal faktisk finde:
1) <body
2) Det første > man støder på, plus 1 tegn
3) tage fra det nye nulpunkt, og til "</body"

Ja, jeg har prøvet det her før.. :-)

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 14:15 #17
The surfer -> det virker ikke jeg kan ikke få noget tekst frem nu
Avatar billede sjh Nybegynder
16. marts 2006 - 14:18 #18
thesurfer > Når nej.. men så kan man vel heller ikke regne med at der står <body

hvad så men < body bgcolor="#FFFFFF" > ? ;)
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:18 #19
Variablen der indeholder "<body ....>" hedder nu: strBody

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:23 #20
Hmm.. jeg tror ikke at "< body" virker, da det så er et " " tag.. :-)

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:25 #21
sjh> Et bedre eksempel:

<body bgcolor="#ff0000">

og

< body bgcolor="#ff0000">  (denne virker ikke)

Konklusion:
Jo, du kan godt regne med, at der står "<body" ;-)

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 14:26 #22
Yes nu virker det, så lige et spørgsmål mere, hvordan fjerner jeg alle ord hvor <> indgår..

Altså <test> skal blive til <> eller bare ingen ting, der er mange forskellige så det er et være bøvl at gøre det med replace
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:33 #23
Hmm... jeg kan ikke se meningen med at fjerne al teksten fra tagsne..

Så bliver det jo bare:

<><><><><><><>

:-)

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 14:42 #24
Ja, men se her..

<snotdum>hej med dig,<bare træls> hvordan går det.

Der vil jeg gerne have det til at se sådan her ud

hej med dig, hvordan går det.
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:53 #25
Det må så være en loop der ser sådan ud:

start loop, fra starten af teksten og til slutningen
- Læs fra nuværende 0 og til <
- tilføj til tmp
- hop til nærmeste >
- sæt 0 til nuværende placering
hop til start

Resultatet findes så i tmp.

:-)

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 15:11 #26
okay, jeg kommer til at tænke på hvis jeg nu har et tekst felt hvor der står en værdi, det kan feks væe 1 eller 89. Kan jeg så gemme det i mit software eller SKAL jeg til at gemme det i min eksterne fil ?
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:35 #27
Hvis du smider det over i en variabel, i dit program/software, vil værdien eksisterer så længe at dit program/software kører. Så snart at lukker dit program, slettes værdien.

Hvis du gemmer værdien i en ekstern fil (på harddisken), kan du loade værdien når du har brug for den. Også selvom du lukker dit program ned, og starter det op igen.

/theSurfer
Avatar billede bomme Nybegynder
16. marts 2006 - 16:03 #28
Okay tak, gider du lige smide et svar så du kan få point :)
Avatar billede thesurfer Nybegynder
16. marts 2006 - 18:35 #29
Yep :-)

/theSurfer
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