Realmaster
Member
- 2 November 2006
- 5
- 0
Hallo Ihr,
ich hab eine WordWrapping Funktion in ASP geschrieben, welche zwar funktioniert, aber wenn ich einen längeren Text/string habe, dann hängt es sich auf... bzw. tut nix mehr...
es ist so gedacht, der User schreibt in einem Textarea etwas... nach einer bestimmten anzahl von zeichen (120) soll ein \n an diese Stelle eingefügt werden. Damit es nicht mitten im Wort passiert, schaut er wo das letzte BLANK ist und fügt hier das \n ein... wenn jetzt eine Wortschlange eingegeben wird, dann soll einfach nach 120 Zeichen ein \n eingefügt werden...
bei sagen wir (hausnummer) ca 250 Zeichen funktioniert es noch, aber bei 300++ nicht mehr...
ich hänge mal den Code an, vl sieht ja wer, was ich besser und effizienter machen könnte! oder gibt es schon jem. der so etwas ausprogrammiert hat?
herzlichen dank!!
Gruß
Stefan
PS.: was vl noch interessant ist, programmiert für ASP (nicht .net)
ich hab eine WordWrapping Funktion in ASP geschrieben, welche zwar funktioniert, aber wenn ich einen längeren Text/string habe, dann hängt es sich auf... bzw. tut nix mehr...
es ist so gedacht, der User schreibt in einem Textarea etwas... nach einer bestimmten anzahl von zeichen (120) soll ein \n an diese Stelle eingefügt werden. Damit es nicht mitten im Wort passiert, schaut er wo das letzte BLANK ist und fügt hier das \n ein... wenn jetzt eine Wortschlange eingegeben wird, dann soll einfach nach 120 Zeichen ein \n eingefügt werden...
bei sagen wir (hausnummer) ca 250 Zeichen funktioniert es noch, aber bei 300++ nicht mehr...
ich hänge mal den Code an, vl sieht ja wer, was ich besser und effizienter machen könnte! oder gibt es schon jem. der so etwas ausprogrammiert hat?
herzlichen dank!!
Gruß
Stefan
PS.: was vl noch interessant ist, programmiert für ASP (nicht .net)
Code:
Function WordWrap(strTextToBeWrapped, intMaxLineLength)
dim s
s = strTextToBeWrapped
dim lenStr
lenStr = len(s)
'dim MAXLEN as Integer
MAXLEN = intMaxLineLength
'dim posBR as Integer
posBR = 0
'dim posLastBlank as Integer
posLastBlank= 0
dim isReady
isReady = true
newStrS = ""
tmpStr1 = s
helpStr1 = ""
helpStr2 = ""
part1_1 = ""
part2_1 = ""
posLastBlank_1 = ""
part1_2 = ""
part1_2_1 = ""
if ( lenStr > MAXLEN ) then
while ( isReady )
posBR = inStr(tmpStr1,"\n")
if ( posBR = 0 ) then
helpStr1 = tmpStr1
helpStr2 = ""
if tmpStr1 = "" then isReady = false end if
else
helpStr1 = mid(tmpStr1,1,posBR+1)
helpStr2 = mid(tmpStr1,posBR+1)',lenStr)
tmpStr1 = helpStr2
end if 'END if ( posBR == -1 )
if ( len(helpStr1) > MAXLEN ) then
posLastBlank = instrRev(helpStr1," ")
if ( posLastBlank > MAXLEN ) then
part1_1 = mid(helpStr1,1,MAXLEN)
part2_1 = mid(helpStr1,MAXLEN)
posLastBlank_1 = instrRev(part1_1," ")
' part1_2: zeichen von anfang an bis zum blank
part1_2 = mid(part1_1,1,posLastBlank_1)
'part1_2_1: zeichen von blank bis zum ende
part1_2_1 = mid(part1_1,posLastBlank_1)
'füge den rest vom ersten zeil (nach blank) zu dem Teil der nach MAXLEN zeichen kommt
part2_1 = part1_2_1 & part2_1
helpStr2 = part2_1 & helpStr2
newStrS = newStrS & part1_2 & "\n"
else 'WENN kein Leerzeichen im String vorhanden ist
if ( posLastBlank = 0 ) then
part_mom = mid(helpStr1,1,MAXLEN)
newStrS = newStrS & part_mom & "\n"
tmpStr1 = mid(helpStr1,MAXLEN)',helpStr1.length)
helpStr2 = tmpStr1 & helpStr2
else
newStrS = newStrS & helpStr1
end if 'END if ( posLastBlank == -1 )
end if 'END if ( posLastBlank > MAXLEN )
else
newStrS = newStrS & helpStr1
tmpStr1 = helpStr2
end if 'END if ( helpStr1.length > MAXLEN )
tmpStr1 = helpStr2
wend 'END while ( isReady == true)
else
newStrS = s
end if 'END if ( lenStr > MAXLEN )
WordWrap = newStrS
End Function