Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75

    Passaggio a funzione di una matrice di elementi di tipo record

    Si consideri il seguente frammento di codice:

    ///////////////////////////////////////////////////////////

    Type RecTabSimb
    label As String
    pagina0 As Boolean
    tipo As String
    valore As String
    End Type


    Dim TabSimb(1 to 101) As RecTabSimb

    ////////////////////////////////////////////////////////////



    e si supponga di avere la funzione così definita:
    //////////////////////////////////////////////////////////

    Public Function RicercaBinaria(x() As String, target As String) As Integer

    //////////////////////////////////////////////////////////
    che cerca la stringa target nel vettore x() e ne ritorna - se la ricerca ha esito positivo -
    la posizione.


    Esiste un modo per passare alla funzione di RicercaBinaria il campo label
    di tutti gli elementi della matrice TabSimb , come se si trattasse di
    un semplice vettore di stringhe?

  2. #2
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: Passaggio a funzione di una matrice di elementi di tipo record

    Originariamente inviato da katrina
    Si consideri il seguente frammento di codice:

    ///////////////////////////////////////////////////////////

    Type RecTabSimb
    label As String
    pagina0 As Boolean
    tipo As String
    valore As String
    End Type


    Dim TabSimb(1 to 101) As RecTabSimb

    ////////////////////////////////////////////////////////////



    e si supponga di avere la funzione così definita:
    //////////////////////////////////////////////////////////

    Public Function RicercaBinaria(x() As String, target As String) As Integer

    //////////////////////////////////////////////////////////
    che cerca la stringa target nel vettore x() e ne ritorna - se la ricerca ha esito positivo -
    la posizione.


    Esiste un modo per passare alla funzione di RicercaBinaria il campo label
    di tutti gli elementi della matrice TabSimb , come se si trattasse di
    un semplice vettore di stringhe?
    Non credo che esista un metodo diretto. Comunque si potrebbero riversare tutte le label in un array di stringhe:
    codice:
    Dim Vettore(1 To 101) As String
    For i = 1 To 101
       Vettore(i) = TabSimb(i).label
    Next i
    per poi passare l'array Vettore alla funzione.

    Svegliati, Neo. Matrix ti possiede...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    Sì, in effetti ci avevo pensato.

    Ma così perderei qualunque vantaggio derivante dall'aver usato una matrice di record e tanto varrebbe sostituire ogni campo con un vettore...

    Comunque grazie.

    Magari a qualcuno viene un'altra idea?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    A quale versione di VB stiamo facendo riferimento?
    E' obbligatorio indicarlo anche nel titolo, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puoi utilizzare un vettore di stringhe classico

    Symbols() As String

    e dalla struttura elimini il campo label ...

    Type RecTabSimb
    pagina0 As Boolean
    tipo As String
    valore As String
    End Type

    tenendo presente che avrai l'indice tramite cui potrai collegare l'elemento dell'array di tipo RecTabSimb con quello dell'array Symbols.

    P.S. Ma cosa scrivi ? Un Assembler per 6502 ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75

    [VB6]Passaggio a funzione di una matrice di elementi di tipo record

    Ho fatto riferimento al campo label, ma in realtà mi interessa più in generale poterne passare uno qualsiasi: cioè vorrei sapere se si può passare uno dei campi di tutti gli elementi della matrice come se fosse un vettore, senza dover esplicitamente copiare i valori in un vettore o dover usare cicli di lettura del campo, elemento per elemento.

    Grazie!


    PS: sì, devo sostenere un esame che prevede la realizzazione di un assemblatore e un simulatore per 6502 in VB6.

  7. #7
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: [VB6]Passaggio a funzione di una matrice di elementi di tipo record

    Originariamente inviato da katrina
    Ho fatto riferimento al campo label, ma in realtà mi interessa più in generale poterne passare uno qualsiasi: cioè vorrei sapere se si può passare uno dei campi di tutti gli elementi della matrice come se fosse un vettore, senza dover esplicitamente copiare i valori in un vettore o dover usare cicli di lettura del campo, elemento per elemento.

    Grazie!


    PS: sì, devo sostenere un esame che prevede la realizzazione di un assemblatore e un simulatore per 6502 in VB6.
    Quindi praticamente potrebbe essere che ti serva passare uno qualsiasi dei singoli campi come vettore?
    In questo caso, invece che
    codice:
    Type RecTabSimb
    label As String
    pagina0 As Boolean
    tipo As String
    valore As String
    End Type
    
    
    Dim TabSimb(1 to 101) As RecTabSimb
    io farei una cosa del genere (non ricordo se in VB si può effettivamente fare, ma rende l'idea...
    codice:
    Type TabSimboli
       labels(1 To 101) As String
       pagine0(1 To 101) As Boolean
       tipi(1 To 101) As String
       valori(1 To 101) As String
    End Type
    
    Dim TabSimb As TabSimboli
    In questo modo, se con l'array di record prima ti riferivi a ogni campo con, ad esempio, TabSimb(2).label, ora ti ci potresti riferire con TabSimb.labels(2) il che, in fin dei conti, è un passaggio abbastanza semplice e indolore. In più in questo modo potresti applicare RicercaBinaria a uno qualsiasi dei vettori TabSimb.labels, TabSimb.tipi... proprio perché in questo modo sono effettivamente degli errori.

    Spero che la soluzione abbia un senso... comunque buona Pasqua.
    Svegliati, Neo. Matrix ti possiede...

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.