Newsgroup: it.comp.lang.delphi
Titolo: Utilizzo della memoria

Ciao,
Secondo voi quanta memoria occupa questo array
MioArray [1..6, 1..100] of String;
Non capisco bene come effettuare il calcolo, Ma soprattutto se la
memory viene allocata in modo statico o dinamico. Infatti la maggior
parte dell'array è vuoto. Un packed array determinerebbe dei
rallentamenti nell'uso dell'array stesso che devo scorrere in modo
sequanziale per creare un file XML ?

 sequanziale per creare un file XML ?
Penso che l'uso di un "packed array", in questo caso, sia ininfluente.
Non conosco bene ciò che devi realizzare, ma sono quasi certo sulla 
fiducia - anche all'oscuro di tutto - che vi siano modi migliori 
rispetto a quello che hai adottato. :-)
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 rispetto a quello che hai adottato. :-)
Innanzitutto grazie per l'interessamento al mio post, mi scuso anche
per il contenuto un po' banale.
Credo che la tua affermazione sia più che corretta, mi spiego meglio.
Ho un file di testo generato da una string grid che viene salvata e
utilizzata più volte nell'interno di un programma a cui sto
effettuando delle modifiche. Chi ha realizzato tale applicazione ha
previsto un salvataggio della suddetta per colonna.
Es.
col=1, row=2 name=xxx data1=yyy data2=zzz
col=1, row=3 name=xxx data1=yyy data2=zzz
.....
però l'XML da creare scorre le righe row1... vari TAG, row2 vari TAG
etc. etc.
Mi chiedevo quindi se fosse meglio creare uno swap file su disco
girando l'ordine (salvataggio per riga) oppure caricare tutto in
memoria e scorrere l'array. L'array è locale.... A proposito scusate
l'ignoranza ma una string[255] quanti byte alloca ?
Ciao e grazie Ambro

 rispetto a quello che hai adottato. :-)
Quali ? Qui siamo veramente alle comiche... Facciamo una colletta x far 
iscrivere qualcuno all'Università ? 
Usa tranquillo l'array...
 Integer (intero)                              2 byte 
 Long (intero lungo)                           4 byte 
 Single (precisione semplice, virgola mobile)  4 byte
 Double (precisione doppia, vigola mobile)     8 byte 
 String (stringa)                              1 byte per carattere
 Byte                                          1 byte
 Boolean                                       2 byte
 Date                                          8 byte
 
Nel tuo caso circa 100x10x255 sei meno di 255KB di memoria in locale !
--- posted by geoForum on 
http://www.delphiedintorni.it

 l'ignoranza ma una string[255] quanti byte alloca ?
Non c'è alcuna attinenza tra gli elementi che hai citato nel tuo 
messaggio: prima dici che la griglia viene salvata in un file di testo 
per colonna, poi parli di file XML, poi chiedi se è meglio creare un 
file o un array, poi lo spazio di occupazione di un altro tipo di array.
Riassumendo sinteticamente: cosa devi fare di preciso? qual è il fine 
ultimo? poi magari la soluzione più efficace per ottenere quello che 
chiedi potrà essere suggerita da me o da altri.


 chiedi potrà essere suggerita da me o da altri.
Scusate per il post un po' confuso.
Prelevo i dati da un file di testo dal quale devo generare un file
XML. Il file di testo deriva da una grid e i dati in esso sono salvati
per colonna.
C=1, R=2, Testo1
C=1, R=2, Testo2
C=1, R=3, Testo3
C=2, R=1, Testo2
C=2, R=2, Testo2
C=2, R=3, Testo2
etc.
Però ogni tag del XML  viene creato leggendo le informazioni riga per
riga.
Leggo Riga1  creo TAG XML
Leggo Riga2  creo TAG XML
Leggo Riga3  creo TAG XML
Quindi pensavo di caricare tutto in un array 100x10 di string[255]
Però mi chiedevo quanta memoria questo potesse assorbire, sebbene è in
locale e quindi in definitiva dà un picco di utilizzo di memoria,
giusto ?
Non sono un programmatore professionista e quindi chiedo scusa se
chiedo qualcosa che riguarda concetti base di programmazione.
In pratica pensavo a due aspetti, la memoria usata e la velocità
dell'algoritmo di decodifica per creare l'XML. Usando una StringList
le cose sarebbero più complicate dal punto di vista della gestione dei
dati, anche perchè tale algoritmo genera un file XML con alcune
migliaia di TAG.
Ciao e grazie ragazzi è un bel gruppo questo. Spero che mi accetterete
tra di voi. Ambro

 chiedi potrà essere suggerita da me o da altri.
Mi scuso per il post un po' confuso. (Riscrivo la risposta in quando
ho avuto dei prob. nell'invio)
Devo generare un file XML partendo da un file di testo. Il file di
testo deriva da celle di una stringrid e in esso le info sono
memorizzate per colonna
Col=1 Row=1 Testo
Col=1 Row=2 Testo
Col=1 Row=3 Testo
Col=2 Row=1 Testo
Col=2 Row=2 Testo
Col=2 Row=3 Testo
Devo però generare i tag per riga.
Row=1 Cells[1,1]+Cells[2,1]+Cells[3,1]+... creo TAG
Row=2 Cells[1,2]+Cells[2,2]+Cells[3,2]+... creo TAG
Row=3 Cells[1,3]+Cells[2,3]+Cells[3,3]+... creo TAG
Pensavo di usare un array [100x10] string[255] però mi chiedevo quanta
memoria questo occupasse.
Non sono un programmatore professionista mi scuso se scrivo un post su
aspetti che dovrebbero riguardare argomenti base di programmazione.
L'alternativa e scorrere su e giù il file ripetutamente o usare una
stringgrid. Però le operazioni processore e/o disco verrebbero
moltiplicate.
Il file XML andrà a contenere qualche migliaia di TAG.
Ciao e grazie che bel gruppo, spero mi accetterete tra di voi. Ambro

 Ciao e grazie che bel gruppo, spero mi accetterete tra di voi. Ambro
Qui nessuno deve "accettare" nessun'altro...: fai la domanda, e non
sentirti "estraneo" :-)
"Quick and dirty" farei così: 
1- in un ciclo fino all'eof del file carico dal file le singole righe in
tstringlist.
2-prendo i valori di ogni riga e li impacchetto nell'xml.
Aggiungi tra le uses del sorgente queste due unit:
  XMLDoc,
  XMLIntf
Quando lavori con gli XML userai sempre e solo due interfacce:
  IXMLNode
  IXMLDocument
Ora puoi istanziarti XMLDOcument e lavorare comodamente con i tag xml.
      myXMLDoc := TXMLDocument.Create(nil);
      myXMLDoc.Active := True;
Quando vuoi riferirti al nodo principale (root) dell'xml, usa
DocuementElement
      NodoRoot := myXMLDoc.DocumentElement;
Una volta ottenuto il nodo di riferimento, puoi aggiungere, togliere e
sostituire tutto cio' che ti pare passando per i metodi che si riferiscono
ai childs. (addchild, replacechild, eccc)
(se premi f1 sulla parola IXMLNode ti si schiuderà un mondo davanti)
Quindi, una volta che hai in una tstringlist la riga della tabella viene
letta e inserita nei tag xml opportuni
NodoRiga := NodoRoot.AddChild('righe');
NodoRiga.SetAttribute('RIGAxx','VALORE');
Siccome non includi una struttura xml di riferimento non saprei come
combinarti i tag. Stessa cosa dicasi per la struttura del file da leggere
ed importarsi.
Forse ti ho detto cose che già conosci, nel caso riposta e spiega
dettagliatamente strutture e problemi.
Ciao
-- 
Morde

   XMLIntf
......
Grazie mille

 Ciao e grazie che bel gruppo, spero mi accetterete tra di voi. Ambro
Andrea

 generare il tuo file xml?
Per scrivere il post ho un po' sintetizzato quella che in realtà è la
struttura di riferimento.
Vengono creati più file di testo da una stessa griglia (sfogliando le
pagine), fino a 100, in realtà di media sono 5 o 6.
Quindi si usa la stessa stringgrid, vengono generati un certo numero
di file di testo temp che poi
vengono consolidati alla fine della fase di input da parte
dell'utente.
Solo alla fine tenendo conto di tutto si genera il file XML.
Però ogni file andrebbe (permettimi il paragone geometrico) ruotato di
90 gradi ;-)
Ciao buone feste Ambro

 Ciao buone feste Ambro
Andrea

 In ambito lavorativo ciò accade spesso anche alle persone... ;-)
:-)
Ciao e grazie

 Ciao e grazie
Ciao,
Andrea

 Delphi 7 che? Standard? Pro? Enterprise? Architect?
Professional
ciao

 ciao
Ciao,
Andrea

 I file XML funzionano per NODI non per righe... quindi la domanda resta.
I dati dell'applicazione sono organizzati per "righe". Da ogni riga
viene creato poi un TAG.
Attualmente faccio così, ottenendo l'XML correttamente:
1.Inizia scrittura file di testo con estensione .XML
2.Carico la matrice colonnexrighe nell'array in memoria
3.Processo la matrice riga per riga
4.A seconda del contenuto della riga creo o chiudo un TAG (4 spazi)
5.Chiudo file XML.
6.Ottengo diversi file XML (necessario averli) e li fondo insieme.
Funziona tutto bene, per questioni di tempo credo che accetterò questa
soluzione. Mi riservo però in futuro di approfondire tali tematiche,
ti ringrazio e mi scuso per la soluzione poco professionale che sto
adottando.
Ciao e grazie.

 Ciao e grazie.
Ciao,
Andrea

 diventa focale per te, perché non è detto che il tuo programma


 Ciao
Andrea