Oppure

Loading
06/07/10 21:56
Convinto che array di lunghezza variabile non esistessero in pascal mi ero quasi arreso alla impossibilità di ottenere campi di lunghezza variabile nei giochetti che programmo. Leggendo però la documentazione di FPC ho trovato una procedura setlength(array,dimensione_a,eventuale_dimensione_b) mi sono risollevato. L'ho implementato nel pacman che sto sviluppando per mi restituisce un errore in fase di runtime. Se setto la dimensione_a <= dimensione_b il programma crasha. La prima dimensione deve essere sempre maggiore della seconda. Non me lo so spiegare?!
06/07/10 22:11
a_butta
mmmh... questa non la sapevo neanche io... anzi grazie per l'informazione mi potrà essere molto utile...

Sinceramente non so cosa possa essere però così a occhio mi chiedo: potrebbe essere il fatto che non può distruggere da solo delle parti di array che erano state settate?
cioè intendo, quei valori dell'array compresi tra dimensione iniziale e finale potrebbero essere un problema?
prova ad annullare quei valori con qualcosa come
mioarray[5{o quello che sia}] := null
o qualcosa del genere...
Fammi sapere perchè mi interessa l'argomento.:asd:
aaa
06/07/10 22:30
HeDo

prima di sparare senza collegare le dita al cervello leggete le reference per favore:

freepascal.org/docs-html/ref/…
aaa
06/07/10 23:02
Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:

An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);40C844 : EAccessViolation : Access violation Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);40C844 Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);401D28


quando faccio:
setlength(A,10,22);
06/07/10 23:03
HeDo
Postato originariamente da Giarados:

Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at 
Postato originariamente da Giarados:

Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);


semplicemente perchè NON è detto che la memoria oltre il boundary dell'array già allocato sia tua :)40C844 : EAccessViolation : Access violation
Postato originariamente da Giarados:

Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);


semplicemente perchè NON è detto che la memoria oltre il boundary dell'array già allocato sia tua :)40C844
Postato originariamente da Giarados:

Beh, dopo averlo letto per la quarta volta continuo a non riuscire a trovare dove mi spiega perchè ottengo:
An unhandled exception occurred at {parsed_message}40C844 :
EAccessViolation : Access violation
  {parsed_message}40C844
  {parsed_message}401D28


quando faccio:
setlength(A,10,22);


semplicemente perchè NON è detto che la memoria oltre il boundary dell'array già allocato sia tua :)401D28


quando faccio:
setlength(A,10,22);


semplicemente perchè NON è detto che la memoria oltre il boundary dell'array già allocato sia tua :)
aaa
06/07/10 23:45
Scusa, ma il setlength non serve ad allocare la memoria per contenere i valori contenuti negli array? ergo, se non funziona in questo modo allora come faccio ad ottenere un array di dimensione variabile?
07/07/10 0:02
HeDo

ricordati che l'array va dichiarato senza bounds, così il compilatore capisce che si tratta di un array dinamico
aaa
07/07/10 11:21
beh, io lo dichiaro come

vettore:array of array of byte;