Newsgroup: it.comp.www.asp
Titolo: News on-line a più paragrafi

Ciao a tutti,
ho un piccolo problemino:
ho creato una pagina di news on-line su un sito, queste news sono a
modello "Giornale" ovvero i testi degli articoli sono inseriti su due
paragrafi.
Per poter creare questa paragrafazione, la persona che aggiorna questi
articoli deve inserirli in due textarea diversi (uno per paragrafo).
Mi chiedevo ora se è possibile fare questa divisione in paragrafi,
automaticamente. Ho già provato ad utilizzare dei controlli sul numero
di caratteri (len) inseriti ma questo non porta a risultati ottimali (se
inseriamo 30 lettere i e 30 m, verranno divise, 30 sul primo e 30 sul
secondo paragrafo ma la "i" e la "m" hanno una larghezza diversa tra
loro.
Se avete qualche idea in proposito ... sarò ben lieto di testarla
Se volete vedere la situazione attuale di queste news:
http://www.cotonella-spa.com/news
Ciao
Michele


La tua idea non è del tutto sbagliata, se usi un carattere a larghezza fissa
(tipo il courier per intenderci) le lettere occupano sempre la stessa
dimensione e il tuo algoritmo dovrebbe funzionare...
Ciao Alessandro
http://www.mio.it
http://www.mio.it/vetrinalavoro

 dimensione e il tuo algoritmo dovrebbe funzionare...
Con il Courier l'algoritmo funziona perfettamente ... peccato che io debba usare
l'Arial.
Avevo pensato anche di "contare" a mano da quanti pixel sono formate le singole
lettere ... ma di "lettere" ce ne sono 256 (tabella ascii alla mano)e così ho
lasciato perdere. Certo ci sono caratteri che mai verranno utilizzati (i primi
30) ed anche altri, ma è pur sempre un lavoraccio e se poi il cliente mi cambia
il tipo di carattere?
Ti ringrazio comunque per la risposta, penso comunque che l'unica soluzione
possibile sia quella che già utilizzo: i paragrafi vengono inseriti a mano ... e
cosi sia.
:-)
Michele Mariotti

Per esperienza personale ho scritto questo codice in ASP per dividere un
testo (racchiuso in una variabile) su 2 colonne giustificate con caratteri
fissi come il "Corier":
dim testo
testo="Questo testo..."
dim pos,margine,dove
dim partefrase
dim archivio(200)
margine=30
dove=0
do
pos=margine+1
while (mid(testo,pos,1)<>" " and pos>1)
pos=pos-1
wend
posso=0
if pos=1 then
pos=margine+1
posso=1
end if
if len(testo)<=margine then
partefrase=testo
archivio(dove)=partefrase
dove=dove+1
exit do
end if
partefrase=left(testo,pos-1+posso)
archivio(dove)=partefrase
dove=dove+1
testo=mid(testo,pos+1)
loop
%>
</font></p>
<table width="600" align="center" border=1>
<tr>
<td valign="top"><font color="#000000" face="Courier">
<%
session.timeout=1
dim meta,t,y,y2
meta=dove/2
if (dove mod 2)<>0 then meta=int(meta+1)
for t=1 to dove
partefrase=archivio(t-1)
y=len(partefrase)
r=margine-y
do
if r=0 or t=dove or Instr(1,partefrase," ")=0 then exit do
if mid(partefrase,y,1)=" " then
partefrase=mid(partefrase,1,y-1)&chr(160)&mid(partefrase,y,len(partefrase))
r=r-1
end if
y=y-1
if y=0 then y=len(partefrase)
loop
response.write partefrase &"<br>"
if t=meta then
%>
</td><td valign="top"><font color="#000000" face="Courier">
<%
end if
next
%>
</td></tr></table>
dove "testo" è la variabile che conterrà il testo da dividere in tabella,
"margine" sono i caratteri per riga.
"archivio(200)" l'array che conterrà le singole frasi (max 200,
modificabile).
Non l'ho testato approfonditamente, ma nel caso di caratteri fissi va
perfettamente.
E' ampliabile (si può aggiungere il codice per la sillabazione), e nel caso
di caratteri di larghezza variabile si può aggiungere il codice che calcola
la larghezza di ogni singolo carattere come consigliato da Michele. Es: se
"a"=1, i=0.6, m=1.4, e per ogni parola calcolare la lunghezza in pixel.
Se può essere utile a qualcuno...
Ciao

> paragrafi.
Sono nuovo del mondo ASP per cui potrei facilmente dire una
sciocchezza. Perche non contrare i caratteri da inserire come news,
dividerlo a metà e spararla su una <TABLE> a 2 colonne/1 riga?
Scusatemi se ho detto una cavolata:-)
Ciao
  SkiZ0