Newsgroup: it.comp.lang.visual-basic
Titolo: [?] dimensione tipo String

è vero che la dimensione massima di un tipo String variabile è di 2^31 ?
allora perche se faccio
dim a as string
a=string$(300000000,65)
mi da un errore di spazio stringa esaurito ?
come faccio ad essere sicuro che arriva davvero a 2^31 ?
e come faccio a sapere in quale odo è possibile assegnare in maniera
"sicura" un valore molto grosso ad una variabile stringa, senza rischiare di
cadere in questo errore ?
(piu vado avanti e piu il VB mi diventa meno simpatico... ::)))))
MarioH

 (piu vado avanti e piu il VB mi diventa meno simpatico... ::)))))
dopo quella riga di codice in cima, credo che anche VB non ti veda piu' di
buon occhio ;-)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 i tuoi 300.000.000 di "A" non scherzano (quasi 290 Mb), fai tu...
600.000.000 prego: VB lavora in unicode :)
Ciao
------------------------- SiDB Simple DataBase engine ----
------------------------- adParser Expression evaluator --
 
http://space.virgilio.it/zntf...@tin.it/
----------------------------------------------------------


perche ci devo mettere dentro tutto un file... con la funzione ReadFile... e
non so quanto puo essere grosso questo file...
sarò costretto a spezzettarlo in pezzettini da 4-5 MB... cosi almeno andiamo
sul sicuro...
MarioH

 600.000.000 prego: VB lavora in unicode :)
Giusto, giusto... mi brucia ancora un'altra "cappella" che ho fatto una
volta usando un LenB su una stringa ;-)


 sul sicuro...
Esatto, indipendentemente da quanto detto sopra, se devi lavorare su file
molto grossi la lettura a blocchi e' consigliata... non so esattamente cosa
tu debba fare dei dati letti ma con questo sistema potresti allocare il
buffer, elaborare il blocco, riscriverlo su disco e passare al blocco
successivo, utilizzando una quantita' ragionevole di memoria per volta.



era quello che avevo pensato pure io, però se poi quado faccio
a=space$(lunghezza)
mi da un errore, allora salta tutto....
visto che ci sono... secondo voi la funzione ReadFile puo avere, al posto
del parametro stringa che riceve il buffer, un array di bytes ?
io gli passerei arrBytes(0)... secondo voi è... rischioso ?
MarioH

 io gli passerei arrBytes(0)... secondo voi è... rischioso ?
Un array di byte e' una stringa.
Non lo dico io, lo dice VB6.
Per la precisione, un array di byte lungo n, ad esempio 4 (0->3),
corrisponde ad una stringa di n/2, nell'esempio due, caratteri.
E non mi chiedere che fine faccia il NULL terminator perche' e' una cosa
nota solo a VB.
Io ho osato, ai tempi, caricarmi in memoria 3M di file, ma sono stato
costretto (il file arrivava via POST da una pagina web e il mio componente
era sotto ASP).
Oggi come oggi, sapendo di dover lavorare su file molto grossi (oltre i
10-15M) li lavorerei a linee oppure a blocchi binari, grandi almeno tre
volte la massima stringa di ricerca, in modo da non dovermi complicare
troppo la vita con le ricerche sovrapposte (in cui devi caricare anche gli
n-1 byte precedenti, con n lunghezza della stringa di ricerca, per essere
sicuro di non esserti scordato un pezzo).
Ciaotutti,
*

 nota solo a VB.
Perchè VB usa le OLE BSTR che hanno davanti il descrittore di lunghezza.
Vedi "Passaggio di stringhe a una routine DLL"
Ciao

 Vedi "Passaggio di stringhe a una routine DLL"
Vedi "Passing Strings to a DLL Procedure", nonche' "Chapter 6: Strings" di
HCVB ;-)
Ciaotutti,
*

in ram, ma ti faccio da subito vivissime condoglianze...
Non serve *copiare* il file in memoria per averne il contenuto in 
memoria, "swapping" ti dice nulla? ;) E' sufficiente mappare il file 
come fosse una sezione di memoria, e te lo ritrovi direttamente lě, 
nella tua memoria virtuale. Vi siete mai chiesti che cosa sia quel 
misterioso App.hInstance?

[...] "swapping" [...]
ups! volevo dire "paging"

 misterioso App.hInstance?
Hyper, tu fai l'APIcultore per mestiere ma non tutti sono cosi' addentro :PP
Ciaotutti,
*


infatti... che ne so io di come si "mappa" un file... ??!!??!!
ecco, tutto questo perche non sono riuscito a comprare quel maledetto libro
di Appleman, e ora sulle Api so poco o niente... tranne il fatto che
pungono!!!!! ::))))
MarioH