Toon posts:

[vb.net] na zoveel tekens, nieuwe regel

Pagina: 1
Acties:
  • 366 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben de laatste tijd steeds meer bezig met het onderhouden van mijn programma. Alleen had ik een probleem met het printen van ingetypte tekst. Nu dit is opgelost kan ik wel alles printen, alleen laat hij alles achter elkaar staan en krijg je dus een pagina, die misschien helemaal vol had moeten staan met data, die maar 1 regel heeft.

Hoe kan ik dus met vb.net zo maken dat de text na bijvoorbeeld 30 tekens automatisch een nieuwe regel begint? Ik heb net even een schatting gemaakt dat er op een regel, richting de 80 a 90 tekens kunnen.


Alvast bedankt,
- Frag

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:01

gorgi_19

Kruimeltjes zijn weer op :9

Doe eens een gok. Wat heb je zelf al bedacht?

vbCrLf, Left moet iig wat te bedenken zijn.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 30 mei 2003 @ 16:30:
Doe eens een gok. Wat heb je zelf al bedacht?

vbCrLf, Left moet iig wat te bedenken zijn.
ik weet dat je bv in een msgbox de code vbCr kan gebruiken om een nieuwe regel te beginnen, maar dat is het probleem niet, ik weet niet welke functie ik moet gebruiken om het aantal tekens te tellen.

Ik zat te denken aan iets van substr:
RichTextBox2.Text.Substring
iets in die richting, maar op msdn kan ik in deze categorie niets vinden.

Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Met de functie Len() kan je de lengte van een string bepalen.
Zoals Gorgi_19 zei: probeer gewoon wat te experimenteren met Left() en VbCrLf en dan kom je er zelf echt wel uit.

[ Voor 22% gewijzigd door DeverauX op 30-05-2003 16:36 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:01

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 30 May 2003 @ 16:33:
[...]

ik weet dat je bv in een msgbox de code vbCr kan gebruiken om een nieuwe regel te beginnen, maar dat is het probleem niet, ik weet niet welke functie ik moet gebruiken om het aantal tekens te tellen.
Visual Basic .NET:
1
2
Dim str As String
Dim iLength As Integer = str.Length


Verder heb je nog Left(), Right(), Len()

Verder heb je ook nog de substring property.
Oftewel:
Visual Basic .NET:
1
2
Dim str As String
Dim str2 As String = str.Substring(10, 20)

[ Voor 22% gewijzigd door gorgi_19 op 30-05-2003 16:38 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
stukje van de code:
newtext = Right(RichTextBox2.Text, 30)
en dan de error:
'Public Overloads ReadOnly Property Right() As Integer' has no parameters and its return type cannot be indexed.

hoe kan dit dan?

Acties:
  • 0 Henk 'm!

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Is het wel een string? (cstr())

Zie integer staan...

Huur mij in als freelance SEO consultant!


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:01

gorgi_19

Kruimeltjes zijn weer op :9

Weet je zeker dat dit de goede lijn is? Right is een functie; de fout betreft een property.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dim oldtext As String = RichTextBox2.Text
Dim newtext
newtext = Right(oldtext, 30)

of moet ik newtext ook nog extra als string zetten?

Acties:
  • 0 Henk 'm!

Verwijderd

Dim a As String
a = "test"
dim b as string = a.Substring(0, 1)

vb.net heeft geen left dacht ik

[ Voor 15% gewijzigd door Verwijderd op 30-05-2003 16:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 30 May 2003 @ 16:50:
Dim a As String
a = "test"
dim b as string = a.Substring(0, 1)

vb.net heeft geen left dacht ik
de functie bestaat wel, hij geen niet aan dat hij niet bestaat. Maar ik snap niet hoe dit kan, hij zegt idd iets oevr integer terwijl die nergens voorkomt, er zijn alleen maar strings

Acties:
  • 0 Henk 'm!

Verwijderd

right()
gets the distance between the right edge of the control and the left edge of it's container....

Acties:
  • 0 Henk 'm!

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 20-04 22:01
als je alleen van mid, right en left gebruikt maakt, split je steeds op een vast aantal tekens, is het niet netter om per woord te splitsen? Je krijgt dan iets als:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim words() as String = split(RichTextbox2.Text," ")
Dim curWord as String
Dim outText as String = ""
Dim lineLen as Integer = 0
For Each curWord in words
  If curWord.Length() + lineLen + 1 > 80 then
    outText &= vbCrLf & curWord
    lineLen = curWord.Length()
  Else
    outText &= " " & curWord
    lineLen += curWord.Length() + 1
  End If
Next

Zit alleen nog het probleem in dat de outText met een spatie begint, die moet dan nog weggehaald worden.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Twilight Burn schreef op 30 May 2003 @ 16:57:
als je alleen van mid, right en left gebruikt maakt, split je steeds op een vast aantal tekens, is het niet netter om per woord te splitsen? Je krijgt dan iets als:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim words() as String = split(RichTextbox2.Text," ")
Dim curWord as String
Dim outText as String = ""
Dim lineLen as Integer = 0
For Each curWord in words
  If curWord.Length() + lineLen + 1 > 80 then
    outText &= vbCrLf & curWord
    lineLen = curWord.Length()
  Else
    outText &= " " & curWord
    lineLen += curWord.Length() + 1
  End If
Next

Zit alleen nog het probleem in dat de outText met een spatie begint, die moet dan nog weggehaald worden.
:) dit is best wel een handig script, alleen helaas niet voor het geen dat ik uit wil printen. Ik heb het zo gemaakt, dat als je een letter in typt, dat er een binaire waarde komt te staan. Het uit te printen woord is dus een enorme reeks van enen en nullen. Die moet ik per 70, 80 ofzow splitsen en dan een nieuwe regel, zo past het er precies op.

[edit]
kan ik zo dan ook zeggen dat hij op iedere 0 moet splitsen en dan een nieuwe regel, dit ipv een spatie. Zo kom ik toch ook op de 80 tekens uit?

[ Voor 10% gewijzigd door Verwijderd op 30-05-2003 17:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        Dim word() As String = Split(RichTextBox2.Text, "0")
        Dim cur As String
        Dim chars As Integer = 0
        Dim totlen As Integer = RichTextBox2.Text.Length
        Dim output As String = ""
        For Each cur In word
            cur = "0" & cur
            chars = chars + cur.Length
            If chars > 75 Then
                chars = 0
                output = output & vbCr & cur
            Else
                output = output & cur
            End If
        Next
Dit is de code die ik zoek, althans, bijna. Hij kijkt nu alleen bij de nul, wat een effect oplevert dat niet helemaal juist is.
code:
1
2
3
4
5
6
0001100010011001000110010001100110011010101100110001100100011010101100110
011101010011010100110110011110010111010000110100001101010110001001100111011110
01011001100011010001110010011101000111100101100101011001100110010001100001
0111001101101000011001100111100101110010011010100011011001101000011001010111010
0001101010110011101100110011010000111010001100111011110010111010101101000011
001110111010001100100


Hij is dus niet helemaal gelijk. Dit komt omdat de nullen op verschillende plaatsen staan.

Is het mogelijk om te splitsen om nullen EN enen. Dus met 2 waarden? Of iig iets dat er op lijkt?

[ Voor 12% gewijzigd door Verwijderd op 30-05-2003 17:54 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:01

gorgi_19

Kruimeltjes zijn weer op :9

Gekke vraag, maar heb je de documentatie van system.string wel eens gezien?

http://msdn.microsoft.com...ystemStringClassTopic.asp

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 30 May 2003 @ 18:03:
Gekke vraag, maar heb je de documentatie van system.string wel eens gezien?

http://msdn.microsoft.com...ystemStringClassTopic.asp
eehm, nee. Waarom is dit zo belangrijk?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:01

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 30 mei 2003 @ 18:29:
[...]

eehm, nee. Waarom is dit zo belangrijk?
Omdat hier zo ongeveer alle properties en methods in staan die je nodig zou kunnen hebben, inclusief een uitleg.

De vraag je als laatste stelde kan je ook van uit daar beredeneren.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb het eindelijk toch voor elkaar gekregen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        Dim lim As Integer = RichTextBox2.Text.Length
        Dim x As Integer
        Dim c As Integer = 75
        Dim count As Integer = 0
        Dim line As Integer = 0
        Dim where As Integer = 0
        Dim text As String = RichTextBox2.Text
        For x = 1 To lim
            count = count + 1
            If count = c Then
                count = 0
                If line = 0 Then
                    where = (line + c) - 1
                Else
                    where = line + c
                End If
                line = where
                text = text.Insert(where, vbCr)
            End If
        Next


[edit]ff wat uitleg:
per 'c' aantal tekens voegt hij een nieuwe regel toe

[ Voor 6% gewijzigd door Verwijderd op 30-05-2003 19:54 ]

Pagina: 1