webForumDet fria alternativet

Göra såna pilar (>) i ASP ..

ASP

8 svar · 530 visningar · startad av Stuck

Medlem sedan juli 200072 inlägg
Frågan#1

Hej!

Jag har ett ganska pilligt problem, jag bygger en community och kjag har där i en meddelande funktion. Problemet är att jag vill ha samma standard i den som det är i e-post program alltså att man får med det gammla meddelandet och det är såna här > pilar inan det gamla och då för varje "reply" så lägger den till en pil.

Jag har byggt ett sånt här med lite Regular expressions och stuff men jag har allri fått det ricktigt att funka perfekt .. antigen så klipper det bort ord .. eller så kommer > den på fel rad eller så blir det helt skumt .. ;)

Men jag förstår att ingen orkar sitta och skriva en hel sån här funktion åt mig men om nån råkar veta nåt ställe där man kan läsa om hur man kan göra en sån här på ett bra sätt .. eller om nån här har gjort en sån och man kan få titta på koden.

Mvh Ola

Medlem sedan sep. 200061 inlägg
#2

Det svåra är ju att en webläsare fyller på koden dynmiskt. Vad du skulle kunna göra är att köra med en fixed-width font och sen styra bredden på containern där du har texten.

Medlem sedan dec. 20003 563 inlägg
#3

Jag gjorde något enklare till ett community jag också gjort. "Alla verkar göra det!!!!" :) http://www.cyprys.com/necc/
Sidan är typ nerlagd eller nått.

Men vad jag gjorde var att när du skrev inte det gamla meddelandet så tar du meddelandet du svarar på och inkluderar det i SQL-satsen.
Ungefär:

svar = gammalt_med("med") 
svar = svar & "<br>------------------<br>"
svar = svar & request.form("nytt_meddelande")
conn.execute("INSERT INTO tabell (med) VALUES('"&svar&"');")

Hur du ska lösa det med > framför gamla meddelanden vet jag faktiskt inte. Byta färg på dem eller annat går ju men väntar med nyfikenhet på någon som kanske kan. :)

------------------
MVH // Cyprys
Cyprys bakgård

Om du någonsin ser mig bli misshandlad av polisen, var snäll och lägg ner videokameran och kom och hjälp mig i stället.

Medlem sedan dec. 19995 874 inlägg
#4

Du kan ju ha en tom td med rowspan, och för varje rad kollar du om det är reply eller ny, och om det är reply på reply och isåfall sätter du dit så många pilar som det skall vara i den td'n som du lägger till vänster, men som egentligen inte syns.

Lycka till!

------------------
Mvh
Patrik aka Brimba
Har du någonsin slagigt någon?

Medlem sedan sep. 200061 inlägg
#5

Jag kom att tänka på en tänkbar lösning på din fråga:
Om du tar och infogar <br> plus > efter x antal tecken i strängen och repeterar det tills strängen är slut.

Medlem sedan dec. 19995 874 inlägg
#6

men då kan det bli såhär:

det var en
gång
en soldat som var ute i kylan.

istället för

det var en gång
en soldat som var ute i kylan.

men det är som sagt, en lösning :)

------------------
Mvh
Patrik aka Brimba
Har du någonsin skadat någon?

[Redigerat av Brimba den 01 feb 2001]

Medlem sedan sep. 200061 inlägg
#7

Jo det är nog sant. Om man inte tar bort alla gamla <br> innan :) Men jag kom på en annan sak som jag inte tänkte på och det var att det lär bli en hel del ord som blir brutna mitt i. Det måste ju gå att hitta en smidig lösning på det här tycker jag.

Medlem sedan dec. 19995 874 inlägg
#8

Man kan ju bygga en funktion som plockar ut alla ord (inklusive alla <br> ) och slänger in i en array. För att sedan köra if satser i funktionen för hur arrayen skall presenteras på sidan.
Eftersom om ett ord innehåller 40 tecken kanske man måste köra en <br> ändå osv.
Det är lurigt, men det går ju att lösa :)

------------------
Mvh
Patrik aka Brimba
Har du någonsin skadat någon?

Medlem sedan dec. 19996 721 inlägg
#9

Nu är det ju frågan om man verkligen skap pilla i ord som är för långa. Om man inte ska det kan man göra så här. Jag gjorde en funktion som radbryter text efter ett viss antal tecken. Det är en rekursiv funktion som bara bryter texten en gång, och sedan läggen ihop den brutna delen med resultatet av att kalla funktionen med det som återstår.

Sedan splittar man resultatet till en array (med vbcrlf som avgränsare) och loopar ut raderna med > framför. Man skulle också kunna lägga till en vbcrlf framför strängen och helt enkelt köra en replace(strängen,vbcrlf,<BR>>)

rows=split(Wrap(texten,10),vbcrlf)

for each row in rows
	response.write "> " & row & "<BR>"
next

Function Wrap(InString, Width)
    Dim intLen,intPosRev,intPosFwd
    intLen = Len(InString)
	intPosRev=instrrev(InString," ",Width,1)
	intPosFwd=instr(InString," ")
	if Width>=intLen then
		Wrap=InString
	elseif intPosFwd=0 then
		if intPosRev>0 then
			Wrap=left(InString,intPosRev) & vbcrlf & Wrap(Right(InString,intLen-intPosRev),Width)
		else
			Wrap=InString
		end if
	else
		Wrap=left(InString,intPosFwd) & vbcrlf & Wrap(Right(InString,intLen-intPosFwd),Width)
	end if
End Function
271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)