Avatar billede christian_h Nybegynder
24. oktober 2002 - 13:36 Der er 8 kommentarer og
1 løsning

Gå til linie x, læs fra karakter y til z og indsæt i text2.

Hej Alle.

Jeg har et problem, jeg har flg. i min kode, som med syntaxen:

InsertChars Text1, 5, 14, "Hello"

kigger i Textbox1, Går til linie nr 5, Går til karakter nr 14, "og indsætter Hello"

Private Function InsertChars(TextBox As TextBox, LineNum As Long, CharIn As Long, InsertText As String) As Boolean
    Dim a() As String 'Insert linie funktionen
    Dim I As Long

    On Error GoTo Erro
   
    a = Split(TextBox.Text, vbCrLf)
   
    a(LineNum - 1) = Left(a(LineNum - 1), CharIn) & InsertText & Right(a(LineNum - 1), Len(a(LineNum - 1)) - CharIn - Len(InsertText))
   
    TextBox.Text = Join(a, vbCrLf)
   
    InsertChars = True
   
    Exit Function
   
Erro:
    InsertChars = False
End Function

Det virker også PERFEKT, MEN hvordan laver man noget tilsvarende, bare omvendt, som LÆSER nogle karaktere på flg. måde.

F.Eks. Syntax :

ReadChars kig i Text1, Gå til linie 5, Læs fra karakter 7, Læs til karakter 11, kopier karakter 7 - 11 ind i text2

altså noget ala dette.

Readchars text1, 5, 7, 11, text2

Håber at det er til at forstå og at nogen kan hjælpe.

Mvh.

Christian H
Avatar billede christian_h Nybegynder
24. oktober 2002 - 14:50 #1
Det skal måske lige siges at det er en multiline textbox der læses i. men at det ikke skal være en multiline textbox det skal kopieres til.

:-)

Christian H
Avatar billede martin_moth Mester
24. oktober 2002 - 15:08 #2
Der er en Text1 og en Text2 samt en command1 på din form. Følgende kode læser fra text1 og putter resultatet i text2 vha følgende funktionskald:
ReadChars(IntputTextBox, linienummer, Startplads, Slutplads, OutputString)

Private Function ReadChars(TextBox As TextBox, LineNum As Long, CharStart As Long, CharEnd As Long, ReadText As String) As Boolean
  Dim a() As String
  Dim I As Long
  ReadChars = True
  On Error GoTo Erro
  a = Split(TextBox.Text, vbCrLf)
  ReadText = Mid(a(LineNum - 1), CharStart, CharEnd - CharStart + 1)
  Exit Function
Erro:
  ReadChars = False
End Function

Private Sub Command1_Click()
  Dim ReadText As String
  If ReadChars(Text1, 5, 7, 11, ReadText) = True Then
    Text2.Text = ReadText
  Else
    MsgBox "Der opstod en fejl"
  End If
End Sub

Private Sub Form_Load()
  Text1.Text = "Dette er linie 1" & vbCrLf & _
              "Dette er linie 2" & vbCrLf & _
              "Dette er linie 3" & vbCrLf & _
              "Dette er linie 4" & vbCrLf & _
              "Dette er linie 5"
End Sub
Avatar billede christian_h Nybegynder
24. oktober 2002 - 15:53 #3
Hej Martin.

Virker faktisk RIGTIGT godt, bortset fra, at hvis den linie man læser i har teksten tabuleret ind til højre 2 gange kommer der til at stå 2 sorte lodrette streger før det man har kopieret ind i text2, hvad kan det være ??.
Avatar billede joern Nybegynder
24. oktober 2002 - 16:00 #4
Hej.

Har ikke læst hele molevitten, men 2 sorte lodrette streger plejer at være VBCRLF altså 'Enter' eller ascii 13 & ascii 10

M.v.h.  Jørn
Avatar billede christian_h Nybegynder
24. oktober 2002 - 16:31 #5
Har lige testet det, de sorte streger fremkommer, hvis der er tabuleret foran den første karakter, kan man få vb til at "over se" disse tabuleringer ???
Avatar billede joern Nybegynder
24. oktober 2002 - 16:36 #6
Hej.

Måske vil sådan noget lignende virke:

If Left(var,1) = vbKeyTab then var = mid(var,2)

M.v.h.  Jørn
Avatar billede martin_moth Mester
25. oktober 2002 - 10:36 #7
Er der tabulatorer i teksten - hvor kommer de fra???

Her en lille funktion, der sortere uønskede karakterer ud af en string:

Private Function SkipCertainChars(StringOfText As String, ANSIToBeSkipped As Integer) As String
  'Funktion, der modtager StringOfText og ANSIToBeSkipped, og
  'returnere StringOfText reduceret for ANSIToBeSkipped i sit navn
  Dim i As Long
  SkipCertainChars = ""
  For i = 1 To Len(StringOfText)
    If Asc(Mid(StringOfText, i, 1)) <> ANSIToBeSkipped Then
      SkipCertainChars = SkipCertainChars & Mid(StringOfText, i, 1)
    End If
  Next i
End Function

Den kunne du jo bruge på følgende måde, hvis du f.eks. ville ignorere alle "å"'er i din tekst (ANSI kode for "å" = 229)

  ...
  a = Split(TextBox.Text, vbCrLf)
  a(LineNum - 1) = SkipCertainChars(a(LineNum - 1), 229)
  ReadText = Mid(a(LineNum - 1), CharStart, CharEnd - CharStart + 1)
  ...

/Martin

NB: Chr(229) = "å"
    Asc("å") = 229
Avatar billede christian_h Nybegynder
25. oktober 2002 - 10:44 #8
Hej Martin.

Mange tak for hjælpen, du spørger om hvor de tabuleringer kommer fra, TJA, de behøvede ikke være der, så nu her jeg fjernet dem, så nu viker det hele bare PERFEKT.

Ha en god weekend.

Mvh.

Christian H
Avatar billede martin_moth Mester
25. oktober 2002 - 11:36 #9
ilm, og tak for points :o)
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