Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [vb2005] allocazione dimamica della memoria

    Salve,

    Vorrei sapere come è possibile allocare dinamicamente della memoria, quello che vorrei fare è allocare una struttura in memoria (ed accodarla ad una lista) ogni volta che si verifica l'evento click su un bottone... solo che non so quali sono le istruzioni base in Vb2005 per gestire la memoria dinamica (intendo l'equivalente delle varie Calloc, & , * che uso in C)...

    Mi pare ma non vorrei dire una fesseria che VB metteva a disposizione un operatore di ridimensionamento dei vettori, che però non so se possa fare al caso mio perchè non so se tale operatore va a alterare il vettore originale o solo aggiunge degli elementi...

    Grazie 1000

  2. #2
    In Vb.Net puoi usare la classe Arraylist ed usare il metodo add() della suddetta
    -----
    101110101011101111100000
    -----

  3. #3
    grazie, prova a vedere nell'help cosa mi dice di questa classe

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    281
    O se no c'è la redim per modificare la lunghezza di un array (con la parola preserve mantieni i dati in esso contenuto)

  5. #5
    Originariamente inviato da Dave83
    O se no c'è la redim per modificare la lunghezza di un array (con la parola preserve mantieni i dati in esso contenuto)
    si è vero, ma dal momento che Vb.net offre una struttura dinamica (ArrayList, Array, SortedArray etc) non vedo perchè non utilizzarla.
    -----
    101110101011101111100000
    -----

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Nell'uso del CLR, difficilmente si parla di allocare memoria, mentre più frequentemente si fa uso di oggetti, creandoli.

    In sostanza, lo sviluppatore - salvo casi specifici - non deve occuparsi delle problematiche di allocazione e rilascio della memoria occupata, di cui si fa carico il CLR, utilizzando il Garbage Collector per le pulizie, ma semplicemente istanziare gli oggetti di cui ha bisogno.

    Nel caso in esame, se si deve memorizzare una lista lineare di oggetti, è sufficiente usare la classe ArrayList, come già suggerito, oppure sfruttare i Generics e creare un'istanza di List<DataType> per ottenere automaticamente una lista "tipizzata" e ritagliata per accettare solamente gli elementi che appartengono al tipo richiesto.

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

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

  7. #7
    grazie a tutti per i preziosi consigli, alla luce delle vostre proposte ho pensato a questa soluzione:

    codice:
      
    'La mia struttura
    Public Structure Serv
            Dim Zona As String
            Dim TipoFoto As String
            Dim Nome As String
    End Structure
    
    ' nella classe Form contenente il bottone dichiaro
    
    Public ListaServizi As List(Of Serv)
    
    'codice da eseguire al click del bottone
              ListaServizi.Add(New Serv)
              ListaServizi(ListaServizi.count - 1).Zona = txtZona.text
              ListaServizi(ListaServizi.count - 1).TipoFoto = txtTipo.text
              ListaServizi(ListaServizi.count - 1).Nome = txtNome.text
    l'oggetto alla lista lo aggiunge però mi sottolinea le ultime 3 righe di codice dicendo
    "L'espressione è un valore quindi non può essere destinatario di una assegnazione" ho sbagliato qualcosa nella gestione della lista?

  8. #8
    Codice PHP:
    dim srv as new serv
         srv
    .Zona txtZona.text
         srv
    .TipoFoto txtTipo.text
         srv
    .Nome txtNome.text
    ListaServizi
    .Add(srv
    -----
    101110101011101111100000
    -----

  9. #9
    in effetti così funziona ma secondo me non normale
    se io devo andare a modificare un campo di una struttura che già sta nella lista che dovrei fare, leggere tutta la struttura portarla in una di appoggio , modificare il campo e rimetterla nella lista VVoVe:

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da GraficInside
    grazie a tutti per i preziosi consigli, alla luce delle vostre proposte ho pensato a questa soluzione [...]
    l'oggetto alla lista lo aggiunge però mi sottolinea le ultime 3 righe di codice dicendo
    "L'espressione è un valore quindi non può essere destinatario di una assegnazione" ho sbagliato qualcosa nella gestione della lista?
    Prova a specificare la visibilità Public per i membri della struttura che hai creato:

    codice:
    Public Structure Serv
            Public Zona As String
            Public TipoFoto As String
            Public Nome As String
    End Structure
    Forse Dim li definisce per default come privati.

    Non ho il compilatore aperto, e uso abitualmente C#, quindi non posso fare una verifica immediata.

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

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

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.