Dynamischer Zeilenumbruch in VB (Problemupdate)

moep.at

Urgestein
Thread Starter
Mitglied seit
07.03.2006
Beiträge
2.033
Ort
Österreich
UPDATE IN POST 5!

hallo,

ich habe nen String(wo ich im vornherein nich weis wo er überall hin kommt)
muss jedoch an bestimmten stellen aus formatierungsgründen nach zB 10 ZEICHEN nen zeilenumbruch machen, jedoch wortmäßig!

zB
String = "Hallo wie geht es dir?"

Ausgabe soll dann so aussehn:
Hallo wie
geht es
dir?

das ganze sollte noch so dynamisch wie möglich sein

hab schon nen ansatz nur bin nich so der hardcore programmierer und scheitere jetzt an dem dynamischen ;)

Mein Ansatz: (pls nich lachen ;) progge seit 2 Tagen VB)
Code:
ursprüngliches Problem gelöst und funktioniert wunderbar!
xD

das ganze sollte jetzt nicht nur auf 2 Zeilen begrenzt sein sondern sich wenn möglich dynamisch an den String anpassen, kann auch sein das mal 3-5 Zeilen draus werden!

Thx schonmal an alle die sich das durchgelesen haben ;)
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
seit .... Minuten, aber das ist auch egal, denn es ist halt ein Forum, wo jeder fragen kann/darf. :-)
müßte eigentlich so stimmen
PS: Gewöhne dir bitte gleich an mit option strict on und option explicit on zu programmieren
sonst sucht du dir bei fehlern zu tode und es ist auch sauberer!
Code:
Sub Test()
        Dim cText As String, aWords() As String, _
            nCount1 As Integer, nCount2 As Integer, _
            nCount3 As Integer, cNewText As String, _
            cText1 As String, cText2 As String, _
            cOutputText As String

        cText = "Hallo Wolfgang"
        cText = "Hallo wie geht es dir?"
        cText = "Peter L. erzählt die Geschichte vom bösen Wolf."

        If Len(Trim(cText)) > 10 Then
            aWords = Split(cText, " ")
            Do While nCount1 <= UBound(aWords)
                If Len(cNewText) + Len(aWords(nCount1)) + 1 > 10 Then
                    cOutputText &= If(Len(cOutputText) > 0, vbCrLf, "") & cNewText
                    cNewText = ""
                End If
                cNewText &= " " & aWords(nCount1)
                nCount1 += 1
            Loop
            cOutputText &= If(Len(cOutputText) > 0, vbCrLf, "") & cNewText
            MsgBox(cOutputText)
        Else
            MsgBox(cText)
        End If
    End Sub
 
Zuletzt bearbeitet:
Zitat:
seit .... Minuten

wie meinst das?

öhm thx ich werds gleich mal testen!

schonmal Danke!

ich meine damit nur: ist doch eigentlich egal wie lange man bereits programmiert. Wenn man eine Frage hat dann soll man sie halt stellen.
Also war nicht böse gemeint. :-)
 
jo hast im grunde eh recht ;)

so mein Problem hat sich mittlerweile etwas erschwert ;)

und zwar muss das ganze jetzt sogar pixelgenau geschehen!

also sowas wie die funktion MeasureString("Text", Font)

für ein extrem beschnittenes VB, in dem es mir bis jetzt nicht möglich war eine änliche funktion zu finden, bzw eine dll, die eine solche funktion besitzt, einzubinden!

jemand vlt ne idee?
 
Zuletzt bearbeitet:
Also ich nehme mal an, dass mein Quellcode funktioniert hat für deine Zwecke.

für ein extrem beschnittenes VB, in dem es mir bis jetzt nicht möglich war eine änliche funktion zu finden, bzw eine dll, die eine solche funktion besitzt, einzubinden!

=> verstehe ich leider nicht. Was du unter "beschnitten" meins VB ist genauso beschnitten wie C# und Co. bzw. genauso umfangreich wie C# und Co.

Baut doch alles auf .Net auf und in der Klassenhierarchie gibt es doch deine angegebene Funktion "MeasureString" => google.

http://www.thescarms.com/dotnet/MeasureString.aspx
http://msdn.microsoft.com/de-de/library/system.drawing.graphics.measurestring(VS.80).aspx

Natürlich muss dann die Messagebox statt auf Zeichen, auf Pixel abgestimmt werden.
 
hmm naja das ganze wird in DIAdem gescriptet!

und das "VB" mit dem man da Progt is mehr als nur beschnitten :P

zB ich muss nicht definieren welcher datentyp eine variable ist! ;)

is bissl ziemlich besch...

und diese ganzen paint graph events gibts nicht!
mhm :(
 
Also mit DIAdem kenne ich mich natürlich nicht aus, aber schau doch einfach nach ob option explicit unterstützt wird. Damit müssen variablen deklariert werden.

Das VB was dort implementiert ist ja nur VBScript, also kein vollwertiges VB
und eventuell nicht mal VB.net kompatibel.

Eventuell kannst du ja die API einbinden.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh