316 messaggi dal 05 novembre 2012
Ciao Liliana,

scusa per il ritardo ma ero preso con il lavoro...

penso che con questo esempio voglia farmi comprendere la differenza tra
- dichiarazione
- dichiarazione ed uso sulla stessa riga


Non tanto questo ma avere una dimostrazione pratica dell'ambito di una variabile, vedere cosa accade in debug e nella finestra delle variabili locali...cosa accade quando sei all'interno del ciclo "For Each"...quando la linea corrente di esecuzione è sul "Next" e quando hai concluso il ciclo e passi alla linea di codice successiva.

il tutto è nato perché t'avevo posto la domanda che una certa istruzione non riuscivo a vederla
da lì in poi mi hai spiegato e a meno di qualche altra cosa che mi vuoi comunicare ...... ho compreso

volevo passarti un concetto importante che è l'ambito di una variabile...se già lo conoscevi e ti ho confuso chiedo venia :(

post fa si parlava di performance

visto i risultati che hai ottenuto non penso ci saranno particolari problemi :)

l'unica cosa...fai attenzione a non utilizzare troppi cicli for annidati e dove e come utilizzi le istruzioni di casting (es. TryCast(control, Button))

Buona proseguimento :)

Alessio
54 messaggi dal 10 aprile 2017
Buongiorno Alessio,
Buon lavoro


trankillo non mi aspetto mai risposte immediate perché so che siete tutti super impegnati con il lavoro e cmq zero problemi!
grazie per la risposta.

si! infatti! dopo i tuoi post mi son messa a guardare bene ed ad osservare il "cosa accade" sia prima sia dopo che durante
il "concetto ambito di una variabile" è giustamente "importante"
non è che lo sapevo o meno e non c'è bisogno delle scuse ci mancherebbe! ANZI sono io che ringrazio te per esser così
così professionale e soprattutto che non lasci nulla "al caso" o scontato
diciamo che per "deformazione" le variabili le dichiaro sempre in testa poi le uso
è per questo motivo che son rimasta spiazzata quando c'è nei tuoi esempi dichiarazione e uso sulla stessa riga
............
fare attenzione a
- non utilizzare troppi cicli for annidati
- dove e come utilizzi le istruzioni di casting (es. TryCast(control, Button))
per quando hai voglia e soprattutto tempo perché mi scrivi ciò? nel senso cosa produce l'uso non dico indiscriminato ma....

...diciamo che se riesco a capire mi tolgo dei mal di testa dopo
so che usare for nidificati impegnano troppo lo stack meglio usare i while
tornando sul discorso del codice che sto implementando ho cercato di dare una regola anche ai nomi dei controlli
CODCAMPO_<DESC/FIELD>_NOMEDELLAFORM_NOMEDELCAMPO
codcampo è di tre crt codificati
desc o field così so se e come trattarlo

mentre per gli oggetti la forma per esempio è BUT_NOMEDELLAFORM_NOMEDELCONTROLLO

dato che è tutto memorizzato in tabelle db con le select faccio presto
poi ho scritto una mini classe che si compone il nome e fa il TryCast(control, Button) cercando di ottimizzare il codice nel senso che eseguo solo se è strettamente necessario per esempio se dal plc ricevo il segnale di blocco ed è ancora in blocco dopo enne tempo un bottone che è rosso perché l'ho già posto non faccio ancora l'assegnazione...cose così...

grz
ciao
316 messaggi dal 05 novembre 2012
Ciao Liliana,

fare attenzione a
- non utilizzare troppi cicli for annidati
- dove e come utilizzi le istruzioni di casting (es. TryCast(control, Button))
per quando hai voglia e soprattutto tempo perché mi scrivi ciò? nel senso cosa produce l'uso non dico indiscriminato ma....

Ho sbagliato a scrivere "non utilizzare troppi cicli for annidati" è semplicemente "cicli for annidati"
...detto questo non pensare a niente di compilato, solo il fatto che un operazione in un loop potenzialmente viene ripetuta n volte (e più è annidato più volte viene ripetuta), quindi fai particolare attenzione a dove stai facendo un determinata operazione, per es. Casting e Conversioni di tipi che è un operazione un pò dispendiosa

vediamo se con un esempio riesco a spiegarmi meglio

For Each controlTypeString As String In tabogg
   ...
   For Each control As Control In allControlForCurrentType
    ...

Nel codice dei post precedenti avevamo qualcosa di simile, in questo caso se devi fare operazioni specifiche per un tipo di controllo in particolare conviene eseguire la conversione (es. da Control a Button) nel primo loop (considerando che all'interno di questo loop il tipo controllo è ben definito ed è sempre lo stesso) ed esguire il secondo loop sul tipo specifico...per es. qualcosa di simile

For Each controlTypeString As String In tabogg

    Dim controlType = Type.GetType(String.Format("System.Windows.Forms.{0}, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", ontrolTypeString))

    Dim allControlForCurrentType As List(Of Control) = GetAllControlByType(Me, controlType)

    Select Case controlType

        Case GetType(Button)
            Dim allButtons = allControlForCurrentType.Cast(Of Button)
            For Each button In allButtons
                ' Eseguo le operazioni specifiche per i Button
            Next

        Case GetType(TextBox)
            Dim allTextbox = allControlForCurrentType.Cast(Of TextBox)
            ' Eseguo le operazioni specifiche per le Textbox

        Case GetType(CheckBox)
            Dim allCheckbox = allControlForCurrentType.Cast(Of CheckBox)
            ' Eseguo le operazioni specifiche per le CheckBox

        Case Else
            ' Qui siamo nel caso di tipologia di controllo non gestito

    End Select
   
    Next

End Sub


so che usare for nidificati impegnano troppo lo stack meglio usare i while

nella scelta di utilizzo tra un for ed un while non sono così profondo (e preparato) e non saprei tecnicamente cosa risponderti :)

Se invece lo si vede da un punto di vista pragmatico :) Utilizzo un for quando c'è un numero noto di iterazioni mentre uso un while quando il numero non è noto a priori e le iterazioni si devono ripetere in base ad una specifica condizione

/Ciao

Alessio
54 messaggi dal 10 aprile 2017
Ciao Alesso,

per me ogni cosa è preziosissima
tutto chiaro chiarissimo

...grazie mille
lily
54 messaggi dal 10 aprile 2017
son fatta "un po' a modo mio"
però una cosa per me è sacrosanta
la gratitudine e l'umiltà
gentilissimo Alessio sai che funziona davvero alla grande?
e non solo...su questo non avevo dubbi
questo posto è dedicato a TUTTI voi che DONATE conoscenza
penso che sia più bello per VOI sapere che la persona ha imparato a "fare" come se l'avesse sempre fatto
316 messaggi dal 05 novembre 2012
Grazie Liliana...Buona giornata e buon lavoro :)

Alessio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.