/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Læses linje for linje i multiline tekstfel~
Fra : Bjarne Oestergaard


Dato : 04-12-01 10:00

Hej
Er der nogen der har en smart måde til, at kunne læse fra et multilinje
tekstfelt, linje for linje?

F.eks
hvis Multiline.text indeholder tre linjer

Linje 1
Linje 2
Linje 3

Jeg vil så gerne kunne udtrælle hver linje for sig sålede at f.eks at
TekstfeltLinje1.text = Multiline.text (linje1)
TekstfeltLinje2.text = Multiline.text (linje2)
Osv.

Jeg kan ikke bruge "mid" funktionen da tekstlængderne i multiline feltet
ikke altid er lige lange.

Med venlig hilsen
Bjarne Østergård




 
 
Vestergaard (04-12-2001)
Kommentar
Fra : Vestergaard


Dato : 04-12-01 12:54

Halløj
Ville det ikke være nemmere at bruge listbox-kontrollen i stedet, eller det
duer måske ikke til opgaven?

Jacob S. V.



Bjarne Oestergaard (04-12-2001)
Kommentar
Fra : Bjarne Oestergaard


Dato : 04-12-01 14:51


"Vestergaard" <svester@post5.tele.dk> wrote in message
news:3c0cb9b6$0$29626$edfadb0f@dspool01.news.tele.dk...
> Halløj
> Ville det ikke være nemmere at bruge listbox-kontrollen i stedet, eller
det
> duer måske ikke til opgaven?

Nej for det er body teksten fra en email jeg skal have sorteret og indsat i
en database.

Jeg skal udtrække bestemte oplysninger fra en email både fra header og fra
brødteksten samt subject.

Hele tekst indholdet kan jeg kun få til rådighed i et multiline tekstfelt.

Jeg har fået løst noget af problemet ved at bruge "mid" funktionen tegn for
tegn og så lede efter bestente tegn.

Men det er ikke rigtigt tilfredsstillende.

Hvis jeg blot kunne gemme hver linje i hver sin variabel eller variabel
/string array, ville det være en stor hjælp

Med venlig hilsen
Bjarne Østergård






Jens Vestergaard (04-12-2001)
Kommentar
Fra : Jens Vestergaard


Dato : 04-12-01 15:47

"Bjarne Oestergaard" <bjarne@gigasoft.dk> skrev i en meddelelse
news:3c0cd43a$0$25413$edfadb0f@dspool01.news.tele.dk...
>
> "Vestergaard" <svester@post5.tele.dk> wrote in message
> news:3c0cb9b6$0$29626$edfadb0f@dspool01.news.tele.dk...
> > Halløj
> > Ville det ikke være nemmere at bruge listbox-kontrollen i stedet, eller
> det
> > duer måske ikke til opgaven?
>
> Nej for det er body teksten fra en email jeg skal have sorteret og indsat
i
> en database.
>
> Jeg skal udtrække bestemte oplysninger fra en email både fra header og fra
> brødteksten samt subject.
>
> Hele tekst indholdet kan jeg kun få til rådighed i et multiline tekstfelt.

Hvorfor ikke skrive indholdet til en tekstfil og derefter læse den linie for
linie?

Jeg kan ikke se, hvordan du kan bruge 'linier' i en tekstboks til noget -
det er jo ikke en fast defineret størrelse.

--
mvh
Jens Vestergaard
www.railsoft.dk



Vestergaard (04-12-2001)
Kommentar
Fra : Vestergaard


Dato : 04-12-01 16:19

Der er jo også InStr funktionen, den kan finde hele ord i en string, eks.

Private Sub Command1_Click()
If InStr(1, Text1.Text, "Jacob") Then ' Hvis ordet Jacob findes i
Text1.Text
MsgBox "OK"
Else ' Hvis ikke
MsgBox "Nej"
End If
End Sub

Håber det hjælper
Jacob S. V.




Jacob Saaby Nielsen (04-12-2001)
Kommentar
Fra : Jacob Saaby Nielsen


Dato : 04-12-01 21:56

In article <3c0cd43a$0$25413$edfadb0f@dspool01.news.tele.dk>,
bjarne@gigasoft.dk says...

> Hvis jeg blot kunne gemme hver linje i hver sin variabel eller variabel
> /string array, ville det være en stor hjælp

Nu ved jeg ikke om man kan, og jeg har heller ikke tænkt mig at prøve
det efter lige nu.

Men, hvad sker der hvis du laver en Instr(MyString, vbCrLf) ????
Så burde den vel lede efter hvornår der kommer en enter i linien.

Du ku' så lave en Left(MyString, Instr(MyString, vbCrLf)) for at læse
hver enkelt linie. Hvis altså det virker

Ellers, så prøv at skifte vbCrLf ud med CHR(indsæt char værdien for
enter her), og se om det virker. Jeg kender ikke værdien for enter, det
er derfor jeg har skrevet det som jeg har

Som sagt har jeg ikke selv efterprøvet det, det var bare en ide...

Jacob

Peter Lykkegaard (04-12-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 04-12-01 22:07


"Jacob Saaby Nielsen" <someone@somewhere.com> wrote in message
news:MPG.167756dd4e8bb5ff989682@news.cybercity.dk...
> In article <3c0cd43a$0$25413$edfadb0f@dspool01.news.tele.dk>,
> bjarne@gigasoft.dk says...
>
> Ellers, så prøv at skifte vbCrLf ud med CHR(indsæt char værdien for
> enter her), og se om det virker. Jeg kender ikke værdien for enter, det
> er derfor jeg har skrevet det som jeg har
>
> Som sagt har jeg ikke selv efterprøvet det, det var bare en ide...

vbCrLf virker fint som sideskift den anden vej, såehhh

mvh/Peter Lykkegaard



Jacob Saaby Nielsen (04-12-2001)
Kommentar
Fra : Jacob Saaby Nielsen


Dato : 04-12-01 22:24

In article <MPG.167756dd4e8bb5ff989682@news.cybercity.dk>,
someone@somewhere.com says...

> Du ku' så lave en Left(MyString, Instr(MyString, vbCrLf)) for at læse
> hver enkelt linie. Hvis altså det virker

Hov, det skal jo sådan set være:

Left(MyString, Instr(MyString, vbCrLf) - 1)

Jacob

Vestergaard (05-12-2001)
Kommentar
Fra : Vestergaard


Dato : 05-12-01 14:03

Chr koden for Enter er:
Chr(13) eller vbNewLine

Jacob S. V.


"Jacob Saaby Nielsen" <someone@somewhere.com> wrote in message
news:MPG.16775d53c9a04c60989685@news.cybercity.dk...
> In article <MPG.167756dd4e8bb5ff989682@news.cybercity.dk>,
> someone@somewhere.com says...
>
> > Du ku' så lave en Left(MyString, Instr(MyString, vbCrLf)) for at læse
> > hver enkelt linie. Hvis altså det virker
>
> Hov, det skal jo sådan set være:
>
> Left(MyString, Instr(MyString, vbCrLf) - 1)
>
> Jacob



Tomas Christiansen (04-12-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 04-12-01 22:37

Bjarne Oestergaard skrev:
> Jeg vil så gerne kunne udtrælle hver linje for sig sålede at f.eks
at
> TekstfeltLinje1.text = Multiline.text (linje1)
> TekstfeltLinje2.text = Multiline.text (linje2)

Hvis jeg har forstået dig korrekt, er det noget i denne stil, som du
har brug for:

Function GetLine(ByVal sMultiLineText As String, _
ByVal lLineNo As Long) As String
Dim sLines() As String
lLineNo = lLineNo - 1
sLines = Split(sMultiLineText, vbNewLine)
If lLineNo < 0 Or lLineNo > UBound(sLines) Then
GetLine = ""
Else
GetLine = sLines(lLineNo)
End If
End Function

Du bruger funktionen på følgende måde:

TekstfeltLinje1.Text = GetLine(Multiline.Text, 1)
TekstfeltLinje2.Text = GetLine(Multiline.Text, 2)
TekstfeltLinje3.Text = GetLine(Multiline.Text, 3)

OBS: Løsningen duer kun til VB 6.0. Har man VB < 6.0 må vi finde på en
anden løsning (kræver 3-4 linier kode ekstra).

-------
Tomas


Bjarne Oestergaard (05-12-2001)
Kommentar
Fra : Bjarne Oestergaard


Dato : 05-12-01 10:28


"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:9ujfm0$962$1@news.cybercity.dk...


Tak for svarenen gutter.

Jeg efterprøver lige koderne.

Problemet med at søge efter en bestemt streng dur ikke da jeg ikke kender
strengen,
men kun den linje den står på samt hvor den begynder på linjen.

Jeg har lavet et program jeg kalder for PC Finder og det er indrettet
således at hvis computeren flyttes afsender det en mail om hvor den er
flyttet hen.

Det er fra denne mail jeg vil udtrække nogle data, og gemme i en database så
man senere kan søge på disse data.

F.eks hvis en computer meldes stjålet, så kan jeg anmærke de harddiske som
sad i computeren som stjålet. og hvis disse harddiske senere ender i en
maskine med mit program i, vil de blive fundet igen.

Min ide er at lave et program der automatisk udtrækker data fra disse mail
og hvis en harddisk pludselig har fået en ny adresse vil ejeren så få besked
om hvor den er.


F.eks på IP adressen 192.168.1.10 sidder følgende harddiske

============================================ Harddiske og CD. Medier på
maskinen ================================

Disk/Medie. C: = Master: Type Nr. = -2077147651

Disk/Medie. D: = Ikke fundet: Type Nr. = 0

Disk/Medie. E: = 0007: Type Nr. = 401130516

Disk/Medie. F: = BACKUP: Type Nr. = 747435514

Disk/Medie. G: = JOB: Type Nr. = 1685512593

============================================ 0000000
================================

Skulle en af disse harddiske pludseligt dukke op på en anden IP adresse er
de jo flyttet og en mail afsendes så til den Email hvor de tidligere var
registreret.

Så det er disse data jeg skal udtrække fra en mail.

Nå men tak for hjælpen.
Håber jeg kan gøre gengæld en gang i mellem.


PS hvis nogen vil prøve programmet kan det downloades helt gratis fra
www.gigasoft.dk


Med venlig hilsen
Bjarne Østergård





Bjarne Oestergaard (05-12-2001)
Kommentar
Fra : Bjarne Oestergaard


Dato : 05-12-01 10:45

Hej igen
Jeg har nu fundet en simpel løsning på at udtrække IP Adressen fra
mailheaderen således, og det ser ud til at virke fint på denne måde,
ihvertfald i mailheaderen.

Først laver jeg en do while der finder ferem til hvor IP adressen begynder
ved at lede efter den første "(" i linjen

Derefter leder jeg efter den næst forekommende "[" i linjen den streng der
er her i mellem er IP adressen fra mailHeaderen og den gemmer jeg så i et
tekstfelt.

Måske lidt klodset men det virker nu.


Public Sub FindHeaderIp()
StringLengde = 0
TextLest = ""
TextIP = ""
BogStav = ""
IpTal = 0
TextTal = 1
Do While BogStav <> "("
BogStav = Mid(TextString, TextTal, 1)
TextLest = TextLest + BogStav
TextTal = TextTal + 1
Loop
IpTal = TextTal

BogStav = ""
Do While BogStav <> "["
BogStav = Mid(TextString, IpTal, 1)
TextIP = TextIP + BogStav

If BogStav = "[" Then Exit Sub

frmPopMgr.TxtHeaderIp.Text = TextIP
IpTal = IpTal + 1
Loop
End Sub


Med venlig hilsen
Bjarne Østergård
www.gigasoft.dk



Jan Damkjær Dahl (05-12-2001)
Kommentar
Fra : Jan Damkjær Dahl


Dato : 05-12-01 21:12

Hvad så når den harddisk bliver formateret / fdisket.. maskinen skifter IP
eller bruger DHCP mv.


"Bjarne Oestergaard" <bjarne@gigasoft.dk> skrev i en meddelelse
news:3c0debfd$0$89839$edfadb0f@dspool01.news.tele.dk...
> Hej igen
> Jeg har nu fundet en simpel løsning på at udtrække IP Adressen fra
> mailheaderen således, og det ser ud til at virke fint på denne måde,
> ihvertfald i mailheaderen.
>
> Først laver jeg en do while der finder ferem til hvor IP adressen begynder
> ved at lede efter den første "(" i linjen
>
> Derefter leder jeg efter den næst forekommende "[" i linjen den streng der
> er her i mellem er IP adressen fra mailHeaderen og den gemmer jeg så i et
> tekstfelt.
>
> Måske lidt klodset men det virker nu.
>
>
> Public Sub FindHeaderIp()
> StringLengde = 0
> TextLest = ""
> TextIP = ""
> BogStav = ""
> IpTal = 0
> TextTal = 1
> Do While BogStav <> "("
> BogStav = Mid(TextString, TextTal, 1)
> TextLest = TextLest + BogStav
> TextTal = TextTal + 1
> Loop
> IpTal = TextTal
>
> BogStav = ""
> Do While BogStav <> "["
> BogStav = Mid(TextString, IpTal, 1)
> TextIP = TextIP + BogStav
>
> If BogStav = "[" Then Exit Sub
>
> frmPopMgr.TxtHeaderIp.Text = TextIP
> IpTal = IpTal + 1
> Loop
> End Sub
>
>
> Med venlig hilsen
> Bjarne Østergård
> www.gigasoft.dk
>
>



Bjarne Østergård (07-12-2001)
Kommentar
Fra : Bjarne Østergård


Dato : 07-12-01 09:31


"Jan Damkjær Dahl" <jdd@worldonline.dk> skrev i en meddelelse
news:XavP7.3521$z4.403158@news000.worldonline.dk...
> Hvad så når den harddisk bliver formateret / fdisket.. maskinen skifter IP
> eller bruger DHCP mv.

Du kan se en beskrivelse af systemets funktioner på
http://www.gigasoft.dk/PcFind2002/FindIndex.htm


--
Med venlig hilsen
Bjarne Østergård
E-Mail boe@gigasoft.dk
www.gigasoft.dk



Frank Bertelsen (10-01-2002)
Kommentar
Fra : Frank Bertelsen


Dato : 10-01-02 19:38

Hej Bjarne,

Du laver et dynamisk array:

Dim TekstLinjer() as string

og så udfylder du dette array med Split-kommandoen:

TekstLinjer = Split(Multiline.Text, vbNewLine)

Du har nu et array, som du kan arbejde videre med.
Anvend LBound(TekstLinjer) og UBound(TekstLinjer) for at identificere
grænserne på arrayet.


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste