Newsgroup: it.comp.lang.visual-basic
Titolo: Re: Ancora sulle classi .NET (VB e C#)

 Particolarmente la Split(s,x). NON FUNZIONA come scritto sul manuale.
Mi stranizza, perché negli ultimi 10 anni la avrò pessimisticamente
usato Split 1 miliardo di volte (perlopiù da c#, ma anche da linguaggi
meno comuni come boo o brail), e non ricordo di avere avuto alcun
problema.
Magari non qui su ILI (c/p e f/u su ICLVB), ma puoi postare un unit
test per mostrare il problema che vuoi risolvere (magari qualcuno ti
mostrerà che in realtà puoi anche usare strumenti di più alto o anche
basso livello)?
--
ale
http://ale.riolo.co.uk

Alessandro Riolo schrieb:

Grazie per l'interesse. Per non ripetere il tutto,
ti rimando alla risposta che ho dato or ora a beccoblu.
Sono grato di qualsiasi suggerimento.
Altrimenti procedo 'manualmente' cioé rinunciando a 'split'
e ai vari esempi che ho trovato sui forum, e chiamerò la
  e.Graphicsc.Drawstring(blablabla) manualmente dandole le lineee che mi 
sono creato a mano.
in un loop.
Però si deve ammettere che questo modo di lavorare è troppo 
antidiluviano e non intelligente.
Mi sarei aspettato di più da dei linguaggi di alto livello,
per di più a oggetti.
Che schifo !

 Che schifo !
Da google non si vede che questi 2 messaggi.....
che cosa volete splittare e che cosa fa schifo???
Occhio che a volte lo schifo supposto del linguaggio sta nella
ignoranza (nel senso di non conoscenza) dell'utilizzatore!

Wodka40[Google] schrieb:

Scusate, purtroppo mi sono accorto troppo tardi che un post al quale 
avevo risposto su it.disc.informatica aveva come 'follow up' questo NG.
Il problema è stato risolto. Però il concetto rimane :
sebbene abbia esperienza pluridecennale in programmazione, tutta questa 
esperienza non mi serve a una pippa, dato che con la programmazione a 
oggetti devo ancora 'sudare molto' per farmi l'esperienza che avevo
dieci anni fa in altri linguaggi.
Arrivo così brutalmente allÄ'impatto con il mondo .NET. bellissimo in 
teoria. Tutto più facile, OK. Ma poi ci sono delle lacune isoltae che 
sono molto profonde e si possono risolvere solamente con tanta pazienza, 
ma soprattutto col rompersi la testa sui forum, chiedere qua e là, farsi 
esperienza.
Un metodo troppo caro, se si considera che in applicazioni commerciali 
essere in ritardo di tre settimane perchè uno prima si deve fare 
esperienza di come far stampare dal PrintDocument (Printpage) un 
RichTextBox, cosa che , viste le centinaia di altre cose che offre il 
.NET. dovrebbe essere una cosa più che immediata.
Come ho detto nel forum di informatica, io penso che ci sia un 'bug' che
fa sì che di una RichTextBox stampa solo la prima pagina. Se uno mette 
l'opzione HasMorePages = True gli ripete sempre la prima pagina.
Questo IMHO è un bug.
Per evitare ciò uno deve farsi una routine apposita.  Non è una cosa 
'banale' come dovrebbe invece essere.

 Wodka40[Google] schrieb:
beh allora buttiamo via tutto e continuiamo a usare i vecchi cari
affidabili umani di un tempo che fu: gli scrivani!
Scusa se mi permetto ma la cosa che tu denunzi IMHO non ha ne capo ne
coda.
Io oltre che essere programmatore sono anche imprenditore "di me
stesso".
E NON FAREI MAI E POI MAI una applicazione in una "coso" che non
conosco!
Ed infatti comincio adesso dopo 2 anni a fare le prime piccole
applicazioni in 
vb.net
.
Il grosso delle mie app sono ancora in vb6 e il porting spesso sarà
una totale riscrittura.
Solo un pazzo...UN PAZZO....o meglio...un imprenditore incapace...
riscriverebbe una applicazione con vincoli di tempo in una tecnologia
"nuova" per la tipologia della sua azienda.
Non si fà una applicazione per un cliente in un linguaggio che
l'azienda non ha mai usato.
Ancora peggio...l'imprenditore fa bene a chiudere....se affida la
riscrittura ad un dipendente che NON conosce il linguaggio.
Occhio che non sei TU che ti devi formare perchè un cliente chiede
qualcosa....
ti devi formare costantemente perchè la tecnologia evolve e la tua
azienda investe in questo progresso.
Tradotto:
è da dementi studiare come funziona una richtextbox in net perchè
domani la devo usare in un progetto.
La studio perchè fa parte dei controlli di net....perchè fa sempre
comodo sapere i limiti...perchè fa parte del mio processo culturale di
apprendimento.Perchè, in buona sostanza, potrebbe essere utile nei
miei futuri progetti.
Va che uno dei dobveri di un buon programmatore è tenersi aggiornato
eh!
Ovvio che non puoi essere aggiornato su tutto...ma sul materiale che
usa la tua azienda si!!!
Se usi net....mi sembra ovvio che tu debba sapere come funzionano
(limiti/pregi) i conntrolli che Microsoft ti mette a disposizione e le
tecnologie che usa.
POI è obvvio che se la tua azienda usa il framework 2.0 ...WPF per ora
lo puoi accantonare....ma solo per ora!
sempre e soltanto IMHO
Ciao


a scanso di equivoci:
non si promette un programma in "un mese" in una tecnologia nuova mai
usata...succede qualsiasi intoppo (e succedono sempre se si cambia
tecnologia)la figuraccia è assicurata!

 
Ciao.

 momento.
Mi permetto di entrare in punta di piedi in questa discussione.
Questa tua affermazione denota scarsa conoscenza della programmazione ad 
oggetti e -attenzione- te lo dice uno che di programmazione ad oggetti 
ne sa ben poco.
Il polimorfismo è uno dei (tre) pilastri della OOP che ovviamente è un 
paradigma differente dal quello procedurale.
Il polimorfismo non è stato "inventato" per consentire al programmatore 
di soddisfare i suoi pruriti più intimi bensì per consentire di avere 
del codice più pulito, manutenibile, gestibile and last but not least 
elegante (anche se qui molti storceranno il naso).
Facciamo un piccolo esempio,
Calcoliamo l'area di una figura geometrica (ripeto è un esempio banale),
In VB6 abbiamo due strade:
1) tante funzioni con nomi diversi per fare la medesima operazione, 
CalcolaAreaCerchio, CalcolaAreaQuadrato, CalcolaAreaEsagono, etc. etc.
con gli evidenti svantaggi che ciò produce.
2) utilizzare tanti parametri opzionali che però sono solo di tipo 
variant e che per sapere se sono passati o meno devi testare con la 
funzione ismissing introducendo un surplus di controlli/operazioni che 
in definitiva rendono il codice meno leggibile e manutenibile.
In un linguaggio ad oggetti come ad esempio 
VB.NET
 faremmo così:
tante funzioni con il medesimo nome ma con parametri (o anche solo con 
operatori) differenti, quindi semplicemente CalcolaArea, passando 
parametri differenti utilizzi funzioni differenti, lineare no?
ciao
stefano


Penso che nel polimorfismo rientri anche l'overloading, o sbaglio ?
Cioè dare ad una subroutine la possibilità di avere uno, o due, o tre 
parametri.
Questo significa un entry point per numero di parametri,
mysub(a1)
mysub(a1,a2)
mysub(a1,a2,a3)
  perchè indubbiamente. invece di fare il caso a1, deve fare anhce i 
casi a1,a2  e a1,a2,a3, vero ?
Quindi deve seguire tre threads nella logica interna.
E questo non cambia col fatto che i parametri siano passati come 
argomenti o li trovi in 'public memory').
Ebbene questo NON ERA PERMESSO nella programmazione rigorosamente 
strutturata.
Ora, è vero che il motivo della programmazione a oggetti (e quindi anche 
analisi e design) sta nel fatto che il mondo da gestire è diventato più 
grande e complesso.
Però è anche vero che la 'leggibilità' di un codice ne ha risentito, con 
l'introduzione degli oggetti.
Ed in modo molto più esponenziale che non la difficoltá del metodo 
procedurale.
In altre parole, se il mondo è oggi più complesso diciamo di 50 volte 
quello che era nel 1980, ebbene la difficoltà di lettura di un codice a 
oggetti, è 500 volte più complicata che quella di un codice procedurale.
Io ho questa percezione. E di linee di software ne vedo ormai dal 1966.
L'unica spiegazione alternativa  è che sono ormai diventato troppo 
vecchio per programmare.. (ci sta anche questo, <hahahahaha>).

 per programmare.. (ci sta anche questo, <hahahahaha>).
Può essere... ma potresti anche essere l'ennesimo della serie "non è mai 
troppo tardi"!!! ;-)
Ciao
Raf 

 Raf
Ciao.
John.

 :-))
...
Naturalmente dipende da chi scrive i metodi usare nella manirea corretta le 
possibilita' offerte.
Io trovo l'overloading una cosa molto comoda.
Faccio un esempietto...
In una classe ho dei metodi che "formattano" i dati passati per il database; 
se ad esempio passo a questo metodo una stringa, lui automaticamente mette 
due apici all'inizio e alla fine della stringa, ed in piu' li raddoppia se 
ne trova all'interno della stringa stessa.
Se pero' invio una data, automaticamente la formatta in formato iso 
'yyyymmdd HH:mm:ss' ;
se invece invio un integer, semplicemente mi restituisce la stringa che 
rappresenta quel numero.
Se non avessi l'overloading dei metodi, avrei dovuto definire un 
FormattaStringa, un FormattaData, un FormattaNumero ecc.... e di volta in 
volta mi dovrei preoccupare di quale metodo chiamare, andando a vedere che 
tipo di dato sto passando.
Con le belle cose che mette a disposizione il framework, io definisco tanti 
medoti FormattaPerDatabase quanti sono i tipi di dato che voglio formattare, 
ad esempio
Public Function FormattaDataBase (byval value As String) as String
Public Function FormattaDataBase (byval value As Date) as String ecc...
Il chiamante non si deve preoccupare di nulla, chiamera' semplicemente 
FormattaDataBase passando il dato che deve formattare.
Se non e' comodita' questa!!!
C'e' poi la possibilita' di usare l'overloading per evitare di usare metodi 
con parametri opzionali (che in 
vb.net
 sono rimast, ma mi sembra che in C# 
non si possano utilizzare)
Gran cosa, l'overloading :-)

 
dal punto di vista della comodità del programmatore indubbiamente.
Ma si deve scegliere talvolta tra la comodità di chi programma e la 
comodità di chi dovrà modificare il software dopo alcuni anni.
Ecco perchè le regole che ci imponevano in ditta erano menose (tra le 
altre cose chiamare le variabili di lunghezza words con nomi che 
cominciavano con W, le half-word con H, gl iinteger con gli I,
le float con F, le double con D. Una menata solenne.
Non fare assolutamente MAI goto !!!
( io li ho usati perfino ieri per debugging. Indubbiamente fare il 
debugging senza Goto talvolta diventa una grande tortura, Il Goto ti 
manda subito dove vuoi andare, senza compromessi).
Lo so, lo so.
Ma quelli che hanno dovuto modificare il software alcuni anni dopo, ci 
hanno ringraziati.
Ecco perchè il project management e gli sviluppatori raramente vanno 
d'accordo. Vedono le cose su piani diversi.
Il manager vede dieci anni nel futuro. Gli sviluppatori al massimo fino 
a Natale prossimo.

 poi devono leggere.
Esatto, ma ti faccio una domanda: come fai a dire che la scarsa leggibilità 
che attribuisci al codice OOP-style sia intrinseca ed escludere con certezza 
che possa derivare dal tuo livello di preparazione, magari ancora non 
ottimale?
Ciao
Raf
 

 poi devono leggere.
E' che tu sei abituato diversamente.
Un programmatore "nato" su java ad esempio troverebbe molto piu' 
illeggibile un programma in cui si deve ricordare 3 nomi di funzioni 
diversi (CalcolaAreaCerchio, CalcolaAreaTriangolo, 
CalcolaAreaRettangolo) che non ricordarsi un unico nome CalcolaArea e 
lasciare poi che se la sbrighi l'oggetto a capire di che figura 
geometrica si tratta :-)
Io penso che ci siano vantaggi e svantaggi in entrambi gli approcci. Il 
difficile è passare da uno all'altro. Non è come dici tu che la oop è lo 
spartito musicale e la programmazione procedurale è la scrittura ... 
sono due approcci diversi ad uno stesso problema.
E poi ricorda che quando usi un oggetto non devi per forza (anzi non 
devi per niente) capire come è fatto internamente, devi solo sapere 
quali metodi espone e usarli di conseguenza.
Ultimo appunto, ad oggetti come prima si possono scrivere programmi 
buoni e leggibili oppure schifezze incomprensibili. Se hai trovato una 
schifezza ad oggetti non è detto che tutti i programmi ad oggetti 
facciano schifo :-)
Come hai detto tu, negli anni hai imparato a programmare bene senza 
usare goto, dando nomi di variabile significativi ecc ecc. Ma c'e' anche 
chi con i tuoi stessi mezzi ha programmato con una caterva di goto e 
variabili dai nomi improbabili ... ma da questo non poi dire che tutta 
la programmazione procedurale fa schifo :-)
ciao
Mauro

 Wodka40[Google] schrieb:
zac
MAH!
...io alla fine ho capito solo una cosa da tutto questo piagnisteo che
fai: resisti al cambiamento!
Bene benissimo...saluti!
Nel senso: continua così...perchè cambi?
GbC fa ancora programmi in vb5 (CINQUE...non sei!) eppure non piange!
Anzi....zioGibbì è un piccolo grande guru del NG!
La programmazione ad oggetti ha le sue regole....quella procedurale
altre!
Sia l'una che l'altra portano per via diverse a fare il medesimo
palloso gestionale.
Però quello che mi pare miope e scusami se lo dico piuttosto
provincialotto è questa voglia di sputtanare quello che non si capisce
o non si vuol capire!
Io non mi azzarderei mai a definire i turkmeni degli incompetenti,
anacronistici, non efficienti individui....solo perchè non ho tempo ne
voglia di imparare la loro lingua!...eppure tu lo fai!
Se programmavi nel 66 faccio 2 conti a braccio
66-20= 46.....siamo intorno alla sessantina?
Beh io capisco che è dura alla tua età essere ancora così elastici da
rimettersi in gioco....sopratutto se sei stato procedurale fino ad
adesso!...e non so se il lume vale la candela.
Anche io ero procedurale e mi riconverto piano piano ad oggetti....ed
ho 47 anni a Giugno!
TANTO PER INCISO
in un liguaggio ad oggetti fortemente tipizzato com 
vb.net
 o c#
l'incertezza è l'equivalente del diavolo!
Non sapere "COSA" stai trattando è abominevole!
...se ci pensi anche nel linguaggio procedurale spesso apparivano bug
logici perchè non avevamo pèrevisto i parametri di passaggio
vuoi perchè gli avevamo messi opzionali
vuoi perchè erano generici
L'overload è un metodo elegante per controllare e passare ad una
routine il tipo di dato da trattare
es.
vb6
 sub Stampa(Cosa as variant)
Vb.net
sub Stampa(Cosa as MioOggettoDati)
sub Stampa(Cosa as MioOggettoDati, Dove as StreamPreferito)
sub stampa(Cosa as File)
in questo caso se passi un oggetto diverso lui "suona" si accorge che
vuoi fare il cast su roba non prevista e ti segnala l'errore!
in vb6 era tutto lecito nel variant ci ficcavi di tutto!
....poi.....
le funzioni grafiche che wrappano gdi+ sono per forza sovraccariche
nelle firme perchè il tuo oggetto grafico può provenire da fonti
diverse e lo puoi manipolare in modi diversi...e va bene così!
L'alternativa è dargli di api di brutto e svalvolare sulle strutture
dati di ingersso e di uscita (come sà chi lo fa in c o c++)
Te lo dico con cognizione di causa!
All'inizio è spiazzante...c'è troppa roba....poi però con l'approccio
giusto diventa entusiasmante!
Cmq
3 settimane per stampare una pagina non esiste!...che cavolo di
arrosto ti han fatto combinare????
Non so in che NG hai postato ma sia qui che in quello di microsoft
penso ti avrebbero risposto subito!
Prova a ripostare anche qui il problema!


Ciao.
John.

 Prova a ripostare anche qui il problema!
Ma la cosa è semplice : programmo a oggetti da otto mesi e mi sono più o 
meno barcamenato fino ad oggi, scoprendo cose nuove, ma soprattutto 
divertendomi. Questo lo devo ammattere.
Anzi, il programma si puo' dire giá quasi pronto. Solo per un piccolo 
neo : l'opzione 'Print'.
"Quella é una cazzata. mi  sono detto. certamente troverò una classe e 
un metodo che fa questo.
Col cazzo ! Forse sono stato sfigato, forse ho davvero la nuvoletta 
Fantozzi sopra la testa. Il fatto è che sono partito da una cosa che 
funziponava 'a metà'.
Fino a fare un
if printdialog.showdialog = Windows.Result.OK
	printdocument.print
endif
c'ero arrivato subito.
Però mi stampava solo la prima pagina.
Ecco fermiamoci qui : ma te sembra logico che una classe e un metodo di 
Print deve stampare una pagina ?
Ti sembra logico 'obbligare' i programmatori a 'scriversi' la loro 
'classe personale' per stampare TUTTO il documento della RichtextBox.
No dimmi, se a te sembra normale allora io non so più in che mondo vivo.
Per tutti gli otto mesi di sviluppo era andato tutto liscio. Ora, 
arrivato alla fine, mi dovevo occupare di questo 'problemino'.
Invece di un problemino, la ricerca di una soluzione mi ha causato mal 
di testa, dover rompere i coglioni a destra e sinistra sui NG, passare 
la notte a leggere i manuali VB e C# (perchè se non si trova una cosa
da una parte, essendo tutto .NET, la si puo' trovare dall'altra).
Insomma TUTTO è andato storto. Okay ora il problemino è risolto, ma ho 
rotto i coglioni a tutto il mondo e mi sono rotto anche i miei.

 rotto i coglioni a tutto il mondo e mi sono rotto anche i miei.
Beh i tuoi coglioni sono rotti come tutti quelli degli imprenditori
italiani!...ma in generale come tutta l'umanità!
Per me la discussione parte da basi sbagliate.
Il fatto che sia visual basic non autorizza ad avere una parola chiave
per "tutto" (anche perchè il tuo "tutto" ....non è il mio "tutto"...ne
il "tutto" di Rafunk!)
Capisco che se usavi Cobol(il linguaggio più prolisso ed odiato
secondo i canoni di oggi)
 e se addirittura ci hai fatto esami la tua forma mentis è
quella....ma le cose non stanno per fortuna così!
Un linguaggio dotNet in realtà è un wrapper all'immenso framework
sottostante...attualmente siamo alla ver 3.5 ...tra poco esce il 4.0.
Il FW gira dentro una macchina virtuale....se ti sembra di stare a
sentire qualcosa di noto....si è vero Java esiste da tempo!
Sto immenso FW fornisce classi per tutto.La sapienza del programmatore
mischia i componenti magici per fare la "pozione miracolosa".
Se ragioni come un lamer del vecchio vb6 ti incazzi perchè non c'è un
componente che "fa la chat", uno che "fà le stampe", uno che "fà il
pesto alla genovese"...abbiamo passato anni a discutere su questo ng
con gente che voleva "l'activex magico" per fare la contabilità...o il
clone di emule!
Il dotNet con la sua struttura oop ti da tanti mattoncini lego...la
tua abilità li "monta" per fare elicotteri, macchine dei pompieri,
trenini e quant'altro!
Il dotNet essendo oop spiazza i dinosauri come me e te....dobbiamo
ragionare come classi eventi oggetti  che vivono e cooperano tutti
assieme !....diverso da come eravamo abituati : prima questo ...poi
quello...casomai pure GoTo e GoSub!
In definitiva e in conclusione:
non fare il mio errore...dotNet è un altro approccio rispetto a vb6
fortran cobol c...si dura una fatica bestia all'inizio
POI PERO' ripaga alla grande...fai cose che nel "vecchio modo" erano
dure da fare ed arzigiogolate parecchio!
per la stampa?
http://www.gandalfrank.altervista.org/La_Stampa_in_VB_Net_1.html
Ciao!


Certo. Questo te lo concedo. Appunto per questo mi meraviglio di una 
mancanza così eclatante.
Ciao.

 che doveva essere (IMHO) 'immediata'.
Al di la dello sfogo e tutta la discussione
(
a. Io ho solo una 15 di anni alle spalle, è MAI le stampe sono state
un problema 'banale' o 'immediato'... non menzionare nemmeno PrintForm
di VB3-VB6 quando si parla di stampe, era una zozzeria senza senso, la
stampa secca di una bitmap
b. presto imparerai che se in queste cose il buon Wodka si crogiola
come il topo nel formaggio, se gli dai corda festeggiamo Natale 2010
in questo thread
)
hai provato questo?!?
http://support.microsoft.com/kb/811401
E' una estensione molto semplice del controllo RichText, una volta
fatta, da li in poi il codice di stampa è estremamente banale e
riutilizzabile... provata con VB 2008 Express su una decina di
documenti che avevo per le mani, non è ha sbagliato mezzo, immagini
incluse

 incluse
Ci vado subito. Per  la cronaca : e il 50.mo link che vado a consultare 
concernente questo thread.
Comunque grazie.

>
Una domanda : in che lingua ti � apparso ?  A me appare in tedesco. E 
devo dire che � un tedesco perfetto, nonostante dica che � 'tradotto 
automaticamente'.

 e la se hanno informazioni su una certa classe.
Vedi sopra, ti smazzi per farlo una volta sola estendendo la classe 
RichTextBox facendo l'overload  con il tuo metodo print come piace a te 
(e mantenendo tutto il resto cos� com'e' se ti va bene) e da quel 
momento in poi la riutilizzi ovunque ti serva.
ciao
Mauro


In inglese... in alto a destra dovrebbe esserci un link per la lingua


Considerando che:
puoi avere come device video una smartphone....o un netbook....o un
monitor 21 pollici....
e che dentro puoi avere testo grafica e combinazioni varie ...es
codici a barre....
NO!...non è banale trasferire su carta una pagina video!
...sono tutti fessi quelli che comprano un sistema di reporting? Da
Crystal report in giù?
Nulla toglie di farti il tuo personale sistema di report...zioGibbì se
l'è fatto in vb6.....il buon Zanna aveva cominciato a farlo in
dotNet...chissà se il progetto è ancora vivo!
Saluti!
p.s.
Tu continui a dire che sui forum perdono righe e righe di codice per
stampare due righe su più pagine!
Nell'altro thread in ben due ti hanno risposto con codici di forse 20
righe....sto perdendomi qualcosa?
Ma di che forum parli?
Dacci i link per favore siamo (sono) curiosi(o)!
O non ci dici tutto
O ti postano altre cose
...facci dare un parere anche a noi!


vedi sopra.
Ciao.

 'Visual Basic  print RichTextBox'
Metti invece ".net printing richtextbox" e vedrai che il link che ti
ho suggerito è il primo che salta fuori; da quando ho letto il tuo
messaggio delle 11.12 a quando ho avuto il test funzionante è passata
meno di mezz'ora.... che vuoi che ti dica? sarò stato fortunato, ma
magari se prendevi la faccenda un pelo più serenamente, l'avresti
trovato anche tu facilmente e ti risparmiavi tutti questi mal di
pancia. (per esempio, non so esattamente da cosa veniva quel discorso
su Split() all'inizio, ma temo ti avessero suggerito un gran
casino....)
Perchè non l'hanno integrato nel controllo? e chi lo sa, sapessi
quante funzionalità banali dimentico io di mettere nei miei di
software...
magari hanno ritenuto una soluzione troppo OS dependant e poco
standard, visto che va a spippolare direttamente con AllocMem/FreeMem
magari non ci hanno pensato subito, sono mica il padreterno
Fatto sta che qualcuno glielo ha fatto notare nel lontano 2007, e
visto che la soluzione erano poche righe e non inficiava il codice
esistente per via di un po' di sana OOP, hanno preparato la pappa
pronta con quell'articolo e buonanotte.
Poi magari non è proprio il codice che ti serviva eh, e allora siamo
da capo, ma secondo me cercavi proprio quello...

 da capo, ma secondo me cercavi proprio quello...
ho due alternative valide : una, quella delle risposte al 'quiz' e 
l'altra quella del link, col metodo PrintCTRl da scriversi ex nove.
Quella che ha più senso è la seconda, ma onorerò comunque il mio impegno 
della cena.
Basta contattarmi via email. :-)

 problema. E'cambiato totalmente il modo di lavorare !!
Guarda, non è tanto un problema di OOP o meno, il fatto è che, con un
vecchio VB, che pure era orientato agli oggetti anche se non
interamente, la mole di classi e funzioni a disposizione del runtime
era una piccola frazione di quello che c'è adesso nel framework
Il classico "Balena", tra i nostrani, è un tomo di spessore non
indifferente eppure gratta appena un po' più della superfice, e per
forza di cose lascia fuori svariati argomenti anche interamente.
Da qualche parte abbiamo ancora il set cartaceo di VB5, credo l'ultimo
VB con la documentazione stampata inclusa, ed erano già allora 3-4
volumi belli grossi... se vai a vedere nel browser degli oggetti la
Namespace Microsoft.VisualBasic.xxx adesso solo una goccia nel mare
delle System.yyy
Lo stesso vale per qualsiasi altro linguaggio di qualche anno fa...
purtroppo non è più pensabile di fare libri come i "reference" che
esistevano una volta, dove avevi tutte le tue belle funzioni in ordine
alfabetico, la mole è semplicemente troppo grande adesso, quidni
tendono ad essere molto generici o molto specializzati

 tendono ad essere molto generici o molto specializzati
Eh sì purtroppo me ne sto rendendo conto.
vabbé, tutta esperienza.
Invece meno male che col PHP è diverso. MI sono comrato due libri la 
settimana scorsa coi quali penso di poter lavorare egregiamente :
PHP5 - Guida completa (Gutman, Bakken, Rethans)
PHP, Apache e MySQL (Naramore, Gerner, LeScouarnec,Stolz,Glass)
Mi sembrano ottimi.
Cosa c'entrano col Visual-Basic ? Niente.
facevo solo un confronto per dire che meno male che al giorno d'oggi 
esisono ancora linguaggi, le cui 'features' si trovano ancora descritte 
completamente sui libri... :-)))

 On 21.03.2010 11:33, Luca D wrote:
sigh
vabbe signor john...non ci si schioda di un millimetro.....
aggiungi carne che alla fine non è neppure fuoco...ne carne.....
Tu mi parli di inserire Richtextbox...etc etc....
MA ....non eri soddisfatto del Net???? Ovvio che una ricerca del
genere ti riporta di tutto....perfino come si fa in haskell a stampare
un qualcosa contenuto in una textbox....forse un ripasso sui motori di
ricerca e il loro funzionamento non farebbe male. Modulo 7 ECDL se ti
interessa!
E poi forse per confonderci...metti carne sul fuoco senza badare se
sia carne pesce manzo capriolo o marmotta!
Va che l'esempio del php non calza bene eh!
PHP è un linguaggio scarsamente tipizzato pur avendo un supporto
OOP...tra l'altro escludibile e usabile i modo procedurale!
Php ha le sue idiosincrasie forse anche maggiori di dotNet!
poi....php è una cosa dotnet un altra....un programma gestionale non
ce lo fai in php!
Se proprio devi perdere tempo e vuoi studiare qualcosa di oop e ti fa
schifo il dotnet......studia il Java....o il C++!!!
Però questo melting pot di concetti non ti aiuta...te lo avrei detto
sia che tu avessi 20 o 70 anni!!!
Una persona seria....parte dall'inizio ed arriva progressivamente alla
fine....non ci sono scorciatoie!
Cazzo per essere mezzo tedesco ti son rimasti geni nordafricani
potenti eh!!!...
E per terminare la discussione(per me ovvio).....non esiste un metodo
print per l'oggetto RTFtextbox
il perchè?
Intuitivamente ti posso dire
-) perchè c'è una scelta di marketing: vendere strumenti professionali
di reportistica
-) Per una ragione tecnica : rtf è un formato con molte
variabili...stampare un maniera "cachevole" non avrebbe senso.
Stampare testo ed immagini di un documento non è banale!
Quindi cosa ti danno?
Mattoni base per espandere la classe ed implementare il tuo
printReport.
Non mi pare una cosa malvagia considerando le innumerevoli variabili a
cui è soggetta una stampa!
Considera che qui da noi esistono anche "stampanti" che hanno un
raggio laser o una lama e che stampano/tagliano il tessuto dei futuri
vestiti!...o di stampanti A3 su acetato per pannelli industriali....di
tutto mi fiderei per comandarlo tranne che di un Miodisegno.print
sviluppato da qualche parte del mondo da non so chi!...si parla di
centinaia di euro (migliaia a  volte) di danno se la stampa non è più
che perfetta!
E con questo chiudo....
in sintesi....
DotNet c'ha un sacco di roba....se riesci a sviscerare un po di
namespace....riesci a fare bei lavori: professionali,economici, con
poco tempo di sviluppo/testing.
Per farlo però bisogna studiare....studiare....studiare....
Ovvio che se a una certà età ci si siede sugli allori del glorioso
passato...tutto il futuro ci sembra inutile "pastella culturale"!!!
...quindi...imho....dotnet non è la risposta definitiva a tutto....ma
parecchia sovrastruttura mentale sta anche nella tua
testa.....legittimamente ovvio! Però per me è più un problema tuo di
resistenza a nuovi concetti....che di concetti sbagliati!
Cordiali saluti
passo e chiudo!


Non č resistenza. E' la vecchiaia.  :-)
Ciao.
John.


tipica sfiga dei 'total beginnners' come me e l'immediatezza con cui 
tutto funziona alla prima come a voi esperti.
Adesso che la febbere è un po' passata mi sono accostato 'serenamente' 
all'esempio che hai linkato. Creato un progetto nuovo, copiaincollato
il code in due moduli diversi , un 'controllo' ed un 'namespace'. Ho 
anche provveduto a dare il nome corretti (RichTextBox invece di RTB come 
le chiamo io sempre) proveduto ad inserire i PrintDialog e PrintDocument 
tools, che prima il compilatore mi dava errore, e cosa credi che abbia 
ottenuto ? Una caterva di errori.  Non trova quasi niente.
Io, dato che la vecchiaia mi ha reso molto intollerante, a questo punto 
sarei propenso ad abbandonare tutto. Ma voglio dare un'altra chance al 
destino.
Andrò pazientemente a spulciare tra i 150 messaggi di errore che mi dato 
il compilatore e vedo se riesco a cavarne qualcosa.
Buona giornata.

 ottenuto ? Una caterva di errori.  Non trova quasi niente.
Non ho capito bene a cosa ti riferisci quando hai incollato in un
modulo "controllo" e un modulo "namespace", perchè le indicazioni
dell'esempio erano diverse.
Io l'ho fatto addirittura più semplice di come diceva, invece di fare
una DLL a parte ho semplicemente avviato un progetto con una classe e
una form... con VB 2008 ha funzionato subito.
Siccome me la sentivo un po' colare dal naso, mi sono tenuto quel
codice di test... puoi scaricarlo da qui:
http://www.megaupload.com/?d=2RPNY7YA

 
http://www.megaupload.com/?d=2RPNY7YA
Senzaltro sono un imbranato perchè è proprio l'esempio che avevo 
scaricato prima. Ora l'ho scaricato di nuovo e vedo che è differente.
Tuttavia, quando estraggo il tutto, mi crea due directories con dei 
files VB. Nel secondo esempio c'è RTBE_xVB  e Sample.VB
Io clicco su  .vbproj, e infatti parte automaticamente la IDE ma una 
volta aricato il tutto, non so più come andare avanti.
Il solution explorer 'trova' tutti i files e li mostra correttamente
Però non vedo nessun Form 'main'. Non so come procedere.
Insomma sono ancora troppo a basso livello in certe cose.
I'm sorry.

 Però non vedo nessun Form 'main'. Non so come procedere.
In che senso? Non devi fare niente, è tutto pronto, lancia un build
del programma, e comincia a vedere se si comporta come serve a te...
poi puoi entrare nel merito del codice, che trovi nella classe e nei
vari pulsanti della form... la finestra di partenza è 'Form1', l'unica
che c'è
Quando hai giocherellato un po' con l'esempio, quello che dovrai fare
per integrarlo nel tuo programma è di inserire lo stesso controllo nel
progetto (meglio a quel punto seguire il suggerimento del sito MSDN e
farlo in un progetto a parte come Class Library), togliere il RichText
standard dalla tua form, sostituirlo con questo nuovo (tutto il codice
esistente resta compatibile) e copiare il codice di stampa come da
esempio.

 esempio.
sarebbe bello se veramente fosse cos�. Ma a me non riesce di fare il 
build (la freccetta in alto, cio� il 'run') ma non mi esce niente.
Mi dispiace di essere cosi imbranato, ma questo va al di l� delle pi� 
pessime previsioni.
Ti giuro che con IDE ho pi� esperienza di quello che sembra.,.. :-)
Grazie comunque.

 diverso.
Perdonami ma non ci sto capendo niente... quell'esempio l'ho scritto
io da zero, copiando il codice dall'articolo incriminato, e l'ho
uploadato 5 minuti prima di scrivere il messaggio qui sul NG, com'è
possibile tu lo avessi già scaricato in precedenza?!?
Inoltre, nel mio progetto non ci sono assolutamente i file "RTBE_xVB
e Sample.VB" che hai indicato prima... l'ho riscaricato per sicurezza
e corrisponde a quello che ho sul mio PC; dentro l'archivio
RichTextPrint.zip dovresti trovare:
<DIR>          RichTextPrint
             936 RichTextPrint.sln
e quindi in RichTextPrint\
<DIR>          bin
<DIR>          My Project
<DIR>          obj
         4.310 Class1.vb
         5.471 Form1.Designer.vb
        22.519 Form1.resx
         1.819 Form1.vb
         5.264 RichTextPrint.vbproj
             74  RichTextPrint.vbproj.user

               74  RichTextPrint.vbproj.user
Allora andiamo per gradi.
Adesso vado di nuovo ad aprirmi il link
http://www.megaupload.com/?d=2RPNY7YA
di cui al tuo ultimo post di ieri delle 22.23.
Dammi un po' di minuti e ti do un resoconto dettagliato di cio' che succede.



mi esce una pagina, sulla quale do' il codice che si vede in alto (XPD2)
e mi scarico il RichTextPrint.zip
poi aspetto 40 secondi (NON sceglo il download premium perchè non si sa 
mai che costi qualcosa...)
ha scarticato 152 MB....lo stesso di ieri notte...
Lo trasporto col pendrive sull'altro PC che ha l'IDE VB 2008
apro il tutto.
sì.
c'è il Progetto  con Class1  e Form1.
Faccio il loading del progetto.
C'è la schermata con quattro bottoni.
scrivo qualche riga,
, faccio il Preview  e  poi print.
Stampa il tutto !!
ECCELLENTE ! Grazie.
Vado a vedere che kakkio era successo ieri per due volte.
è successo che avevo scaricato da un link (tra i tanti che avevo 
scaricato) un altro progetto che si chiamava RichTextBoxPrinting
e avevo preso quello invece di prendere il tuo.
OK.
Adesso tutto è risolto.
Adesso vado a studiarmelo bene.
Per me è stato un grande aiuto.
Questo senzaltro chiama per un festeggiamento al ristorante '5 Maggio'.
Io dopo Pasqua ci vado. Te e tutti gli altri che hanno dato i feedback 
su questo problema siete cordialmente invitati.
Vuol dire che se non viene nessuno festeggio da solo !!!  :-))
Grazie mille ancora !!!
John.

 possibile tu lo avessi già scaricato in precedenza?!?
Permettimi ancora di ringraziarti sentitamente e ad alta voce.
Mi hai procurato ESATTAMENTE la cosa di cui avevo più bisogno e
in un modo chiaro, limpido, leggibile.
Parlo del code che hai scritto tu, un ottimo esempio di come importare 
una classe (RichTextBox) e aggiungerci un metodo che non c'era.
Così facendo, noto, non c'è piú stato bisogno di 'trappare' l'evento 
'Print' del Printpage per mezzo dell'Handle...e  Adresseof.... nel code
'chiamante'.
Il tutto è così più chiaro. basta solo leggerlo e leggerlo e leggerlo 
ripetutamente e rifarsi ad altra letteratura su .NET per capire come 
sono le classi originali esistenti (RichTextBox) e continuare ad 
approfondire l'esperienza fatta fino qui.
Bravo !  Grazie mille.
Ora non dovrò più rompere i coglioni a nessuno sulle RichTextBox....!!!
(mi sembra di sentire un coro in lontananza '..meno male...era ora..' )
:-))
Vabbé, scusate per la rottura, tutti quanti.
Alla prossima.
PS - L'invito al ristorante rimane. :-)

 una classe (RichTextBox) e aggiungerci un metodo che non c'era.
Prego... io comunque ho fatto solo la bassa manovalanza, mettendo
insieme il codice dell'articolo in un progetto vuoto e facendo due
test, il resto è tutta farina del MSDN
A buon rendere, ciao


Ciao, eccomi di nuovo qua.
voglio 'integrare' il tuo esempio nel mio progetto ed ho dei problemi di 
inserzione della  Class1.
Sto tentando di aggiungerlo come 'classe' ma mi dà errore.
Si lamenta della posizione degli 'imports' e dell'Option', e dice che 
vanno messi 'prima di ogni altro statement'.
E pure il 'namespace' deve essere il primo del file.
Non so come uscire da questo.
Hai idea di come io debba integrare la tua classe1 nel mio progetto ?
Avevo provato anche ad aggiungerla in un 'module'. Ma mi da lo stesso 
errore.

 E pure il 'namespace' deve essere il primo del file.
Ma stai semplicemente aggiungendo il file così com'è al progetto (cosa
che dovrebbe funzionare senza problemi, ed è anche la più pulita) o
stai cercando di fare un copia&incolla dentro un file che contiene
altro codice??
Perchè il messaggio sembra segnalare questo secondo caso...


E' il secondo caso, ma 'innocuo' . Mi spiego :  dal menu 'Project' ho 
cliccato 'add new class', quello mi ha aperto un nuovo file vuoto ed io 
ho copiaincollato il testo. Tutto qui.
Non c'era testo aggiunto o altro.
Tu dici che io devo smeplicemente copiare il file dentro il progetto e 
dal menu project cliccare 'add new element' ??
Provo subito a fare questo.


L'ho fatto. E compila perfettamente come prima.
Mattuguarda che razza di  differenze fa 'sto buzzurro di compiler.
Se io creo una classe vuota e ci copioincollo la tua classe mi dà errore.
Se invece la includo come 'Add Existing Item' al progetto, mi va tutto bene.
E poi dice che uno si sincazza con il compiler... :-))
Grazie ancora per il suggerimento.

incluse
Scusa, ma io, in altro 3d, avevo inviato un messaggio con il seguente link:
http://msdn.microsoft.com/en-us/library/ms996492.aspx
Il suddetto collegamento porta ad una pagina del sito MSDN che ha il 
seguente titolo:
"Getting WYSIWYG Print Results from a .NET RichTextBox"
Non è praticamente la stessa zuppa? Inoltre, a quell'indirizzo, c'è anche la 
possibilità di scaricare un progetto di esempio già bell'e pronto.
Solo per curiosità.
    Alex


Forse era appunto il primo progetto che avevo scaricato e che non mi 
riusciva di far funzionare. Era quello con i files RTBExVB e SampleVB, 
vero ?
E' la stessa 'zuppa' alla fine, ma le classi sono leggermente diverse 
(ad una prima occhiata).
Il fatto � che a me non aveva funzionato subito alla prima.

 E poi dice che uno si sincazza con il compiler... :-))
Sicuro, sicuro che era vuota ?!
Avevi anche cancellato anche i Class... End Class vuoti che aggiunge
lui in automatico?!
Perchè altrimenti le due cose sono davvero equivalenti, ma se ti
diceva che "non è la prima istruzione", vuol dire che qualche
schifezza nelle righe sopra c'era

     Alex
Si, vista anche quella; il codice significativo è proprio lo stesso,
cambia solo qualche dettaglio di contorno.
Per non sapere leggere ne' scrivere, visto che questa è datata 2003
mentre l'altra è datata 2007 e cita esplicitamente Visual Studio 2005,
io ho fatto riferimento alla più recente.


Puo darsi ma era invisibile. Comunque ora quella è risolta.
Ce n'è un'altra (e magari ne arriveranno altre) :
Ho un errore di compiler e mi dice che a runtime non posso cambiare le 
proprietà di una RichTextBox. Infatti io voglio 'cambiare il senso di 
scrittura'  da LeftToRight (default) a RightToLeft = True e non me lo 
permette.
Mi dice : Option strict On disallows implicit conversion from Boolean to 
System.Windows.Forms.Right to Left.
Devo cercare un metodo per non averne bisogno di cambiarlo a Runtime.
Ma questo è un test, e sto usando IL TUO programma di esempio, per 
testare. Cioè ho aggiunto due bottoni uno 'LeftToRight' E l'altro 
'RightToLeft' in modo da alternarli a piacimento.
(Il mio software dovrà scrivere in arabo).

 System.Windows.Forms.Right to Left.
RightToLeft si può cambiare a runtime tranquillamente; leggi bene il
messaggio di errore, ti sta dicendo tutta un'altra cosa, molto
banale...

 banale...
Maro'...quanto la fanno complicata...
Vogliono l'assegnazione a "Windows.Form.RightToLeft.Yes"  oppure  ...No.
Ma so' matti quelli !!!

 Ma so' matti quelli !!!
Loro?....sei sicuro?
Option strict On disallows implicit conversion from Boolean to
System.Windows.Forms.Right to Left.
DICE ALTRO....traduco in "volgare" quello che il tio povero pc ti sta
dicendo...
"
Caro JohnUmano se tu mi attivi l'opzione del controllo stretto io poi
non ti consento più di fare una conversione tra pere e mele!
Perchè vabbe che sono due frutti, l'ho capito anche io ceppicone di un
piccì, ma tu mio padrone adorato mi hai detto di non fare conversioni
implicite....ed io obbedisco!
Le mele si comparano con le mele....le banane con le banane
....se tu volessi disattivare quel cazzo di STRICT probabilmente
diventerei più di bocca buona ed alcune cose te le passerei!
D'altronde sai...i miei creatori erano ossessionati dai comportamenti
indesiderati dei sw sviluppati da programmatori fai-da-te....mi han
fatto diventare un ambiente di sviluppo ad oggetti fortemente
tipizzato.
Ci sono vantaggi sai a fare ciò...ed anche svantaggi (come
sempre)....uno svantaggio è una prolissità maggiore....
ma se ciò significa fare codice più robusto....c'è chi lo apprezza!
Non tu mio ingrato padrone....pazienza...puoi sempre reinstallare il
cobol e vivere felice!
con affetto
JohnPiccì
"
eh eh eh :)

tipizzato.
Io adesso sto facendo una cosa con Python, e mi trovo bene anche se è poco
tipizzato, anzi sto apprezzando la velocità con cui sono riuscito a fare una
cosina funzionante.
Se non fosse che doveva funzionare multipiattaforma avrei usato VB5, ma sto
proprio imparando ad apprezzare questo Qt Python.
Questo per dire che si può anche utilizzare anche roba non tipizzata e vivere
felici   :-)
--
ciao
  Stefano


Direi di che stanno abbastanza bene invece; semplicemente il valore
non è un Booleano, è un tipo enum con *TRE* possibilità (Yes, No,
Inherit)


<heheheheheh>
grazie della spiegazione per informatici-over-60 che non hanno più 
pazienza e che devono essere trattati e viziati come bambini capricciosi 
di quattro anni... :-)))

 Caro JohnUmano se tu mi attivi l'opzione del controllo stretto
...e chi l'ha mai fatto ?? Io non so niente. Non ho visto niente. Io non 
c'ero. se c'ero dormivo...