384 messaggi dal 26 agosto 2007
ciao ho la necessità di memorizzare un testo molto lungo (circa 8000 - 9000 caratteri) per poi inserirli in un database con una query. Se uso la stringa però mi genera un'eccezione di tipo OutOfMemory. Come posso fare a memorizzare questo testo così lungo?

Lunga vita e prosperità!!
puoi darci maggiori informazioni?, cioè il punto preciso che solleva questa eccezione?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
384 messaggi dal 26 agosto 2007
nostromo ha scritto:
puoi darci maggiori informazioni?, cioè il punto preciso che solleva questa eccezione?

ciao marco

ti posto il codice:
string TestoFormattato = String.Empty;
            for (i = 0; i < Testo.Count; i++)
            {
                TestoFormattato += TestoFormattato + Testo[i].ToString();
            }
            return TestoFormattato;


Testo è un ArrayList di caratteri che ho precedentemente riempito con circa 15000 caratteri, praticamente è il sorgente di una pagina HTML.

Lunga vita e prosperità!!
12 messaggi dal 18 dicembre 2006
Prova ad usare StringBuilder che trovi in System.Text

Il ciclo che esegui non è per niente performate. Tieni sempre presente che una stringa è un oggetto immutabile e quindi crei N oggetti stringa. Alla fine del ciclo hai memoria occupata inutilmente da "millemila" oggetti che verranno poi eliminati dal Garbage Collector perchè verrà "presa" solo l' ultima stringa creata.

La spiegazione è molto maccheronica ma l' amico GG ti darà risposte migliori della mia.
al dilà che 150 mila caratteri non sono poi tantissimi.

non capisco il motivo del ciclo.

cosa devi fare di preciso e come mai hai un array con 150 mila caratteri?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
384 messaggi dal 26 agosto 2007
nostromo ha scritto:
al dilà che 150 mila caratteri non sono poi tantissimi.

non capisco il motivo del ciclo.

cosa devi fare di preciso e come mai hai un array con 150 mila caratteri?

ciao marco

Prima di fare il ciclo ho memorizzato tutto il mio testo in un ArrayList questo perchè devo sostituire dei caratteri specifici con una stringa ad esempio il carattere '<' deve diventare la stringa '&#60;'. Questo lavoro non lo posso fare con Replace perchè con quello posso cambiare solo un carattere in un altro carattere o una striga in un'altra stringa e non posso cambiare un carattere in una stringa. Poi con il ciclo vado a memorizzare i caratteri (circa 15000) in una stringa perchè poi mi serve per fare una query SQL.

Lunga vita e prosperità!!
35 messaggi dal 04 gennaio 2008
voyager18 ha scritto:

Prima di fare il ciclo ho memorizzato tutto il mio testo in un ArrayList questo perchè devo sostituire dei caratteri specifici con una stringa ad esempio il carattere '<' deve diventare la stringa '&#60;'. Questo lavoro non lo posso fare con Replace perchè con quello posso cambiare solo un carattere in un altro carattere o una striga in un'altra stringa e non posso cambiare un carattere in una stringa. Poi con il ciclo vado a memorizzare i caratteri (circa 15000) in una stringa perchè poi mi serve per fare una query SQL.


Come non si può?!

str1.Replace("<","&#60;");

al dilà che si può fare, comunque una bella RegualExpression ti potrebbe dare una bella mano

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.