Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    VB.NET Problema con Property

    Ciao a tutti quelli che ancora non sono in vacanza e mi leggeranno...

    Ho un problema: sto facendo un programma che registra l'audio in ingresso (con DirectX9) in sincrono con determinate azioni e registra su un xml il millisecondo in cui è avvenuta l'azione.
    Ho tentato di sincronizzarlo con il timer di windows, ma non è stato possibile...

    Al che ho pensato di risolvere memorizzando il millisecondo di registrazione del file audio, l'ho testato con valori fissi, copiando le funzioni di registrazione nello stesso form, e funziona.
    Purtroppo però le funzioni di registrazione devono essere disponibili anche da altri form e quindi sono in un form apposito [opzioniAudioWindow] che contiene tutte le variabili di registrazione (frequenza, canali, ecc)
    Per richiamare la variabile necessaria alla memorizzazione ho quindi creato una Proprietà a cui poter accedere da tutti i form che ne abbiano bisogno.

    Purtroppo però non rieco a richiamare la variabile...
    Ecco il codice:

    codice:
    Public Class opzioniAudioWindow
       'funzioni di registrazione varie...
    
        Private countValue As Integer
        Public Property conta() As Integer
            Get
                Return countValue
            End Get
            Set(ByVal value As Integer)
                If value <> 0 Then
                    countValue = value / freq / shBytesPerSample * 1000
                Else
                    countValue = 0
                End If
           End Set
        End Property
    
    
        Public Sub saveRecord()
            Dim CaptureData As Byte() = Nothing
            Dim ReadPos As Integer
            Dim CapturePos As Integer
            Dim LockSize As Integer
    
            cBuff.GetCurrentPosition(CapturePos, ReadPos)
            LockSize = ReadPos - NextCaptureOffset
            If LockSize < 0 Then
                LockSize += captureBufferSize
            End If
    
            LockSize -= LockSize Mod notifySize
    
            If 0 = LockSize Then
                Return
            End If
            ' legge i dati
            CaptureData = CType(cBuff.Read(NextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())
            SampleCount += CaptureData.Length
    
            'scrivi sul file
            Writer.Write(CaptureData, 0, CaptureData.Length)
            NextCaptureOffset += CaptureData.Length
            NextCaptureOffset = NextCaptureOffset Mod captureBufferSize
    
            conta() = SampleCount
    
        End Sub
    End Class
    codice:
    Public Class form1
        Sub salvaRegistrazione()
    
            Dim mc As New opzioniAudioWindow()
    
            CurrentSlideSecondCount = mc.conta()
    
            'altre istruzioni...
    
        End Sub
    End Class
    Purtroppo il codice mi restituisce sempre 0...

    Ho provato anche a richiamare la variabile con una funzione che restituisce conta(), ma mi prende solo il primo valore, coma se ai cicli successivi SampleCount diventasse 0...
    qualcuno sa dirmi perchè?...

    Già che ci sono, volevo chiedere anche un consiglio: il file xml conviene scriverlo volta per volta (ad ogni azione aggiungo un nodo), memorizzarlo in uno stream e scriverlo alla fine o, come sto facendo ora, memorizzarlo in una stringa e scriverlo alla fine?

    Grazie a chi mi aiuterà!

  2. #2
    Nessuno sa darmi una dritta?...

    Ho provato mettendo dei MsgBox e, a livello di opzioniAudioWindow è tutto ok, la proprietà conta() viene aggiornata correttamente, solo che quando vado a leggerla dal form principale non viene letta... perchè?...

    se la richiamo con CurrentSlideSecondCount = mc.conta() mi restituisce sempre zero
    se la richiamo con una funzione invece mi restituisce solo il primo valore, poi gli altri li mette a zero
    codice:
        Public Function getMilliseconds()
    
            Return conta()
    
        End Function

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.