/ 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
InStr fejler
Fra : Ukendt


Dato : 29-07-04 11:48

Jeg har følgende kode:

Open strFile For Input As #1
Do While Not EOF(1)
DoEvents
Line Input #1, strLine
i = InStr(1, strLine, "Morten Snedker", vbTextCompare)
If i > 0 Then
iStart = InStr(1, strLine, "picasso", vbTextCompare) + 10
iEnd = InStr(iStart, strLine, " ", vbTextCompare)
Debug.Print Mid(strLine, iStart, iEnd - iStart)
End If
Loop

iEnd= linien fejler og returnerer 0, selv om jeg VED den indeholder et
mellemrum (chr32). Søger jeg på noget andet end et mellemrum, så
virker det fint.

Hvis jeg debug-printer strLine, kopierer output og så i selvsamme
debug-vindue laver en Instr på indholdet af variablen...så kan jeg
pludselig godt få InStr til at returnere placeringen af mit mellemrum!
Men altså ikke direkte på variablen (strLine)...ideas???

XFUT: edb.programmering.basic.visual-basic

mvh /Snedker
---
http://dbconsult.dk
Email: mortenatdbconsultdotdk

 
 
Lars Strange (29-07-2004)
Kommentar
Fra : Lars Strange


Dato : 29-07-04 14:31

"Morten Snedker" <mortenatdbconsultdotdk> skrev i en meddelelse
news:d0lhg050h289mr26mfjcspdfvs59pb0p8e@4ax.com...
> Jeg har følgende kode:
<snip>
> iStart = InStr(1, strLine, "picasso", vbTextCompare) + 10
> iEnd = InStr(iStart, strLine, " ", vbTextCompare)
<snip>

Det er lidt svært at gennemskue, når man ikke kender din input linje, men
kan det tænkes at dit mellemrum befinder sig FØR teksten "picasso" + 10
tegn? Af en eller anden årsag vælger du at starte din søgning derfra..

I øvrigt har du 2 mellemrum i linjen;
iEnd = InStr(iStart, strLine, " ", vbTextCompare)

Lars



Ukendt (29-07-2004)
Kommentar
Fra : Ukendt


Dato : 29-07-04 15:25

On Thu, 29 Jul 2004 15:30:49 +0200, "Lars Strange"
<larsstrangefjernresten@hotmail.com> wrote:


>Det er lidt svært at gennemskue, når man ikke kender din input linje, men
>kan det tænkes at dit mellemrum befinder sig FØR teksten "picasso" + 10
>tegn? Af en eller anden årsag vælger du at starte din søgning derfra..

Næh, det er ikke noget i den stil. Ikke jeg lige kan få øje på...

>I øvrigt har du 2 mellemrum i linjen;
>iEnd = InStr(iStart, strLine, " ", vbTextCompare)

Det er rent faktisk 2 mellemrum jeg leder efter...

Jeg har smidt en bid af filen på http://dbconsult.dk/dbconsult/ms.log

Hele koden er her:

'--kode start
Function HandleLogFile()

Dim strFile As String, strLine As String
Dim strFilter As String
Dim i As Variant, iStart As Integer, iEnd As Integer

Open "D:\ms.log" For Input As #1
Do While Not EOF(1)
DoEvents
Line Input #1, strLine
i = InStr(1, strLine, "Morten Snedker", vbTextCompare)
If i > 0 Then
iStart = InStr(1, strLine, "picasso", vbTextCompare) + 10
iEnd = InStr(iStart, strLine, " ", vbTextCompare)
Debug.Print Mid(strLine, iStart, iEnd - iStart)
End If
Loop

Close #1

End Function
'--kode slut

Og det er, som før nævnt, iEnd = ... som fejler, da InStr på dén linie
returnerer 0.

På forhånd tak.

mvh /Snedker
---
http://dbconsult.dk
Email: mortenatdbconsultdotdk

preben nielsen (29-07-2004)
Kommentar
Fra : preben nielsen


Dato : 29-07-04 18:16


"Morten Snedker" <mortenatdbconsultdotdk> skrev i en meddelelse
news:9a1ig0d16s4bafmae6j0jkq7nv92t12bcj@4ax.com...
> On Thu, 29 Jul 2004 15:30:49 +0200, "Lars Strange"
> <larsstrangefjernresten@hotmail.com> wrote:
>
> Jeg har smidt en bid af filen på
http://dbconsult.dk/dbconsult/ms.log

Hehe....... du har ikke undersøgt filen godt nok Efter
"picasso" er der INGEN " " ! ......men der er tabulatorer ! Chr(9)
eller vbTab afhænging af hvordan du kan liden det..... :)

Jeg ville nu køre hele linien gennem Split(), dvs. Split(strLine,
vbTab). Så han du tage de enkelte elementer (kolonner) fra det
resulterende array....


--
/\ preben nielsen
\/\ prel@post.tele.dk



Ukendt (30-07-2004)
Kommentar
Fra : Ukendt


Dato : 30-07-04 11:47

On Thu, 29 Jul 2004 19:15:38 +0200, "preben nielsen"
<prel@post.tele.dk> wrote:

>Hehe....... du har ikke undersøgt filen godt nok Efter
>"picasso" er der INGEN " " ! ......men der er tabulatorer ! Chr(9)
>eller vbTab afhænging af hvordan du kan liden det..... :)

Fandme så, din Klåge-Åge!

>Jeg ville nu køre hele linien gennem Split(), dvs. Split(strLine,
>vbTab). Så han du tage de enkelte elementer (kolonner) fra det
>resulterende array....

Den vil jeg lure lidt på. Takker! =B-)


mvh /Snedker
---
http://dbconsult.dk
Email: mortenatdbconsultdotdk

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408176
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste