webForumDet fria alternativet

Text-paging

2 svar · 232 visningar · startad av SannyW

SannyWMedlem sedan jan. 2003438 inlägg
#1

Vad jag försöker fixa till är ett paging på text. Säg att max antal rader får vara 18 och maxantal tecken i bredd 60.

Hittade nedanstående här på forumet, problemet med nedanstånde är ju att det bryter efter 60 tecken. Det kan alltså hamna precis var som helst i ett ord. Samt att radbrytningarna blir problem, en radbrytning motsvarar ju 60 tecken.

Någon som har idéer att dela med sig på ev. lösning?

strText = objRS("kolumn")

objRS("kolumn")

For i = 1 To Len(strText) Step 60
  strSplit = strSplit & "||" & Mid(strText, i, 60)
Next

arrSplit = Split(strSplit, "||")

If Request.QueryString("pg") = "" OR IsNumeric(Request.QueryString("pg")) = False Then
  intPage = 1
Else
  intPage = CInt(Request.QueryString("pg"))
End If

Response.Write(arrSplit(intPage))
SannyWMedlem sedan jan. 2003438 inlägg
#2

.

SannyWMedlem sedan jan. 2003438 inlägg
#3

Nu skall vi se, har kommit fram lite längre.....har inte sett/hittat något fel än. Men ett problem dyker upp och det är att dela texten på rätt ställe, vill alltså inte få delade ord.

Gjorde en sökning och hittade en LarsG variant, men ser inte riktigt hur jag skall få in den.

mid(rs("f"),250+instr(mid(rs("f"),250)," "))

För om jag nu tänker rätt så måste jag vet hur ordet som nu ev skall brytas ser ut, så att jag kan använda positiva eller negativa värde nästa gång i loopen.

Någon ser tokigheter eller tycker att något borde se ut annorlunda så tas kommentarer tacksamt emot.

strText = "Blablabla"

' Hur många tecken som skall visas i varje paging
StartTecken = 10

' Fixar br/¤ som innehåller 1 tecken
FixBr = StartTecken - 1

' Byta br mot specialtecken ¤ (alt+4)
strText = Replace(strText, "<br>", "¤")

For i = 1 To Len(strText) Step StartTecken-value

  Set objRegExp = New regexp
  objRegExp.Global = true
  objRegExp.IgnoreCase = true
  objRegExp.Pattern = "¤"

  Set objMatches = objRegExp.Execute(Mid(strText, i, StartTecken-value))

  strCheckMatches = Clng(objMatches.count)		

  If value > 0 THEN

	value = strCheckMatches * FixBr
  Else
  	value = 0
  End if

  strSplit = strSplit & "||" & Mid(strText, i, StartTecken-value)
Next

strSplit = Replace(strSplit, "¤", "<br>")

arrSplit = Split(strSplit, "||")

If Request.QueryString("pg") = "" OR IsNumeric(Request.QueryString("pg")) = False Then
  intPage = 1
Else
  intPage = CInt(Request.QueryString("pg"))
End If

Response.Write(arrSplit(intPage))
131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)