Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Difficoltà: 2 / 5 Le caselle di testo di Visual Basic possono contenere qualsiasi stringa di testo ma, negli ambienti Windows 9x esiste un limite massimo di caratteri che possono contenere. Nei sistemi Windows NT questo limite è dettato da due fattori: memoria libera disponibile e tipologia di utilizzo dei dati. Dimostreremo in questo articolo il numero massimo di caratteri che una Textbox è in grado di contenere. La guida di VB si esprime con queste parole: "L'impostazione di Text per un controllo TextBox può contenere al massimo 2048 caratteri, a meno che la proprietà MultiLine non sia True. In quest'ultimo caso il limite massimo è di circa 32K". Tuttavia la realtà non è proprio così semplice.
Utilizzeremo un progetto molto semplice per dimostrare la capienza massima di due Textbox, una a riga singola ed una multiriga. In fondo al form ci sono 6 pulsanti divisi in due colonne da tre pulsanti ciascuna. La prima delle due colonne di pulsanti restituisce la dimensione massima della prima casella di testo, quella a riga singola; la seconda colonna di pulsanti effettua gli stessi test sulla casella multiriga. I tre test eseguono tre rilevazioni molto semplici:
Delle tre soluzioni, la terza si presenta come la più lenta, seguita dal test che utilizza la proprietà Text della casella di testo; il secondo test è invece il più veloce. Altresì i test sulla seconda casella di testo saranno più lenti di quelli sulla casella a riga singola. Lanciamo il nostro programma dimostrativo ed effettuiamo uno per uno tutti i test possibili. Noteremo che nei sistemi Windows 9x i test relativi alla Casella 1 restituiranno tutti il medesimo risultato: lunghezza della casella txtTesto1: 32766 caratteri. Questo dimostra che la prima realtà va in contrasto con la spiegazione
fornita dalla guida in linea di VB vista all'inizio di questo articolo.
Nei sistemi Windows NT invece, i test restituiscono dei valori differenti: l'uso della proprietà Text (il primo ed il terzo test, mostrati nella Figura 3) è limitato a 65535 caratteri, mentre l'uso della proprietà SelText (mostrato nella Figura 4) non presenta alcuna limitazione, se non la memoria disponibile. Per il secondo test verrà infatti restituito il risultato 308224, corrispondente a 301 * 1024, ma avrebbe potuto contenere ulteriori caratteri. Abbiamo interrotto volontariamente l'elaborazione dopo 301 esecuzioni del ciclo, che avrebbe potuto continuare ancora per molto tempo.
Le casella di testo multiriga si presentano indiscutibilmente più lente di quelle a riga singola. Nei sistemi Windows 9x qualunque sia il test che eseguiamo il risultato dovrebbe essere sempre lo stesso: il numero massimo di caratteri per una casella di testo multiriga è un numero in genere compreso tra 32000 e 35000. Nel nostro esempio a fianco la dimensione massima è risultata essere 33825 caratteri ma l'esecuzione dello stesso test con condizioni di elaborazione differenti, ad esempio con più o meno programmi aperti potrebbe produrre risultati differenti. Nei sistemi Windows NT l'operazione riflette i test della casella a riga singola: il primo ed il terzo test restituiscono entrambi il valore 65535 caratteri (vedi Figura 6); il secondo test, che utilizza la proprietà SelText, procede in maniera interminabile. Nella Figura 7 il valore 233472 è simbolico e rappresenta la lunghezza della stringa elaborata fino all'interruzione del progetto, che avrebbe portato via molto tempo, senza produrre alcun risultato utile.
Riepiloghiamo quindi i risultati, differenziandoli per sistema operativo utilizzato:
(*) Infinito indica che non esiste un limite fisso ma la capacità è dettata dalla memoria disponibile nel sistema. Si raccomanda l'esecuzione di questi test su pc differenti oppure con condizioni differenti, ad esempio all'avvio del sistema operativo potremmo avere un numero maggiore di quello fornito dopo ore di lavoro con il pc.
Attenzione: se il programma dovesse smettere di rispondere e state utilizzando un sistema Windows 9x, si raccomanda di attendere il termine dell'elaborazione. Infatti sui computer più lenti l'elaborazione dei test sulla casella multiriga potrebbe richiedere qualche minuto. Dall'esecuzione di questi test è palese la differenza di capacità tra le caselle di testo a riga singola e quelle multiriga. Viene altresì dimostrato che le caselle di testo multiriga sono molto più lente di quelle a riga singola. Nell'esecuzione dei tre test è però dimostrato anche che
l'utilizzo della proprietà SelText, come alternativa
alla proprietà Text, produce risultati di gran lunga
migliori in termini di velocità. Si raccomanda pertanto, quando
possibile, la scrittura di dati tramite questa proprietà, anziché
usando Text, predefinita per il controllo. L'unico accorgimento da tenere
consiste nel verificare la posizione in cui si trova il cursore e, se
necessario, azzerare il contenuto della casella di testo prima di concatenare
del nuovo testo. |
È anche possibile migliorare la velocità di chiusura del nostro programma azzerando le caselle di testo contenenti molti dati, prima di procedere con l'effettivo scaricamento del form, ad esempio sfruttando l'evento Unload. Fibia
FBI
|
Torna all'indice delle Stranezze |