Newsgroup: it.comp.lang.pascal
Titolo: PUNTATORI: l'area puntata cambia contenuto?

CIAO & Buongiorno!
	Invio parte di una lettera appena spedita al mio prof di informatica:
avrei bisogno di una vostra opinione!!
	In allegato c'è la struttura di dati che, purtroppo, non funziona.
1) se il problema è dovuto al fatto che la sturttura è definita nel
programma principale, mentre l'inserimento e l'elaborazione dei dati
avvengono in UNIT separate;
2) oppure se, a cause dell'utilizzo di puntatori globali e non di variabili
globali, il valore del puntatore si preserva efficentemente (l'ho
verificato), mentre il contenuto della cella di memoria viene alterato a
causa della chiamata di diverse sottoprocedure
3) se, per estremo rimedio, non debba considerare di tenere una piccola
parte del database in memoria e prevedere di gestirlo nella sua globalità
su memoria di massa.
4) esiste qualche parametro da modificare nella configurazione del Borland
Turbo Pascal 7 per sfruttare almeno 16Mb di ram a disposizione? (la
struttura in array anziche a puntatori non occupa più di un mega, ma mi dà
STRUCTRURE TOO LARGE!!)
	Ciao e grazie!
p.s. se leggi questa mail, mandami un segnale anche a 
noda...@promo.it
unit prosuper;  { COLLEZIONE DI PROCEUDURE COMUNI A PARTI DEL PROGETTO   }
interface
 const
  nummaxpag=8;    (*il num. mass. di pagine dati*)
  nummaxcar=8+1;    (*il num. mass. di caratteri da analizzare*)
    (* nella statistica multivariata si esaminano pi— caratteri
contempor.*)
    (* l'ultima colonna contiene la frequenza della tupla ordinata *)
  numperpag=1000; (*il num. mass. di rilevamenti per pagina*)
    (* i dati sono memorizzati per tuple: vettori ordinati di caratteri *)
  carperlab=10;   (*char per i nomi delle modalit… delle variabili*)
  nummaxeti=10000;
  cs = '#';    (*carattere speciale*)
  ordinali : array [0..11] of string[7] =('','primo','secondo','terzo',
 
'quarto','quinto','sesto','settimo','ottavo','nono','decimo','esimo');
 type
  dato  = single;
  caratt= array [0..numperpag] of dato;
  pagina= array [0..nummaxcar] of ^caratt;
  indice= array [0..nummaxpag] of ^pagina;
  etich = record
               cara, posi: integer;     (*sia per le modalit… e per i
caratteri*)
                (*posi Š la posizione nell'elenco ordinato delle modalit…*)
               nome: string[carperlab];
               iniz: dato; (*iniz gli intervalli di valori la fine Š
nome=CS*)
              end;
  classific = array [0..nummaxcar] of shortint;
 var
  xx,yy,tt: integer;      (*globali*)
  memoria : indice;       (*tabella dati*)
  discreto, perclassi: classific;
  nmodipercar: classific;
  etichette : array [0..nummaxeti] of ^etich;
[.... ect ect ect.....]
   function punta (carattere, posizione: integer): dato;
    var
     pagina, indice: integer;
    begin
     pagina := (posizione div numperpag) +1;
     indice := posizione mod numperpag;
     if indice=0 then indice:=numperpag;
     punta:=((memoria[pagina]^)[carattere]^)[indice]
    end;
[.... ect ect ect.....]
   function registra (carattere, posizione: integer; numero:dato): dato;
    var
     pagina, indice: integer;
    begin
     pagina := (posizione div numperpag) +1;
     indice := posizione mod numperpag;
     if indice = 0 then indice:=numperpag;
     if ( indice = 1 ) and ( carattere = 1 )
      then memoria[pagina]:=nuovo (sizeof(memoria[pagina]));
     if indice = 1
      then (memoria[pagina]^)[carattere]:= nuovo
(sizeof((memoria[pagina]^)[carattere]));
     ((memoria[pagina]^)[carattere]^)[indice]:=numero
    end;

STRUCTRURE TOO LARGE!!)
L'unica soluzione è utilizzare la memoria estesa tramite le opportune
routine di interfaccia da scrivere per conto proprio, pero'.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

 wrote in message
3806204...@diesel.cu.mi.it...

Se il problema e' la memoria ed il compilatore e' il Borland Pascal (BP)
allora, secondo me, ti conviene utilizzare la modalita' protetta.
Ciao!
Simone.
_____________________________________________
"....c'e' vita nell'universo ?"
"Giusto un po' il sabato sera...."
            C.Guzzanti
e-mail:  
drfa...@libero.it
 
drfa...@tiscalinet.it
 
drfa...@tin.it
web:     
http://www.tiscalinet.it/drfalken
 
http://free.prohosting.com/~drfalken
ICQ#:  19598133
_____________________________________________