none
[vb.net] evitare uso di oggetti RRS feed

  • Domanda

  • Salve, è da tanto che mi pongo questo problema, e, per risolvere, ho sempre usato la soluzione più sbagliata (almeno penso).

    Lavoro in windows form, e il mio problema è il seguente:

    ogni qual volta devo compiere un azione devo farlo attraverso l'uso di un oggetto, button o timer che sia. 

    Prendiamo in analisi il codice:

    Dim x As New WebClient()
            Dim source As String = x.DownloadString(TextBox1.Text)
            Dim title As String = Regex.Match(source, "\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups("Title").Value
          
    
            Label1.Text = "scarico"
            web_client.DownloadFileAsync(New Uri(RichTextBox1.Text), TextBox2.Text + title - Label3.Text + ".mp3")
    

    Questo codice è dentro l'evento textchanged dell'oggetto richtextbox, in modo tale che appena il testo della rich cambia allora esegue il codice al suo interno.  Ho preimpostato la lettera "a" ma il tutto non funge, e il l'evento textchanged non si manifesta... Esiste un altro metodo per evitare l'uso di eventi o bottoni? IN questo caso, secondo le mie conoscenze, ci sarebbe bisogno di un timer, ma ciò comporterebbe l'uso di un altro oggetto e io vorrei evitarlo.. Grazie

    martedì 21 aprile 2015 19:09

Risposte

  • Beh ho in primis espresso il mio pensiero che si basa sul linguaggio Autoit.. Un paio di righe di codice in autoit permettono senza l'ausilio di tanti oggetti di poter compiere varie azioni anche non simultaneamente , e mi chiedevo come questo non fosse possibile nel vb.net.. 

    Ciao mattiasrk,

    stai comparando due oggetti diversi (molto) fra loro

    VB.NET è un linguaggio di programmazione

    Autoit, che non conosco ma leggendo la descrizone sul loro sito trovo

    Welcome to the AutoIt website. Home of the AutoIt scripting language and other useful deployment related tools, documentation and utilities.

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    sabato 25 aprile 2015 06:51
    Moderatore

Tutte le risposte

  • Ciao Mattia,

    non usare oggetti in un linguaggio orientato agli oggetti è un po difficile, ma mi sfugge come mai hai questa esigenza.

    p.s. di per se anche un timer è un oggetto e lancia eventi da gestire....

    mercoledì 22 aprile 2015 08:30
  • Ciao Mattia,

    concordo appieno con quanto Fabio ti ha risposto: dato il paradigma ad oggetti proprio del linguaggio, la richiesta è in effetti un po' particolare. Da quel punto di vista quindi non c'è moltissimo da fare, se rimaniamo in questo ambito.

    Diverso invece è il discorso che fai sull'evento TextChanged del tuo RichTextBox: dovresti spiegare meglio cosa intendi per "non si manifesta". Un rapido test è inserire una MsgBox all'interno dell'evento, e provare ad eseguire il codice, in modo da vedere se - digitando del testo - la MsgBox compaia:

        Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
            MsgBox("Prova")
        End Sub

    Se invece di questo ti riferisci invece al mancato funzionamento rispetto a quanto atteso, ti chiederei di indicarci dove riscontri il problema: c'è un WebClient, non ti scarica il file? Hai verificato che quanto gli passi come parametro corrisponda ad un URL correttamente formattato? Hai provato ad inserire il tutto in un blocco Try/Catch per verificare l'insorgenza di errori?

    Tienici aggiornati


    Emiliano Musso // Microsoft MVP .NET

    mercoledì 22 aprile 2015 09:52
    Moderatore
  • grazie a tutti e due per essere intervenuti. Ho posto la domanda proprio perchè non mi trovo molto a mio agio con l'uso di ogni singolo oggetto per ogni funzione che devo eseguire.. Il codice che ho mostrato è giusto e funziona, ma per eseguirlo lo devo richiamare mediante un oggetto.. ecco che ritorna a galla il succo della mia intercompatiblità con i linguaggi ad oggetti.. Se per esempio faccio uso di troppi timer il programma si potrebbe impallare.. la mia filosofia è  minimizzare il lavoro dell'utente in modo tale che il programma faccia tutto da solo..

    Vi ringrazio :)

    mercoledì 22 aprile 2015 12:14
  • Scusami ma ritengo che si stia un attimino confondendo i piani, cosa c'entra l'uso di troppi timer con il programma impallato, con l'incompatibilità con il linguaggio a oggetti?

    Un linguaggio è solo un astrazione dal codice macchina, un oggetto non è altro che un construtto informatico usato per tradurre concetti di solution design nella loro realizzazione su un calcolatore.

    Se non si vuole usare un linguaggio a oggetti si puà sempre scrivere codice direttamente come sequenza di bit, ma sicuro che nn crei più possibilità di errori? Il programma si impalla se l'ho progettato e sviluppato male non se uso un linguaggio a oggetti un linguaggio procedurale, funzionale o delle schede perforate.

    Saluti :)


    mercoledì 22 aprile 2015 13:49
  • Beh ho in primis espresso il mio pensiero che si basa sul linguaggio Autoit.. Un paio di righe di codice in autoit permettono senza l'ausilio di tanti oggetti di poter compiere varie azioni anche non simultaneamente , e mi chiedevo come questo non fosse possibile nel vb.net.. 
    venerdì 24 aprile 2015 17:06
  • Beh ho in primis espresso il mio pensiero che si basa sul linguaggio Autoit.. Un paio di righe di codice in autoit permettono senza l'ausilio di tanti oggetti di poter compiere varie azioni anche non simultaneamente , e mi chiedevo come questo non fosse possibile nel vb.net.. 

    Ciao mattiasrk,

    stai comparando due oggetti diversi (molto) fra loro

    VB.NET è un linguaggio di programmazione

    Autoit, che non conosco ma leggendo la descrizone sul loro sito trovo

    Welcome to the AutoIt website. Home of the AutoIt scripting language and other useful deployment related tools, documentation and utilities.

    Ciao


    Renato Marzaro

    Microsoft MVP .NET

    http://community.visual-basic.it/renato

    sabato 25 aprile 2015 06:51
    Moderatore