Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    [Pascal] Curiosità: array dinamici, è possibile?

    Ciao a tutti.
    Ho una curiosità da soddisfare: è possibile in Pascal creare array di dimensioni non prefissate, ma dimensionabili "a runtime"?

    Io ho provato anche ad "ingannare" il compilatore, usando una unit costruita ad hoc, ma senza risultati.

    La unit era questa:
    codice:
    unit nome;
    
    interface
    
    var n : integer;
    
    implementation
    
    begin
       Writeln('introduci valore: ');
       Readln(n);
    end.
    Questo doveva servire per "scavalcare il problema", avendo una Unit che viene inizializzata prima dell'avvio del programma, che istanzia, quindi, la variabile che doveva permettere la creazione dell'array (visto che il programma la vede come un'informazione esterna).

    Ovviamente non funziona. :gren:

    Se non si vogliono implementare delle liste con i puntatori, è possibile creare un array con dimensione non costante?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Non ho ben capito il significato del codice che hai scritto, ad ogni modo non ricordo se il Pascal standard supporta gli array dinamici.

    In Delphi è possibile implementarli attraverso una dichiarazione di questo tipo:
    codice:
    var
      a: array of Integer;
    Si tratta comunque di una struttura dati particolare, gestita dal compilatore.

    La dimensione del vettore può essere reimpostata richiamando SetLength:
    codice:
      SetLength(a, 10);
    Se in Pascal non viene accettato questo tipo di dato, credo che l'unica tua possibilità sia quella di implementare autonomamente l'allocazione di record (usando New e Dispose) che contengano il valore da inserire in lista e l'indirizzo dell'elemento successivo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Infatti, come supponevo, non è possibile. Il compilatore non accetta quel tipo di dato. Vabbè... era solo una curiosità.

    Per il codice che ho scritto io, ho solo creato una Unit che mette a disposizione una variabile 'n', la quale viene inizializzata al momento dell'inizializzazione della unit. Ma ovviamente il compilatore non me lo accetta.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.