Avatar billede _petrucci Nybegynder
06. februar 2002 - 11:15 Der er 3 kommentarer og
2 løsninger

Tælle linjer og beregne udtræk

Hejsa :)

Her er en tricky lille sag.

Arbejder på min egen lille tagwall i ASP, som fungerer fint fint so far. Den udtrækker/opdaterer fint på siden når en ny besked tilføjes. Here's what I want next ;)

------
Min tagwall er 200px bred - og jeg vil så gerne have at den ikke bliver højere end f.eks. 500px.

Lige nu laver den et <tr><td></td></tr> loop-udtræk af de seneste 10 poster. Men hvis der nu er blevet skrevet lange beskeder på 5-6 linjer, vil tagwallen selvfølgelig blive mere end 500px høj.

Her kommer så mine overvejelser:

- Man definerer hvor mange tegn én linje (ca.) indeholder
- Derefter tæller man alle tegn når en person sender sin besked og får derved en antal-linjer variabel.
- 500px i højden vil man så sætte til at være xx antal linjer

dvs. når der så bliver sendt en ny besked, beregner den det samlede antal linjer i de 10 øverste poster. Hvis det overstiger xx antal linjer, tager den og beregner de første 9 poster...hvis det stadig er for meget...de første 8....osv. - indtil antallet af linjer er xx eller mindre.

Hvilket faktisk vil sige, at den IKKE udtrækker TOP 10 hvis det er lange beskeder. Den udtrækker det antal poster som passer i højden.

Lyder måske ret besværligt - men er der nogen der kan hjælpe? Eller måske finde en bedre løsning? :)
Avatar billede webbe Nybegynder
06. februar 2002 - 13:21 #1
Hvis jeg var dig ville jeg gøre det mere simpelt.

Jeg ville bruge følgende funktion:

<%response.write(left(rs("Tekst"),300)%>...

Som jeg ser det er det vel meningen at man skal kunne klikke sig ind på det pågældende indlæg og med ovenstående sikrer du dig at TOP 10 vises og at det der vises af indlægget kan være på de 500px
Avatar billede _petrucci Nybegynder
06. februar 2002 - 13:32 #2
njaa...egentlig ikke. skulle bare være en kort tagwall-kolonne på forsiden af et site med små korte kommentarer fra folk. kunne selvfølgelig bare sætte tegn-begrænsning på, men så vil der komme et stort mellemrum forneden, hvis alle kun skriver et par ord.

se evt. min lille kode in action her:  www.undetected.dk/tag.asp
Avatar billede _petrucci Nybegynder
06. februar 2002 - 15:20 #3
never mind - dropper idéen :)

webbe, kunne desværre ikke bruge dit svar til noget :(
Avatar billede crelle Nybegynder
06. februar 2002 - 15:51 #4
Hmmm, jeg har måske et muligt svar...
Først finder du ud af hvor mange linjer tegn der svarer til en linje. Derefter regner du ud hvor mange linjer der kan være på 500px. Det endelige tal kalder vi i dette tilfælde intMaxTegn.
De beskeder som brugeren har skrevet kalder jeg i dette tildælde "besked" (dvs. navnet på kolonnen i databasen).
Så laver du følgende løkke (det er antaget at du har lavet database forbindelsen):
-----
intTalteTegn = 0
intAntalBeskeder = 0
Do While intTalteTegn < intMaxTegn
  intTalteTegn = TalteTegn + Len(rs("besked"))
  intAntalBeskeder = intAntalBeskeder + 1
Loop
intAntalBeskeder = intAntalBeskeder - 1
-----
Så har du antallet af beskeder i variablen 'intAntalBeskeder'. Hvis den så er større end 10 kan du jo bare sætte den til 10

Håber du kan bruge svaret...
Avatar billede _petrucci Nybegynder
08. februar 2002 - 08:36 #5
Desværre har jeg droppet idéen da den ikke rigtig er holdbar. Eksempelvis kunne en bruger vælge at indtaste mange lange ord, som dermed ikke ville fylde linjen ud, men gå ned på næste linje. Allerede der er det hele så forskudt, at det ikke kan betale sig at beregne videre :/ Ellers tak for forslagene.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester