PDA

View Full Version : [VB] Devo imparare VBA e VB.net (non il VB6) da dove comincio?


Matrixbob
26-03-2009, 15:09
La premessa sarebbe che CMQ VB.net = VBA+VB6, è vero?

Mi sembra d'aver capito che VBA è un VB.net strozzato e limitato al contesto Suite Office di Microsoft corretto?

VBA non può essere usato per eseguire applicazioni stand-alone, ma è comunque possibile una certa interoperatività fra applicazioni (ad esempio è possibile creare un report in Word a partire da dati di Excel).

Forse è meglio iniziare da questo quindi?

Che roadmap formativa posso seguire?
Il mio target è imparare ad usarlo sufficientemente ed in fretta, lo skill anche piano piano, ma orientarmici in fretta è fondamentale.

Potete aiutamri plz?
Vengo dal C, PHP, un po di Java, SQL e ABL (ma questo è un po' fuori contesto perchè di IV generazione).

[EDIT: collezione link]
[Visual Studio] Come impostare breakpoint per ogni definizione di SUB? (http://www.hwupgrade.it/forum/showthread.php?t=1983080)
[VB] Me, My e Application.DoEvents(): chi mi spiega? (http://www.hwupgrade.it/forum/showthread.php?t=1975010)
[VB] Testare se una data è maggiore di 2 mesi fa: come fare? (http://www.hwupgrade.it/forum/showthread.php?t=1975051)
Dove posso trovare "Crystal Reports v5"?! (http://www.hwupgrade.it/forum/showthread.php?t=1979998)
[VB] Realizzare un timeout, come? (http://www.hwupgrade.it/forum/showthread.php?t=1986979)
[MSDN] Ma scaricarlo per averlo offline è possibile? Si paga? E' gratuito? (http://www.hwupgrade.it/forum/showthread.php?t=1997167)
[VB] Richiamo funzione di sistema "Shell": s'accorge di mancate esecuzioni? (http://www.hwupgrade.it/forum/showthread.php?t=1997177)
[VB] Aggiorno tableadapter e VB scazza alla grande... (http://www.hwupgrade.it/forum/showthread.php?t=1996040)
unire file excel (http://www.hwupgrade.it/forum/showthread.php?t=1459914)
[VB] Strano warning: interfaccia IActionPeer... (all'avvio) (http://www.hwupgrade.it/forum/showthread.php?t=2004302)

Matrixbob
26-03-2009, 15:20
Allora, io mi sono attrezzato di VS2005 stra patchato alla versione di oggi.

Le uniche 2 cose che capisco sono l'applicazione console e quella GUI.

Di quella grafica dall'IDE vedo questo:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class


invece di quella per promt di Dos vedo questo:

Module Module1

Sub Main()

End Sub

End Module

, modulo? Che significa?

MarcoGG
26-03-2009, 15:43
La premessa sarebbe che CMQ VB.net = VBA+VB6, è vero?

Mi sembra d'aver capito che VBA è un VB.net strozzato e limitato al contesto Suite Office di Microsoft corretto?


Eh !? Dove l'hai letta quella premessa ? :eek: :D
Nono, siamo fuori strada. Kilometri fuori strada.

VBA e VB Net sono come la Luna e Marte. Se decidi di impararli tutti e due contemporaneamente, non cadere nella tentazione di trovare similitudini o di copiare codice dall'uno all'altro.
Semmai VBA è un VB6 "strozzato", anche se si potrebbe discutere anni su questo, e non ne ho nessuna voglia... :D

Sì, come bel progetto per imparare VBA puoi ad esempio avere un semplice DB Access ( 1 o 2 tabelle ), prelevare i dati in Excel, eseguire alcuni calcoli ed esportarli su Word...

Matrixbob
26-03-2009, 17:06
Eh !? Dove l'hai letta quella premessa ? :eek: :D
Nono, siamo fuori strada. Kilometri fuori strada.

Non enfatiziamo tanto :O , CMQ l'ho letto sulla guida VS2005 di Total Training (http://www.totaltraining.com) dove hanno anche asserito C# = C++ + Java, ma CMQ non va preso come oro colato, sicuramente avrà un suo contesto.


VBA e VB Net sono come la Luna e Marte. Se decidi di impararli tutti e due contemporaneamente, non cadere nella tentazione di trovare similitudini o di copiare codice dall'uno all'altro.

Nono possibilità diverse, ma stessa sintassi di linguaggio e alcuni modi di procedere invece me li aspetto.
"Luna e Marte" CMQ non si capisce proprio cosa vuol dire però...


Semmai VBA è un VB6 "strozzato", anche se si potrebbe discutere anni su questo, e non ne ho nessuna voglia... :D

Non è il caso, appena al CERN sistemano il collider non avrà + senso parlarne.


Sì, come bel progetto per imparare VBA puoi ad esempio avere un semplice DB Access ( 1 o 2 tabelle ), prelevare i dati in Excel, eseguire alcuni calcoli ed esportarli su Word...

Buona idea, e per fare grafici?
Si usano anche le altre componenti della Suite Office come PowerPoint o non ha senso farlo?

Matrixbob
26-03-2009, 17:20
It's correct? :)

http://img152.imageshack.us/img152/1949/64616384.jpg

MarcoGG
26-03-2009, 18:55
Non enfatiziamo tanto :O , CMQ l'ho letto sulla guida VS2005 di Total Training (http://www.totaltraining.com) dove hanno anche asserito C# = C++ + Java, ma CMQ non va preso come oro colato, sicuramente avrà un suo contesto.


Non te la prendere, non ne sto certo facendo una critica a te.
Non era mia intenzione enfatizzare alcunchè.
Era semplice e autentico stupore, il mio. Ne ho sentite tante su VB, ma questa ancora no.
VB NET = VB6 + VBA.
Originale ! :D
E' incredibile di quante libere interpretazioni su VB ci siano in giro...


Nono possibilità diverse, ma stessa sintassi di linguaggio e alcuni modi di procedere invece me li aspetto.
"Luna e Marte" CMQ non si capisce proprio cosa vuol dire però...


Diciamo piuttosto possibilità largamente diverse ( con VBA non puoi nemmeno compilare un .exe ), e sintassi somigliante...

Beh, la puoi vedere così : la Luna è VBA, la Terra è VB6, Marte è .NET... :)


Non è il caso, appena al CERN sistemano il collider non avrà + senso parlarne.


:stordita:


Buona idea, e per fare grafici?
Si usano anche le altre componenti della Suite Office come PowerPoint o non ha senso farlo?


Per fare grafici usa Excel secco, e/o automatizzato con VBA. Powepoint non c'entra un tubo.
Si possono automatizzare via VBA praticamente tutte le applicazioni della suite Office, ma quella che forse conviene imparare più a fondo è Excel...

Infine un Modulo VBA è grosso modo assimilabile al concetto di "classe statica", un buon posto in cui inserire :
- variabili globali - Public
- costanti globali - Public Const
- procedure che ritornano valori - Public Function
- procedure che non ritornano valori ( procedure void... ) - Public Sub
- dichiarazioni di richiamo a funzioni API - Public Declare Function
insomma tutto il codice parametrizzato e riutilizzabile.

Matrixbob
26-03-2009, 19:19
Non è colpa mia se da Microsoft conta + il brand e la commercialità delle cose piuttosto che generare del caos.
IMHO potevano fare C# e lasciare stare VB.net.


Beh, la puoi vedere così : la Luna è VBA, la Terra è VB6, Marte è .NET... :)


Se per il resto posso anlizzare e cercare di capire, per questa analogia non ci si riesce, mica sarà uno pesce d'Aprile?
Nel nostro sistema solare siamo noi che giriamo attorno al Sole e la luna intorno a noi e Marte è in 1 orbita più esterna della nostra.
Quindi che cavaolo vuoi intendere tu scusa? :mbe:

wingman87
26-03-2009, 20:22
Nel nostro sistema solare siamo noi che giriamo attorno al Sole e la luna intorno a noi e Marte è in 1 orbita più esterna della nostra.
Al di là di cosa intenda mi sembra azzeccata, VBA somiglia molto al VB6, diciamo che ne è una versione più limitata e quindi gli gira intorno, VB.Net è tutta un'altra cosa (un altro pianeta, un'altra orbita).

MarcoGG
26-03-2009, 23:36
Non è colpa mia se da Microsoft conta + il brand e la commercialità delle cose piuttosto che generare del caos.
IMHO potevano fare C# e lasciare stare VB.net.


- Se MS ha fatto VB Net aveva le sue ottime ragioni.

- A casa mia il Pesce D'Aprile non si fa di 26 Marzo. :D

@wingman87 : grazie per la comprensione. Almeno tu. :D

Matrixbob
08-04-2009, 20:35
Parlando di libri (cartacei), ho visto che ci sono 4 rami:

1] Excel (il + diffuso)
Microsoft Excel 2007 Visual Basic for applications. Con CD-ROM - Reed Jacobson

http://img2.libreriauniversitaria.it/BIT/079/9788861140790g.jpg

2] Access (un po' - diffuso)

3] Word (raro)

4] VBA Generico (raro)

MarcoGG
08-04-2009, 23:11
Essendo VBA un VB-for-Application chiaramente è quasi impossibile imbattersi in un manuale che ne tratta indipendentemente dall'applicativo di riferimento.
In ambito Office personalmente la vedo così :

- Excel VBA : sicuramente il matrimonio meglio riuscito. Se mastichi l'inglese dai un'occhiata ai manuali di J. Walkenbach, come questo :
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470044012.html

- Access VBA : una bella spanna sotto ad Excel. Personalmente lo odio. Ormai uso Access solo come serbatoio-dati.

- Word VBA : può avere un suo perchè ( creazione di documenti interattivi ecc... ), ma da qui a consigliare di spendere 30 o più € per un manuale che parla solo di Word VBA...beh...

Matrixbob
09-04-2009, 00:07
CMQ MarcoGG scusami se a volte me la sono presa, ma avevo paura che mi stessi prendendo in giro. :p

Ho realizzato le mie prime elaborazioni in VBA: Excel (conteggio di vocali in nominativo telefonico e roba del genere), peccato che l'ho creato con Excel 2003 e adesso in Excel 2007 non so come passare alla sezione VBA. :O

Versione nuova --> vita nuova e io mi smarrisco :) , sapete mica rimettemi in carreggiata? :)

http://img178.imageshack.us/img178/9550/macroinvba.png

Matrixbob
09-04-2009, 00:09
Sì, come bel progetto per imparare VBA puoi ad esempio avere un semplice DB Access ( 1 o 2 tabelle ), prelevare i dati in Excel, eseguire alcuni calcoli ed esportarli su Word...


Non hai per caso sottomano qualcosa del genere da girarmi?

Perchè faccio fatica a capire tutti gli oggetti con cui posso interagire: come si chiamano e quali sono e quali proprietà hanno.
Sto facendo uso massivo del tasto "F1" e di Google ... mi vergogno ma è così. :)

Voglio diventare bravo d'automatizzare il lavoro della segretaria per portarla a ... :oink: :D

Matrixbob
09-04-2009, 00:21
:boh: :boh: :boh:

http://img75.imageshack.us/img75/4871/caosinvba.png

, non riesco ad arrivare al codice di quelle 3-4 procedure (Sub si chiamano giusto?) del mio modulo.

http://img512.imageshack.us/img512/4607/caosinvba2.png

MarcoGG
09-04-2009, 13:08
CMQ MarcoGG scusami se a volte me la sono presa, ma avevo paura che mi stessi prendendo in giro. :p
Ho realizzato le mie prime elaborazioni in VBA: Excel (conteggio di vocali in nominativo telefonico e roba del genere), peccato che l'ho creato con Excel 2003 e adesso in Excel 2007 non so come passare alla sezione VBA. :O
Versione nuova --> vita nuova e io mi smarrisco :) , sapete mica rimettemi in carreggiata? :)


Nessun problema. :) Ero solo rimasto shockato da quella premessa, tutto lì.
Excel 2007 l'ho usato ancora poco finora, ma penso ci sia ugualmente il Menu : Visualizza / Barre degli Strumenti / Strumenti di Controllo >> sono gli strumenti di VBA, un Click su Visualizza Codice, e sei nell'editor.


Non hai per caso sottomano qualcosa del genere da girarmi?
Perchè faccio fatica a capire tutti gli oggetti con cui posso interagire: come si chiamano e quali sono e quali proprietà hanno.
Sto facendo uso massivo del tasto "F1" e di Google ... mi vergogno ma è così. :)

Purtroppo ho codice piuttosto "personalizzato", sulla connessione a DB, perciò dovrei proprio passarti pezzi di progetti... E sai com'è... ;)
Google non è cattiva come idea. E' forse il miglior "manuale" che esiste, quando non si ha voglia di imparare tutto da zero.
Oppure un buon manuale che sia ricco di esempi pratici da seguire... Devi scegliere tu.


Voglio diventare bravo d'automatizzare il lavoro della segretaria per portarla a ... :oink: :D

Mmm, utile e nobile intento. :D

Matrixbob
13-04-2009, 01:08
Excel 2007 l'ho usato ancora poco finora, ma penso ci sia ugualmente il Menu : Visualizza / Barre degli Strumenti / Strumenti di Controllo >> sono gli strumenti di VBA, un Click su Visualizza Codice, e sei nell'editor.

Ok, ma sul portatile son tornato al 2003. Non so se mi perdo qualcosa di VBA restando alla 2003 piuttosto che alla 2007, ma sicuramente ci guadagno in intuitività


Purtroppo ho codice piuttosto "personalizzato", sulla connessione a DB, perciò dovrei proprio passarti pezzi di progetti... E sai com'è... ;)

Noooo questo non me lo aspettavo!
Ma solitamente i dati di connessione non stanno in file d'include?
Per le connesioni al DB non c'è proprio il tutor apposito?
CMQ questo è la mia prima procedura che ho scritto e scatta alla pressione di un pulsante dentro una pagina Excel di nominativi d'azienda.

Public Sub pVocalCount()
Dim vlSw As Boolean
vlSw = False
'*** variabili per il sheet ***
Dim viRiga As Integer
viRiga = 2
Dim vcStr As String

Dim viIdxStr As Integer
'*** variabili per le vocali ***
Dim viVocalCount As Integer
Dim viParzialCount As Integer
Dim viIdxVocal As Integer
Dim acVocal(0 To 4) As String
acVocal(0) = "a"
acVocal(1) = "e"
acVocal(2) = "i"
acVocal(3) = "o"
acVocal(4) = "u"

'Cicla le righe
Do While vlSw = False

viParzialCount = 0
vcStr = Worksheets(1).Range("A" & Trim(Str(viRiga))).Value

If vcStr <> "" Then
For viIdxVocal = 0 To 4
For viIdxStr = 1 To Len(vcStr)
If acVocal(viIdxVocal) = LCase(Mid(Trim(vcStr), viIdxStr, 1)) Then
viVocalCount = viVocalCount + 1
viParzialCount = viParzialCount + 1
End If
Next viIdxStr
Next viIdxVocal
MsgBox "Nominativo: " & vcStr
MsgBox "Vocali contate nel nominativo: " & Str(viParzialCount)
End If

'Cambio nominativo se c'è, altrimenti esco dal ciclo
If Worksheets(1).Range("A" & Trim(Str(viRiga + 1))).Value <> "" Then
viRiga = viRiga + 1
Else
vlSw = True
End If

Loop

MsgBox "Vocali totali contate: " & Str(viVocalCount)

End Sub




Mmm, utile e nobile intento. :D

Cosa c'è di male nella procreazione scusa? ;)
Di mandare un missile in orbita col VB proprio non me la sento ... poveri astronauti! :O :sofico: :cool:

Matrixbob
13-04-2009, 01:27
CMQ tutti qui in sezione assumiamo come circa giusto il modello:

http://img412.imageshack.us/img412/3107/sistemavb.png

?! :D

Matrixbob
13-04-2009, 01:28
Ma tutti sti nomi che incontro: COM, OCX, OLE, DAO, ecc ... che cavolo sono? Sono tutti importanti e devo impararli?

Matrixbob
13-04-2009, 01:39
Sì, come bel progetto per imparare VBA puoi ad esempio avere un semplice DB Access ( 1 o 2 tabelle ), prelevare i dati in Excel, eseguire alcuni calcoli ed esportarli su Word...
Questo:


For example: In Microsoft Access, users automatically have access to the Access library. References to the Excel, Word, and Microsoft Outlook libraries can also be created. This will allow creating an application that runs a query in Access, exports the results to Excel, formats the text, then writes a Mail merge document in Word that it automatically e-mails to each member of the original query through Outlook.

( from Visual Basic for Applications (http://en.wikipedia.org/wiki/Visual_Basic_for_Applications) )
, è tipo il tuo esercizio d'esempio.

Se mi date una mano a realizzare qualcosa di simile vi bacio il --> :ciapet:

Raiki
13-04-2009, 10:42
Per il VB.net conosco solo sta guida (http://totem.altervista.org/guida/versione2/index.php) ma sinceramente non so se e' fatta sul serio bene.Mi so letto il primo paragrafo e ho capito che il VB.net non fa' per me,lo odio col cuore.

MarcoGG
13-04-2009, 13:49
Ok, ma sul portatile son tornato al 2003. Non so se mi perdo qualcosa di VBA restando alla 2003 piuttosto che alla 2007, ma sicuramente ci guadagno in intuitività


La versione di VBA di Office 2003 è la 6.3.
VBA per Office 2007 è sempre v6.3, con le sole differenze ( poche, che io sappia ) che riguardano le nuove features dei vari applicativi. Ad esempio in Excel 2007 hai a disposizione oggetti/metodi/proprietà per gestire le novità in fatto di comportamenti grafici, formattazione condizionale ecc...
In generale stai pure su 2003 che non perdi nulla.


Ma solitamente i dati di connessione non stanno in file d'include?
Per le connesioni al DB non c'è proprio il tutor apposito?


No. Per connetterti a DB usi tipicamente ADODB, ( o anche il più vecchio DAO ), librerie da referenziare nel progetto in cui se ne vuole fare uso...
Questo se vogliamo parlare di VBA. Ovvio che in Excel ci sono metodi preconfezionati ( che personalmente non uso mai ) per connessioni o collegamenti al volo verso tabelle Access, file di dati esterni ecc...


Di mandare un missile in orbita col VB proprio non me la sento ... poveri astronauti! :O :sofico: :cool:


Se parli di VBA posso convenire che non sia consigliabile usarlo per compiti particolarmente gravosi o delicati. Su VB 2005 / 2008 ovviamente non sono d'accordo con la criticità che esprimi.


Ma tutti sti nomi che incontro: COM, OCX, OLE, DAO, ecc ... che cavolo sono? Sono tutti importanti e devo impararli?


La prima cosa che devi fare per gestire ad esempio un DB Access è di focalizzare l'attenzione sulla libreria ADODB, chè più recente di DAO, e mette a disposizione tecniche più raffinate e complete.
Tutto il resto lo lascerei per il dopo ( tecniche avanzate, come creare DLL o OCX in VB6 e importarli in Excel, ad esempio... ).
In sintesi, VBA sarà anche un subset di VB6, ma non è certo roba che si impara in pochi giorni... ;)

MarcoGG
13-04-2009, 13:53
Per il VB.net conosco solo sta guida (http://totem.altervista.org/guida/versione2/index.php) ma sinceramente non so se e' fatta sul serio bene.Mi so letto il primo paragrafo e ho capito che il VB.net non fa' per me,lo odio col cuore.

A me non capita mai di odiare un linguaggio dopo il paragrafo introduttivo. Di solito lo provo, prima. :D

Raiki
13-04-2009, 13:55
A me non capita mai di odiare un linguaggio dopo il paragrafo introduttivo. Di solito lo provo, prima. :D


Non ho idea di come e' possibile ma e' stato odio a prima vista.:rolleyes:

Matrixbob
14-04-2009, 00:37
Non ho idea di come e' possibile ma e' stato odio a prima vista.:rolleyes:

Sembra la stessa storia della matematica "io la matematica non la capisco proprio", ma che c'è da capire è un linguaggio per modellare la realtà. Per esempio in fisica prima andrebbe compreso il fenomeno e dopo rappresentarlo con un modello e non il viceversa come ormai le scuole sono solite fare: formula e via!

Matrixbob
14-04-2009, 00:40
No. Per connetterti a DB usi tipicamente ADODB, ( o anche il più vecchio DAO ), librerie da referenziare nel progetto in cui se ne vuole fare uso...
Questo se vogliamo parlare di VBA. Ovvio che in Excel ci sono metodi preconfezionati ( che personalmente non uso mai ) per connessioni o collegamenti al volo verso tabelle Access, file di dati esterni ecc...


Qua usa i DAO, "VBA is useful for automating database tasks such as traversing a table":

Sub LoopTableExample

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblMain")

Do Until rs.EOF
MsgBox rs!FieldName
rs.MoveNext
Loop

rs.Close
Set db = Nothing
End Sub

Matrixbob
14-04-2009, 00:44
Se parli di VBA posso convenire che non sia consigliabile usarlo per compiti particolarmente gravosi o delicati. Su VB 2005 / 2008 ovviamente non sono d'accordo con la criticità che esprimi.

Ma come no? A ogni manifestazione dove c'è SW Micro$oft compare una schermata blu d'errore, pure alle olimpiadi cinesi mi pare sia accaduto! :D


La prima cosa che devi fare per gestire ad esempio un DB Access è di focalizzare l'attenzione sulla libreria ADODB, chè più recente di DAO, e mette a disposizione tecniche più raffinate e complete.
Tutto il resto lo lascerei per il dopo ( tecniche avanzate, come creare DLL o OCX in VB6 e importarli in Excel, ad esempio... ).
In sintesi, VBA sarà anche un subset di VB6, ma non è certo roba che si impara in pochi giorni... ;)

Ok, ma non puoi accennarmi o schematizzarmi o discreparmi come sono le cose COM, OCX, OLE, DAO, ... ?

Speravo di sfruttare la tua esperienza per districarmi in miglior modo tra questa selva di sigle! :(

Raiki
14-04-2009, 09:17
Dim variabile As String

Già dichiarare una variabile in questo maniera mi fa venir da vomitare.Immagina il resto che effetto mi provoca:D

MarcoGG
14-04-2009, 09:54
Qua usa i DAO, "VBA is useful for automating database tasks such as traversing a table":

Sub LoopTableExample

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblMain")

Do Until rs.EOF
MsgBox rs!FieldName
rs.MoveNext
Loop

rs.Close
Set db = Nothing
End Sub


DAO può essere una buona scelta ad esempio se usato direttamente da Access VBA, come nel codice che hai postato.
Ma se ricordi io ti sconsiglio di creare applicazioni Access-VBA.
O meglio, io non lo faccio da molto tempo. Uso Access solo come DB, al massimo creo qualche Stored Query parametrica...
E ripeto, studiati ADODB.

Ma come no? A ogni manifestazione dove c'è SW Micro$oft compare una schermata blu d'errore, pure alle olimpiadi cinesi mi pare sia accaduto! :D


E io che ne so ? :D Le olimpiadi cinesi, poi, me le sono proprio perse ( felicemente perse )... Cos'è, la solita tiritera di moda contro tutto ciò che è Microsoft ? Se hai tutta questa criticità contro MS perchè non cerchi di automatizzare Excel con il C puro ? :p
Ti assicuro che quando io scrivo VBA-VB6-VBNET-C#, di schermate blu non ne escono.


Ok, ma non puoi accennarmi o schematizzarmi o discreparmi come sono le cose COM, OCX, OLE, DAO, ... ?

Speravo di sfruttare la tua esperienza per districarmi in miglior modo tra questa selva di sigle! :(


Se vuoi letteratura, ce n'è parecchia, ma non che ti aiuti molto dal punto di vista pratico :
OLE : http://it.wikipedia.org/wiki/Object_Linking_and_Embedding
COM : http://it.wikipedia.org/wiki/Component_Object_Model
DAO : http://en.wikipedia.org/wiki/Data_Access_Objects
ADO : http://en.wikipedia.org/wiki/ActiveX_Data_Objects
OCX : http://it.wikipedia.org/wiki/OLE_Control_eXtension

Un esempio completo di utilizzo di un ADODB Recordset popolato con SELECT verso una tabella Access, lo trovi qui :
http://www.hwupgrade.it/forum/showthread.php?t=1954920
Vedi in particolare mio post #10.

Più in generale, fatti un giretto nei miei Thread e di codice VBA funzionante ne trovi parecchio... ;)

MarcoGG
14-04-2009, 10:09
Sembra la stessa storia della matematica "io la matematica non la capisco proprio", ma che c'è da capire è un linguaggio per modellare la realtà. Per esempio in fisica prima andrebbe compreso il fenomeno e dopo rappresentarlo con un modello e non il viceversa come ormai le scuole sono solite fare: formula e via!


A me invece sembra uno che dice : "Mi fa schifo la Puglia !"
Gli chiedono : "Perchè ? Ci sei mai stato in Puglia ?"
Risponde : "No, mai, ho visto solo una cartolina !" :sbonk:

Dim variabile As String

Già dichiarare una variabile in questo maniera mi fa venir da vomitare.Immagina il resto che effetto mi provoca:D

Non so a chi possano essere d'aiuto questi tuoi interventi. A me sembrano sparate da ragazzino al primo anno di Itis... :rolleyes:

Se hai qualche consiglio da dare all'amico Matrixbob, benvenuto, sennò direi che sei totalmente OT.
Poi, non so a lui, ma a me personalmente, che ti piaccia o meno il VB, non me ne può fregar di meno.

Gregor
14-04-2009, 11:39
Raga, ma VB6 è ancora di moda? Incredibile...
L'ho usato 5 anni fa...credevo fosse superato!
Matrixbob ma alla fine lo hai iniziato a leggere il manuale? ;)

MarcoGG
14-04-2009, 12:28
Raga, ma VB6 è ancora di moda? Incredibile...
L'ho usato 5 anni fa...credevo fosse superato!


Eccoli che arrivano... :rolleyes: :rolleyes: :rolleyes:

Suggerisci tu un linguaggio migliore per automatizzare Ms Office, allora.
VBA non va bene ? Cosa proponi in alternativa ?

Forse è perchè siamo passati alla pagina 2 del Thread... :D
Il titolo della discussione è, e rimane questo :

[VB] Devo imparare VBA e VB.net (non il VB6) da dove comincio?

Proposte, non cazzate.

Bah...

banryu79
14-04-2009, 12:32
Pace fratello, non scaldarti così per un commento fatto ad cazzum da uno che non si è neanche preso la briga di leggere prima, altrimenti mi sciupi l'effetto di pace pasquale che pervade questi rosei giorni :O :asd:

Gregor
14-04-2009, 12:35
Eccoli che arrivano... :rolleyes: :rolleyes: :rolleyes:

Suggerisci tu un linguaggio migliore per automatizzare Ms Office, allora.
VBA non va bene ? Cosa proponi in alternativa ?

Forse è perchè siamo passati alla pagina 2 del Thread... :D
Il titolo della discussione è, e rimane questo :

[VB] Devo imparare VBA e VB.net (non il VB6) da dove comincio?

Proposte, non cazzate.

Bah...

MarcoGG fatti una camomilla...
Scusate per l'OT..

MarcoGG
14-04-2009, 12:35
Pace fratello, non scaldarti così per un commento fatto ad cazzum da uno che non si è neanche preso la briga di leggere prima, altrimenti mi sciupi l'effetto di pace pasquale che pervade questi rosei giorni :O :asd:

Pace. :D
C'hai ragione, ma quanno ce vo', ce vo' !

_Claudio
14-04-2009, 12:38
Eccoli che arrivano... :rolleyes: :rolleyes: :rolleyes:

Suggerisci tu un linguaggio migliore per automatizzare Ms Office, allora.
VBA non va bene ? Cosa proponi in alternativa ?

Forse è perchè siamo passati alla pagina 2 del Thread... :D
Il titolo della discussione è, e rimane questo :

[VB] Devo imparare VBA e VB.net (non il VB6) da dove comincio?

Proposte, non cazzate.

Bah...

http://www.bol.it/libri/scheda/ea978882033537.html

http://www.bol.it/libri/scheda/ea978882033727.html

Gregor
14-04-2009, 12:39
Pace fratello, non scaldarti così per un commento fatto ad cazzum da uno che non si è neanche preso la briga di leggere prima, altrimenti mi sciupi l'effetto di pace pasquale che pervade questi rosei giorni :O :asd:

A parte che il thread l'ho letto tutto...e poi non capisco tutto sto "nervosismo"!
Non che volessi una risposta precisa e tecnica sul mio intervento, ma mi sembrate un pò isterici...
Relax!

Raiki
14-04-2009, 13:12
Non so a chi possano essere d'aiuto questi tuoi interventi. A me sembrano sparate da ragazzino al primo anno di Itis... :rolleyes:



Guarda che sto alle medie :asd: .Comunque visto che effetivamente non lo sto aiutando mi levo di mezzo e la finisco con l'ot ;)

Jamaslab
15-04-2009, 09:01
Eccoli che arrivano... :rolleyes: :rolleyes: :rolleyes:

Suggerisci tu un linguaggio migliore per automatizzare Ms Office, allora.
VBA non va bene ? Cosa proponi in alternativa ?

Forse è perchè siamo passati alla pagina 2 del Thread... :D
Il titolo della discussione è, e rimane questo :

[VB] Devo imparare VBA e VB.net (non il VB6) da dove comincio?

Proposte, non cazzate.

Bah...

Ma scusa ma se già sai programmare in altri linguaggi, e sai la programmazione di base, la programmazione ad oggetti e tutta la teoria, che vuoi che cambi studiare prima uno o l'altro. Se vuoi solo un "Cosa farei io" studierei prima VB.Net ma solo perchè mi piace di più e mi diverto a studiarlo. E comunque se proprio vogliamo dirla, partire dal VB6 non farebbe così male, visto che anche su alcuni manuali di VB.Net c'è come richiesta, conoscenza parziale o approfondita del VB 6. Insomma scegli tu. E poi devi anche vedere gli utilizzi che ne farai. E' difficile dirti fai così e cosà da qui :D

MarcoGG
15-04-2009, 10:57
Ma scusa ma se già sai programmare in altri linguaggi, e sai la programmazione di base, la programmazione ad oggetti e tutta la teoria, che vuoi che cambi studiare prima uno o l'altro. Se vuoi solo un "Cosa farei io" studierei prima VB.Net ma solo perchè mi piace di più e mi diverto a studiarlo. E comunque se proprio vogliamo dirla, partire dal VB6 non farebbe così male, visto che anche su alcuni manuali di VB.Net c'è come richiesta, conoscenza parziale o approfondita del VB 6. Insomma scegli tu. E poi devi anche vedere gli utilizzi che ne farai. E' difficile dirti fai così e cosà da qui :D

E' una risposta a me ? E' Matrixbob che vuole/deve imparare, non io ( o meglio mi ci metto sempre anch'io perchè d'imparare non si finisce mai... ) :D

Matrixbob
15-04-2009, 18:59
E io che ne so ? :D Le olimpiadi cinesi, poi, me le sono proprio perse ( felicemente perse )... Cos'è, la solita tiritera di moda contro tutto ciò che è Microsoft ? Se hai tutta questa criticità contro MS perchè non cerchi di automatizzare Excel con il C puro ? :p
Ti assicuro che quando io scrivo VBA-VB6-VBNET-C#, di schermate blu non ne escono.

No no è un dato di fatto, spesso nelle manifestazioni importanti balza fuori il cielo dipinto di blu, è vero. :boh:


Se vuoi letteratura, ce n'è parecchia, ma non che ti aiuti molto dal punto di vista pratico :
OLE : http://it.wikipedia.org/wiki/Object_Linking_and_Embedding
COM : http://it.wikipedia.org/wiki/Component_Object_Model
DAO : http://en.wikipedia.org/wiki/Data_Access_Objects
ADO : http://en.wikipedia.org/wiki/ActiveX_Data_Objects
OCX : http://it.wikipedia.org/wiki/OLE_Control_eXtension

La ricerca + stampa + rilegatura l'avevo già fatta da me! ;)
Pensavo invece di sfruttare la tua base di conoscenza per riasusmere in poche parole semantiche e pedantiche la faccenda. Al max provo a schematizzare io e a chiedere conferma.

Matrixbob
15-04-2009, 19:03
Raga, ma VB6 è ancora di moda? Incredibile...
L'ho usato 5 anni fa...credevo fosse superato!
Matrixbob ma alla fine lo hai iniziato a leggere il manuale? ;)


Certo che è in voga, pensi forse che assicurazioni, banche, grandi industrie e istituzioni spillino soldi per migrare verso altre tecnologie?
Soprattutto adesso che i mainframe sono valutati per altri paramentri al di fuori della velocita in MIPS, che passano in secondo piano a favore di retrocompatibilità ecc...

Ho troppa roba da spulciare è per questo che sono qui a cercare l'esperienza di qualcuno, ma invece mi rimandano in biblioteca qui! ( vero Marco? ;) )

Matrixbob
15-04-2009, 19:07
Ma scusa ma se già sai programmare in altri linguaggi, e sai la programmazione di base, la programmazione ad oggetti e tutta la teoria, che vuoi che cambi studiare prima uno o l'altro. Se vuoi solo un "Cosa farei io" studierei prima VB.Net ma solo perchè mi piace di più e mi diverto a studiarlo. E comunque se proprio vogliamo dirla, partire dal VB6 non farebbe così male, visto che anche su alcuni manuali di VB.Net c'è come richiesta, conoscenza parziale o approfondita del VB 6. Insomma scegli tu. E poi devi anche vedere gli utilizzi che ne farai. E' difficile dirti fai così e cosà da qui :D
Ho capito ... ma non avete mai avuto i tempi stretti voi? Sempre con comodo? Beati voi!
Quando si è alle corde si sfrutta l'esperienza e i consigli altrui per semplificare il compito e tirare il fiato.
Tutto li!

Poi non è così facile:
altri linguaggi + programmazione + programmazione procedurale = VB universe ...

MarcoGG
16-04-2009, 00:12
No no è un dato di fatto, spesso nelle manifestazioni importanti balza fuori il cielo dipinto di blu, è vero. :boh:


La solita minestra riscaldata anti-Ms. Nessuna voglia di polemizzare...


La ricerca + stampa + rilegatura l'avevo già fatta da me! ;)
Pensavo invece di sfruttare la tua base di conoscenza per riasusmere in poche parole semantiche e pedantiche la faccenda. Al max provo a schematizzare io e a chiedere conferma.


Beh, pensavi male. :D
Aiuti ne do molto volentieri a chi mi è simpatico... E tu non mi sei simpatico :p .


Ho troppa roba da spulciare è per questo che sono qui a cercare l'esperienza di qualcuno, ma invece mi rimandano in biblioteca qui! ( vero Marco? ;) )

Che posso dire... Touchè ! :D
Solitamente l'esperienza di qualcuno la si paga.

Matrixbob
16-04-2009, 00:46
La solita minestra riscaldata anti-Ms. Nessuna voglia di polemizzare...

e il solito funboy


Beh, pensavi male. :D
Aiuti ne do molto volentieri a chi mi è simpatico... E tu non mi sei simpatico :p .

Non a tutti piace lo stesso gusto di gelato, che posso farci. :boh:


Che posso dire... Touchè ! :D
Solitamente l'esperienza di qualcuno la si paga.

Non nelle guida che ho fatto io e altri N utenti, ma tu sei un businessman si vede, ti sei anche autocelebrato nel tuo avatar. ;)

_Claudio
16-04-2009, 10:46
Non puoi nemmeno pretendere di non leggerti nulla e fare ciò che altri fanno dopo anni di esperienza e conoscenza inconscia (cose che non si dicono perchè sono scontate a chi lavora nel campo), non è una questione di simpatia/antipatia, ma è così.

Un minimo di letteratura devi leggerla e la testa un po' devi sbattercela.

Matrixbob
16-04-2009, 11:39
Non puoi nemmeno pretendere di non leggerti nulla e fare ciò che altri fanno dopo anni di esperienza e conoscenza inconscia (cose che non si dicono perchè sono scontate a chi lavora nel campo), non è una questione di simpatia/antipatia, ma è così.

Un minimo di letteratura devi leggerla e la testa un po' devi sbattercela.

... e dove avrei asserito questo?
Mi son preso 3 libri:

Visual Basic Professional 6.0 passo per passo. Con CD-ROM di Halvorson Michael con ISBN 8871319362;
Manuale Excel 2007 passo per passo. Con ISBN 8861140254;
Visual Basic 2005 con ISBN 8850325053;
Più tutti i documenti elettronici trovati in torrent e P2P.

Solo che avento tutto sto materiale devo capire cosa prendere in considerazione e cosa meno e ottimizzare la linea d'apprendimento.
Tra l'altro con tutto sto materiale l'apprendimento diventa di tipo logaritmico piuttosto che esponenziale. :(

[PS]
eDoc consigliati MSDN e ...?
Web 2.0 ... e quindi newsgroup? Forum? ecc...?

_Claudio
16-04-2009, 11:57
... e dove avrei asserito questo?
Mi son preso 3 libri:

Visual Basic Professional 6.0 passo per passo. Con CD-ROM di Halvorson Michael con ISBN 8871319362;
Manuale Excel 2007 passo per passo. Con ISBN 8861140254;
Visual Basic 2005 con ISBN 8850325053;
Più tutti i documenti elettronici trovati in torrent e P2P.

Solo che avento tutto sto materiale devo capire cosa prendere in considerazione e cosa meno e ottimizzare la linea d'apprendimento.
Tra l'altro con tutto sto materiale l'apprendimento diventa di tipo logaritmico piuttosto che esponenziale. :(

[PS]
eDoc consigliati MSDN e ...?
Web 2.0 ... e quindi newsgroup? Forum? ecc...?

Se vuoi lavorare sul 2005 inizia dal libro sul 2005 altrimenti dal libro di VB6.
I documenti elettronici lasciali come approfondimento.
Io di solito leggo i primi capitoli con le linee fondamentali del linguaggio/tecnologia, approfondendo poi successivamente le cose quando servono. Quando sai usare bene VB e vuoi interfacciarti con excel leggi la parte interessata sul libro di excel.

Io solitamente faccio così, ma un buon background di base me lo costruisco sempre.

Matrixbob
16-04-2009, 12:42
Se vuoi lavorare sul 2005 inizia dal libro sul 2005 altrimenti dal libro di VB6.
I documenti elettronici lasciali come approfondimento.
Io di solito leggo i primi capitoli con le linee fondamentali del linguaggio/tecnologia, approfondendo poi successivamente le cose quando servono. Quando sai usare bene VB e vuoi interfacciarti con excel leggi la parte interessata sul libro di excel.

Io solitamente faccio così, ma un buon background di base me lo costruisco sempre.

Guarda, io installato ho il 2005 e quindi mi ritrovo la schermata dei vari riferimenti con oggetti .net e COM:

http://img8.imageshack.us/img8/820/screenhunterh.jpg

, quali oggetti devo prediligere? Cosa comporta prediligere gli uni piuttosto che gli altri?

Matrixbob
16-04-2009, 12:45
Piccole chicche funzionali:

1]
come si pulisce la cache dei progetti?

2]
come si rinominano le soluzioni?

TNX!

_Claudio
16-04-2009, 12:53
Io uso Visual C++ 2008 su .net, di solito i riferimenti non li tocco perchè ho già parecchi oggetti inseribili nel form, poi per capire quale riferimento al namespace devo aggiungere consulto l'msdn online.

Per rinominare un progetto c'è l'apposita funzione nel menù file oppure è possibile selezionare il progetto e premere F2, ma non garantisco nulla sull'uniformità dei nomi nei vari file e dei vari file del progetto.

MarcoGG
16-04-2009, 15:17
e il solito funboy

Non a tutti piace lo stesso gusto di gelato, che posso farci. :boh:


La mia non è, come vorresti far credere tu con queste righe, sic et simpliciter, una contrapposizione del tipo "o sei con me o contro di me". Il punto è che non sopporto chi spara a zero su qualcosa senza averne avuto un'esperienza diretta e documentabile, e questo vale per me in qualsiasi discorso si possa fare su qualsiasi argomento.
Esempio : se hai scritto codice VBA, VB6, VB NET, C#, o qualsiasi altro linguaggio Ms, rispettandone i canoni, e il risultato è stato una schermata blu, si potrebbe argomentare su questo.
FanBoy è qualcuno che emozionalmente e spesso superficialmente sposa una causa. Io con i prodotti Ms ci ho lavorato e ci lavoro, non ci vado allo stadio.
E non troverai una sola discussione in cui io mi permetto di denigrare linguaggi, applicativi o tecnologie che non sono Ms.
Prodotti Ms che non amo ce ne sono eccome, basti pensare a Vista, che ho installato e provato a fondo per circa 3 settimane, per poi tornare felicemente ad XP.

Matrixbob
16-04-2009, 15:23
Sotto file non lo trovo proprio, per quanto riguarda il tasto F2 sono andato su esplora soluzione e rinominato li, ma è cambiato solo in parte mi pare ... la barra del titolo resta quella mi sembra ...

http://img19.imageshack.us/img19/2333/screenhunter02apr161512.jpg

Matrixbob
16-04-2009, 15:39
"o sei con me o contro di me".

Questo è proprio 1 dei più famosi errori logici, ma se non c'è modo appunto di documentare come hanno lavorato i vari programmatori (direttive, best practice, filosofie, ...) direi di piantarla, anche perchè su .net "forse" è davvero impossibile finire in schermate blu, almeno fino alla scoperta di buchi nello strato sottostante a livello di framework. CMQ lasciamo stare questo ramo di discussione plz.


Io con i prodotti Ms ci ho lavorato e ci lavoro, non ci vado allo stadio.
E non troverai una sola discussione in cui io mi permetto di denigrare linguaggi, applicativi o tecnologie che non sono Ms.

Sono forse i + diffusi al mondo, quindi se la mela non cade molto in là dall'albero è normale che tu ne sei confidenzialmente utilizzatore.


Prodotti Ms che non amo ce ne sono eccome, basti pensare a Vista, che ho installato e provato a fondo per circa 3 settimane, per poi tornare felicemente ad XP.

Quando vidi che in Vista non funzionava il GCC anche io tornai a XP.

_Claudio
16-04-2009, 15:56
Sotto file non lo trovo proprio, per quanto riguarda il tasto F2 sono andato su esplora soluzione e rinominato li, ma è cambiato solo in parte mi pare ... la barra del titolo resta quella mi sembra ...


Non ci avrei messo apposta la mano sul fuoco proprio per questo... rimane una cattiva pratica rinominare un progetto in corso, mi meraviglio lo permettano negli IDE vari.


Quando vidi che in Vista non funzionava il GCC anche io tornai a XP.

Io ho gcc/mingw installato e funzionante... purtroppo quello disponibile per le ultime versioni di windows necessita l'utilizzo di un emulatore linux base (che non fa mai male quando si vuole smanettare con con codice C per linux semplice e di basso livello)

Matrixbob
16-04-2009, 16:22
Non ci avrei messo apposta la mano sul fuoco proprio per questo... rimane una cattiva pratica rinominare un progetto in corso, mi meraviglio lo permettano negli IDE vari.

Ma quindi se l'utente pippo deve importarsi il progetto dell'utente pluto per poi migliorarlo non può?
Almeno esiste una specie di import/export di qualcosa tipo moduli, classi, ecc?


Io ho gcc/mingw installato e funzionante... purtroppo quello disponibile per le ultime versioni di windows necessita l'utilizzo di un emulatore linux base (che non fa mai male quando si vuole smanettare con con codice C per linux semplice e di basso livello)

Su Vista?
Guarda, io conosco MinGW e CygWin, di cui tra l'altro ne porto sul portatile una installazione ibrida non voluta :) che mi permette di usare i vari comandi di shell: LS, MAKE, ecc....
Attento che però io voglio che il GCC mi spari un programma.exe per Win e non un eseguibile Linux.

cdimauro
16-04-2009, 16:28
http://www.microsoft.com/downloads/details.aspx?FamilyId=93FF2201-325E-487F-A398-EFDE5758C47F&displaylang=en

Matrixbob
16-04-2009, 16:38
http://www.microsoft.com/downloads/details.aspx?FamilyId=93FF2201-325E-487F-A398-EFDE5758C47F&displaylang=en

:eek: A casa analizzo!

_Claudio
16-04-2009, 17:19
Ma quindi se l'utente pippo deve importarsi il progetto dell'utente pluto per poi migliorarlo non può?
Almeno esiste una specie di import/export di qualcosa tipo moduli, classi, ecc?


Certo, puoi aprire i progetti fatti da altri e importare moduli e classi (almeno in VC++ che uso io) però rinominare i progetti pare sia troppo complicato.


Su Vista?
Guarda, io conosco MinGW e CygWin, di cui tra l'altro ne porto sul portatile una installazione ibrida non voluta :) che mi permette di usare i vari comandi di shell: LS, MAKE, ecc....
Attento che però io voglio che il GCC mi spari un programma.exe per Win e non un eseguibile Linux.

Esatto MinGW+CygWin hanno sostituito gcc... che io sappia con MinGW puoi compilare codice C/C++ e fare un eseguibile windows da linea di comando (dos emulato per quanto riguarda Vista), ma di default per usarlo bisogna passare da CygWin (linux).

Matrixbob
23-04-2009, 09:50
UP per il significato originale del 3D.

Matrixbob
28-04-2009, 20:25
Che differenza c'è tra:

Me.qualcosa
My.qualcosa

, ?

Mi han detto che servono a eliminare le ambiguità di nomi e che si usano:
Me --> dentro le definizioni di classe;
My --> dentro il namespace del progetto.

Vi risulta?

Matrixbob
05-05-2009, 12:09
Possibile che l'unico programmatore Visual Basic che bazzica sul forum è Mr MarcoGG?

banryu79
05-05-2009, 12:16
Possibile che l'unico programmatore Visual Basic che bazzica sul forum è Mr MarcoGG?
:asd:

_Claudio
05-05-2009, 22:16
Possibile che l'unico programmatore Visual Basic che bazzica sul forum è Mr MarcoGG?

Ci sarà un perchè...:fiufiu:

MarcoGG
06-05-2009, 08:56
Possibile che l'unico programmatore Visual Basic che bazzica sul forum è Mr MarcoGG?


Eh, che ci vuoi fare... Ormai sei sulla mia BlackList ! :fagiano:
[ Grazie per il "Mister" ... ]
Cmq, non hai nessun bisogno di un Visual Basic che ti spieghi cos'è Me. ( l'esatto corrispettivo di this. di C#, VC++, o anche Java... ), My. o Application.DoEvents(), in quanto disponibili a livello di Framework, per ogni linguaggio .Net.
Il fatto che nessuno ti abbia ancora risposto concretamente su questo è per me l'ennesima prova dell'ignoranza, della superficialità e del qualunquismo con cui viene considerato .Net, e nello specifico, giudicato VB.NET...

Ci sarà un perchè...:fiufiu:

Perchè questo è un Forum decisamente C-Java-oriented, ecco perchè.
Anche gli utenti che rispondono fattivamente e concretamente a quesiti su Python e altri linguaggi si contano sulle dita di mezza mano, mi pare.
Del resto, Forum specifici su VB ( tutte le versioni ) e ben frequentati ce ne sono una miriade ( ma io preferisco stare qui, che vi piaccia o no :p ).

banryu79
06-05-2009, 09:34
Perchè questo è un Forum decisamente C-Java-oriented, ecco perchè.
Anche gli utenti che rispondono fattivamente e concretamente a quesiti su Python e altri linguaggi si contano sulle dita di mezza mano, mi pare.
Del resto, Forum specifici su VB ( tutte le versioni ) e ben frequentati ce ne sono una miriade ( ma io preferisco stare qui, che vi piaccia o no :p ).

Preciso, a scanso di equivoci, che il mio sogghignare non era una critica velata al fatto che ci fosse solo un programmatore dedito a questo linguaggio e quindi indirettamente, una mia critica negativa al linguaggio in questione.

Asdavo per un motivo molto più futile: perchè mi divertiva la possibilità che Matrixbob si fosse fatto l'idea che solo tu potessi rispondergli, e visto il "diverbio" passato si fosse giocato il tuo aiuto :ciapet:

MarcoGG
06-05-2009, 09:52
Preciso, a scanso di equivoci, che il mio sogghignare non era una critica velata al fatto che ci fosse solo un programmatore dedito a questo linguaggio e quindi indirettamente, una mia critica negativa al linguaggio in questione.

Asdavo per un motivo molto più futile: perchè mi divertiva la possibilità che Matrixbob si fosse fatto l'idea che solo tu potessi rispondergli, e visto il "diverbio" passato si fosse giocato il tuo aiuto :ciapet:

Nessun problema, banryu :D . L'avevo capito, e non mi riferivo a te. Anch'io ho ironizzato sulla cosa con la storia della "BlackList"...

Matrixbob
06-05-2009, 11:06
Cmq, non hai nessun bisogno di un Visual Basic che ti spieghi cos'è Me. ( l'esatto corrispettivo di this. di C#, VC++, o anche Java... ), My. o Application.DoEvents(), in quanto disponibili a livello di Framework, per ogni linguaggio .Net.

Ok per il Me = This, ma non ho capito nulla su "My." e i varissimi "XXX.DoEvents()". :boh:


Forum specifici su VB ( tutte le versioni ) e ben frequentati ce ne sono una miriade ( ma io preferisco stare qui, che vi piaccia o no :p ).

Link! :)

Matrixbob
06-05-2009, 11:14
Buona definizione di Me alias This mi pare sia questa allora:

"this" è il puntamento alla classe stessa.
ad esempio, se la classe ha una variabile privata di nome pippo e di tipo stringa, la riga this.pippo punta proprio a tale variabile.
E' utile, ad esempio, quando all'interno di un metodo occorre risalire ad una variabile della classe stessa coperta da una variabile locale.
Considera ad esempio un metodo che imposta la varibile pippo di cui sopra.


public void setPippo (String pippo)
{
this.pippo = pippo;
}


All'interno del metodo la variabile pippo della classe e coperta dalla varibile pippo ricevuta come parametro, per cui per poter accedere al membro della classe devi usare this.

Presa da:
http://forum.html.it/forum/showthread/t-761975.html

MarcoGG
06-05-2009, 11:36
Il namespace My è stato introdotto dalla versione 2005 ( potrei sbagliarmi ma non ricordo proprio ci fosse nella 2003... ), come namespace "trasversale" ( mi si passi l'espressione ), per semplificare ulteriormente l'accesso ad operazioni comuni e di utilità generale, una sorta di collezione di metodi-scorciatoia ad accesso veloce, come ad esempio :

- My.Computer.Audio > espone metodi per gestire la riproduzione di audio, se nza scomodare classi, controlli WMP e quant'altro...
- My.Application.OpenForms() > tutte le Form aperte dell'applicazione...
- My.Computer.FileSystem. e My.Computer.Network > metodi per files e directory ( copia, spostamento, download ecc... ) in locale, Lan o via Web...
- My.Computer.FileSystem.FindInFiles() > con una sola riga di codice posso cercare l'occorrenza di una stringa in tutti files di un albero di directory e ricevere una collection di nomi di files...

Sono solo alcuni esempi di ciò che si può fare con My.

Per quanto riguarda Application.DoEvents(), ho un esempio che chiarifica meglio di mille parole. Vedo di postarlo, appena lo trovo.

Matrixbob
06-05-2009, 12:10
Il namespace My è stato introdotto dalla versione 2005 ( potrei sbagliarmi ma non ricordo proprio ci fosse nella 2003... ), come namespace "trasversale" ( mi si passi l'espressione ), per semplificare ulteriormente l'accesso ad operazioni comuni e di utilità generale, una sorta di collezione di metodi-scorciatoia ad accesso veloce, come ad esempio :

- My.Computer.Audio > espone metodi per gestire la riproduzione di audio, se nza scomodare classi, controlli WMP e quant'altro...
- My.Application.OpenForms() > tutte le Form aperte dell'applicazione...
- My.Computer.FileSystem. e My.Computer.Network > metodi per files e directory ( copia, spostamento, download ecc... ) in locale, Lan o via Web...
- My.Computer.FileSystem.FindInFiles() > con una sola riga di codice posso cercare l'occorrenza di una stringa in tutti files di un albero di directory e ricevere una collection di nomi di files...

Sono solo alcuni esempi di ciò che si può fare con My.

Per quanto riguarda Application.DoEvents(), ho un esempio che chiarifica meglio di mille parole. Vedo di postarlo, appena lo trovo.
TNX!

MarcoGG
06-05-2009, 12:39
Buona definizione di Me alias This mi pare sia questa allora:

Presa da:
http://forum.html.it/forum/showthread/t-761975.html

Esatto, ma io farei qualche osservazione in particolare su Me. e VB.NET :
- Anzitutto a me personalmente piace la tecnica di non esporre mai i membri interni di una classe e di creare invece proprietà e/o metodi per farvi accesso.
Se ad esempio ho una classe come questa :

Public Class nomeClasse

Private m_campo1 As String
Private m_campo2 As String

Public Property campo1() As String
Get
Return m_campo1
End Get
Set(ByVal value As String)
m_campo1 = value
End Set
End Property

Public Property campo2() As String
Get
Return m_campo2
End Get
Set(ByVal value As String)
Select Case value
Case "stringa1"
m_campo1 = "S1"
Case "stringa2"
m_campo1 = "S2"
Case Else
m_campo1 = "S3"
End Select
m_campo2 = value
End Set
End Property

Public Sub setCampo1(ByVal arg As String)

m_campo1 = arg

End Sub

Public Sub setCampo2(ByVal arg As String)

Me.campo2 = arg

End Sub

End Class

Nel metodo setCampo2() userò il Me. , mentre non lo userò nel setCampo1().

- Se ad esempio ho una Form e voglio cambiarne il BackColor, userò Me.BackColor. Potrei usare anche solo BackColor, ma non è escluso che ci sia una Public Sub BackColor() in un modulo ( o classe statica ) che crei confusione.
E' da notare comunque che di default VB in questi casi non mostrerà il metodo pubblico BackColor nell'intellisense...

In effetti si tratta di convenzioni con cui mi trovo bene e che per me semplificano la lettura, non certo di leggi.

Matrixbob
08-05-2009, 09:26
Esatto, ma io farei qualche osservazione in particolare su Me. e VB.NET :
- Anzitutto a me personalmente piace la tecnica di non esporre mai i membri interni di una classe e di creare invece proprietà e/o metodi per farvi accesso.
Se ad esempio ho una classe come questa :

Public Class nomeClasse

Private m_campo1 As String
Private m_campo2 As String

Public Property campo1() As String
Get
Return m_campo1
End Get
Set(ByVal value As String)
m_campo1 = value
End Set
End Property

Public Property campo2() As String
Get
Return m_campo2
End Get
Set(ByVal value As String)
Select Case value
Case "stringa1"
m_campo1 = "S1"
Case "stringa2"
m_campo1 = "S2"
Case Else
m_campo1 = "S3"
End Select
m_campo2 = value
End Set
End Property

Public Sub setCampo1(ByVal arg As String)

m_campo1 = arg

End Sub

Public Sub setCampo2(ByVal arg As String)

Me.campo2 = arg

End Sub

End Class

Nel metodo setCampo2() userò il Me. , mentre non lo userò nel setCampo1().

- Se ad esempio ho una Form e voglio cambiarne il BackColor, userò Me.BackColor. Potrei usare anche solo BackColor, ma non è escluso che ci sia una Public Sub BackColor() in un modulo ( o classe statica ) che crei confusione.
E' da notare comunque che di default VB in questi casi non mostrerà il metodo pubblico BackColor nell'intellisense...

In effetti si tratta di convenzioni con cui mi trovo bene e che per me semplificano la lettura, non certo di leggi.

Molte grazie! Analizzo!
Poi sto anche sbattendo la testa sui TableAdapter che se ho capito bene è un middleware che sta in mezzo tra il DB fisico e il DB logico o DataSet.
Più avanti parlerei anche di questo se qualcuno è disponibile a discuterne.
Grazie ancora.

MarcoGG
08-05-2009, 10:49
Prima di addentrarmi in ADO.NET, aspetterei di avere una buona padronanza del linguaggio... ;)
Molti pensano che VB sia un linguaggio RAD, perciò partono dal preconcetto che "in VB serva scrivere meno codice che in C#" ( niente di più errato ), si buttano nelle procedure guidate, pasticciano con i DataSet, gli Adapter, i BindingSource... e poi si impastano. :D

Intanto espongo un esempio utile per capire nei fatti come funziona Application.DoEvents(), come avevo promesso :

System.Windows.Forms.Application.DoEvents() forza la lettura della coda messaggi del gestore eventi, in modo da rendere attivi e sensibili all'input i controlli dell'interfaccia grafica, mentre il codice associato ad un certo evento è in esecuzione. Solitamente, in assenza di una chiamata a DoEvents(), gli eventi vengono messi in coda ed eseguiti sequenzialmente.

1. VB 2008 : ho una Form con 3 pulsanti e due ListBox : i primi 2 pulsanti popolano ciascuno la "sua" ListBox, con un certo numero di Items. Il terzo pulsante dovrebbe interrompere il processo, mentre è in esecuzione.
Nel primo caso uso Application.DoEvents(), nel secondo no.

Public Class Form1

Private stopFill As Boolean = False

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ListBox1.Items.Clear()
stopFill = False
cmd_stop.Focus()
Dim i As Integer = 0
For i = 1 To 100
ListBox1.Items.Add("ELEMENTO DELLA LISTA " & i)
System.Threading.Thread.Sleep(20)
Application.DoEvents()
If stopFill = True Then Exit For
Next

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

ListBox2.Items.Clear()
stopFill = False
cmd_stop.Focus()
Dim i As Integer = 0
For i = 1 To 100
ListBox2.Items.Add("ELEMENTO DELLA LISTA " & i)
System.Threading.Thread.Sleep(20)
'Application.DoEvents()
If stopFill = True Then Exit For
Next

End Sub

Private Sub cmd_stop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_stop.Click

stopFill = True
MsgBox("STOPFILL")

End Sub

End Class

Ci si può fare un'idea ben precisa di come funzioni. Nel primo caso è possibile interrompere il filling della ListBox1, e inoltre il MsgBox("STOPFILL") appare nello stesso istante in cui premo STOP. Nel secondo caso sarà molto difficile riuscire nell'impresa ( praticamente impossibile ) : il Refresh della lista viene fatto solo alla fine del processo / non è possibile interrompere / il MsgBox("STOPFILL") appare solo alla fine ( perchè appunto, l'Application l'ha registrato, messo in coda, e gestito alla fine dell'evento precedente ).

2. VBA : in VBA è analogo, ma con la differenza che in VBA il metodo DoEvents() include una chiamata Sleep() implicita ( assente invece in VB.NET o C# ), infatti in questo caso potrei anche evitare di mettere il Focus con cmd_stop.Activate.

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private stopFill As Boolean

Private Sub CommandButton1_Click()

stopFill = False
ListBox1.Clear
cmd_stop.Activate
Dim i As Integer
For i = 1 To 100
ListBox1.AddItem "ELEMENTO DELLA LISTA " & i
Sleep (20)
DoEvents
If stopFill = True Then Exit Sub
Next i

End Sub

Private Sub CommandButton2_Click()

stopFill = False
ListBox2.Clear
cmd_stop.Activate
Dim i As Integer
For i = 1 To 100
ListBox2.AddItem "ELEMENTO DELLA LISTA " & i
Sleep (20)
'DoEvents
If stopFill = True Then Exit Sub
Next i

End Sub

Private Sub cmd_stop_Click()

stopFill = True
MsgBox "STOPFILL"

End Sub

Il risultato pratico è lo stesso.

Questo è un ottimo esempio, ma personalmente consiglio di usare tecniche più raffinate in applicazioni vere, come ad esempio l'uso di Private Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Integer, o del namespace My ecc..., condizionando l'esecuzione di DoEvents() solo in caso di reale presenza nella coda eventi di un input dell'utente, e quindi riducendo di molto l'overhead, soprattutto nei cicli. ;)

_Claudio
08-05-2009, 11:34
Eh, che ci vuoi fare... Ormai sei sulla mia BlackList ! :fagiano:
[ Grazie per il "Mister" ... ]
Cmq, non hai nessun bisogno di un Visual Basic che ti spieghi cos'è Me. ( l'esatto corrispettivo di this. di C#, VC++, o anche Java... ), My. o Application.DoEvents(), in quanto disponibili a livello di Framework, per ogni linguaggio .Net.
Il fatto che nessuno ti abbia ancora risposto concretamente su questo è per me l'ennesima prova dell'ignoranza, della superficialità e del qualunquismo con cui viene considerato .Net, e nello specifico, giudicato VB.NET...



Perchè questo è un Forum decisamente C-Java-oriented, ecco perchè.
Anche gli utenti che rispondono fattivamente e concretamente a quesiti su Python e altri linguaggi si contano sulle dita di mezza mano, mi pare.
Del resto, Forum specifici su VB ( tutte le versioni ) e ben frequentati ce ne sono una miriade ( ma io preferisco stare qui, che vi piaccia o no :p ).

Eddai stavo scherzando...

Matrixbob
13-05-2009, 16:27
Grazie GG, ti ringrazio sempre per le tue perle di conoscenza. Non ho ancora avuto il tempo di studiarmele perchè qui sul campo mi stanno tartassando ai fianchi.

Sfrutto solo l'occasione di annotare qui un appunto preso, così cestino il pezzo di carta!!! :)

(Definendo a mano gli oggetti OleDb da codice) >>> (DB) <<< (Usando la configuratore dell'IDE che sferutterà il concetto di TableAdapter e DataSet)

MarcoGG
13-05-2009, 17:00
(Definendo a mano gli oggetti OleDb da codice) >>> (DB) <<< (Usando la configuratore dell'IDE che sferutterà il concetto di TableAdapter e DataSet)

Se è una domanda del tipo "cosa è meglio fare", personalmente scelgo "Definendo a mano gli oggetti OleDb da codice". Il DataSet è uno degli oggetti cardine di ADO.NET, ma non significa che lo si debba usare sempre e comunque.
Ad es. se fai interrogazioni SELECT verso il DB, un DataReader è velocissimo e in molti casi preferibile al filling di oggetti DataSet in sola lettura...
Dal momento che stai imparando VB, non farti tentare dalle procedure guidate, studia e scrivi.

Matrixbob
14-05-2009, 10:44
Dal momento che stai imparando VB, non farti tentare dalle procedure guidate, studia e scrivi.


OK.
Mi son trovato sto numero

Private Sub btnAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnulla.Click
End
End Sub

che mi sembra strano, ma ha l'effetto di killare l'applicazione.
Equivale a un exit?

MarcoGG
14-05-2009, 11:22
OK.
Mi son trovato sto numero

Private Sub btnAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnulla.Click
End
End Sub

che mi sembra strano, ma ha l'effetto di killare l'applicazione.
Equivale a un exit?

Non esattamente. La direttiva End in VB.NET deriva dal VB-non-.NET ( VB6, VB5 ecc... ) ed esegue un kill "brutale", ossia l'uscita istantanea da ogni codice in esecuzione nell'Application... E' talmente diretta che non rispetta nemmeno il blocco Try Catch.
Esempio : poniamo di avere una semplice applicazione con 1 Form e un pulsante "Esci", ed associare prima CODICE1 e poi CODICE2 ad "Esci" :

> CODICE1 :

Try
Application.Exit()
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try

> CODICE2 :

Try
End
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try

Con CODICE1 ho tempo di vedere la Form rossa e almeno di sentire il suono di Windows associato allo Show di una MsgBox ( difficilmente riuscirò anche a vederla... ), con CODICE2 no, perchè l'esecuzione viene interrotta senza condizioni.

Matrixbob
19-05-2009, 09:33
Grazie GG, ti ringrazio sempre per le tue perle di conoscenza. Non ho ancora avuto il tempo di studiarmele perchè qui sul campo mi stanno tartassando ai fianchi.

Sfrutto solo l'occasione di annotare qui un appunto preso, così cestino il pezzo di carta!!! :)

(Definendo a mano gli oggetti OleDb da codice) >>> (DB) <<< (Usando la configuratore dell'IDE che sferutterà il concetto di TableAdapter e DataSet)

Purtroppo mi tocca vedere gli argomenti a "spot" come mi si presentano innanzi.
Allora ritorno sull'accesso ai DB utilizzando "TableAdapter".

DB fisico <> TableAdapter <> DataSet (DB logico) {di DataTable}

Ogni qualvolta apporto una modifica al DB fisico devo aggiornare da VisualStudio il DataSet.
Ogni qualvolta devo aggiornare dei dati sul DB fisico lo faccio sul DataSet e poi passo attraverso un metodo del TableAdapter.

MarcoGG
19-05-2009, 15:23
DB fisico <> TableAdapter <> DataSet (DB logico) {di DataTable}

Ogni qualvolta apporto una modifica al DB fisico devo aggiornare da VisualStudio il DataSet.
Ogni qualvolta devo aggiornare dei dati sul DB fisico lo faccio sul DataSet e poi passo attraverso un metodo del TableAdapter.

Non so se sia una domanda o l'affermazione di ciò che stai per fare...

Il TableAdapter si usa principalmente mediante la creazione / configurazione guidata dell'origine dati di VS, perciò le operazioni cui fai riferimento, se la procedura guidata è stata fatta correttamente, non avrai bisogno di gestirle via codice, dal momento che tutti i componenti utili ( DataSet, TableAdapter ecc... ), nonchè le logiche di visualizzazione e modifica vengono inserite da VS. Il Commit a DB delle modifiche in questo caso viene eseguito con :
Me.TableAdapterManager.UpdateAll(Me.NomeDataSet)
ma anche questo è codice che viene generato da VS...

Matrixbob
19-05-2009, 15:28
Non so se sia una domanda o l'affermazione di ciò che stai per fare...

Il TableAdapter si usa principalmente mediante la creazione / configurazione guidata dell'origine dati di VS, perciò le operazioni cui fai riferimento, se la procedura guidata è stata fatta correttamente, non avrai bisogno di gestirle via codice, dal momento che tutti i componenti utili ( DataSet, TableAdapter ecc... ), nonchè le logiche di visualizzazione e modifica vengono inserite da VS. Il Commit a DB delle modifiche in questo caso viene eseguito con :
Me.TableAdapterManager.UpdateAll(Me.NomeDataSet)
ma anche questo è codice che viene generato da VS...

Stavo cercando di documentare i meccanismi che avvengono se si usa la filosofia dall'IDE Visual Studio.

Matrixbob
22-05-2009, 14:54
> CODICE1 :


Try
Application.Exit()
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try


> CODICE2 :

Try
End
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try


Il CODICE1 mi fa partire la segnalazione di Win verso Microsoft; il CODICE2 no. Tengo il CODICE2 quindi.

MarcoGG
22-05-2009, 16:31
Il CODICE1 mi fa partire la segnalazione di Win verso Microsoft; il CODICE2 no. Tengo il CODICE2 quindi.


Cioè ? :confused:
Che intendi con "segnalazione a Ms" ?

Matrixbob
28-05-2009, 11:19
Cioè ? :confused:
Che intendi con "segnalazione a Ms" ?

Si, intendo quella finestrella di segnalazione automatica che chiede di inviare o no a Microsoft l'errore. il debug di Windows penso che sia ... appena imgshack mi carica l'immagine la inserisco qui sotto.

http://img33.imageshack.us/img33/6264/debuga.jpg

Cos' il debug automatico di Windows questo?

MarcoGG
28-05-2009, 13:44
Molto, molto strano. :mbe:
A me non capita niente del genere.
Oltretutto il Try Catch non deve permettere un simile crash...
Sicuro di non aver messo dell'altro codice in qualche evento di chiusura ?

In ogni caso Application.Exit è la strada preferibile, End si usa solo in casi "speciali"...

Matrixbob
08-06-2009, 11:36
Molto, molto strano. :mbe:
A me non capita niente del genere.
Oltretutto il Try Catch non deve permettere un simile crash...
Sicuro di non aver messo dell'altro codice in qualche evento di chiusura ?

In ogni caso Application.Exit è la strada preferibile, End si usa solo in casi "speciali"...

Il codice è semplicemente questo


Public Function ConnettiFileNet() As Boolean
Dim oNeighborhood As New IDMObjects.Neighborhood
Dim oLibraries As IDMObjects.ObjectSet
Dim Trovata As Boolean = False

oLibraries = oNeighborhood.Libraries
For Each oLib In oLibraries
If oLib.Label = LibreriaFileNet Then
Trovata = True
Exit For
End If
Next

If Not Trovata Then
' Libreria FileNET Non trovata
End
Return False
End If

' Routine
My.Application.DoEvents()
...
...


Eseguendo quello in grassetto, così esce senza problemi, altrimenti crea quel crash di cui ho riportato SS!

MarcoGG
08-06-2009, 13:53
Può dipendere quasi sicuramente dal codice che segue. Quello che fai è una pratica abbastanza "anomala". Se chiami una funzione dovresti prima completarla, avere il suo valore di ritorno, e poi, a funzione eseguita, decidere se chiudere l'applicazione o meno...

Cmq, nel tuo caso, puoi essere sicuro di troncare una Function così :

Private Function FaiQualcosa() As Boolean

'...
'...

Dim Trovata As Boolean = False

If Not Trovata Then
Application.Exit()
Exit Function
End If

My.Application.DoEvents()
'...
'...

End Function

Inutile usare return, anche perchè se esci dall'applicazione che te ne fai del valore di ritorno della Function ?

Matrixbob
09-06-2009, 07:13
Ok grazie GG! Appena risolvo i problemi delle giornata provo a verificare.

Sai mica anche come posso fare diventare la barra lunga quanto il form e autoridimensionante?
Non trovo l'ancora ... e mi rimane piccolina la barra. :(

http://img13.imageshack.us/img13/1420/barrc.png

MarcoGG
09-06-2009, 10:39
Ok grazie GG! Appena risolvo i problemi delle giornata provo a verificare.

Sai mica anche come posso fare diventare la barra lunga quanto il form e autoridimensionante?
Non trovo l'ancora ... e mi rimane piccolina la barra. :(

http://img13.imageshack.us/img13/1420/barrc.png

Quello pare essere un problema noto di Visual Studio ( di VS, NON di VB. Che tu scriva in VB o C# o VC il problema è lo stesso ).
Le proprietà Anchor e Dock ci sono, ma pare siano accessibili solo da codice e, ciò che più conta, non sembrano avere alcun effetto sul ridimensionamento Form...
Il workaround più semplice :
Se vuoi mantenere quel simbolo in basso a destra di ridimensionamento Form, crea pure la tua status bar vuota, poi ti crei una semplice progressbar ( NON la progressbar incorporata nella status ), la posizioni a sinistra in basso, sovrapponendola alla status bar, e imposti Anchor = Botton, Left, Right.
La fai arrivare a destra quel tanto che serve perchè non vada sopra al simbolo di ridimensionamento Form, e hai finito.
Improvvisare, Adattarsi e Raggiungere lo scopo ! :O

In ogni caso esiste un valido sostituto alla status bar, che penso non dia alcun problema : il TableLayoutPanel. ;)

Matrixbob
10-06-2009, 19:16
OK elaboro!
Volevo inoltre far notare che sto cercando di tenere il primo post (http://www.hwupgrade.it/forum/showpost.php?p=26847938&postcount=1) aggiorato (o meglio "circa" aggiornato :) )

Matrixbob
16-06-2009, 12:08
Il namespace My è stato introdotto dalla versione 2005 ( potrei sbagliarmi ma non ricordo proprio ci fosse nella 2003... ), come namespace "trasversale" ( mi si passi l'espressione ), per semplificare ulteriormente l'accesso ad operazioni comuni e di utilità generale, una sorta di collezione di metodi-scorciatoia ad accesso veloce, come ad esempio :

- My.Computer.Audio > espone metodi per gestire la riproduzione di audio, se nza scomodare classi, controlli WMP e quant'altro...
- My.Application.OpenForms() > tutte le Form aperte dell'applicazione...
- My.Computer.FileSystem. e My.Computer.Network > metodi per files e directory ( copia, spostamento, download ecc... ) in locale, Lan o via Web...
- My.Computer.FileSystem.FindInFiles() > con una sola riga di codice posso cercare l'occorrenza di una stringa in tutti files di un albero di directory e ricevere una collection di nomi di files...

Sono solo alcuni esempi di ciò che si può fare con My.

Per quanto riguarda Application.DoEvents(), ho un esempio che chiarifica meglio di mille parole. Vedo di postarlo, appena lo trovo.
Ritornando su questo: allora mi ocnviene fare My.Application.DoEvents() perchè è "namespace trasversale di framwork"?
Meglio questo invece di Me.Application.DoEvents()?
Quando mettere Application.DoEvents senza Me o My?

[EDIT1]
Ah ok mi ero perso questo post (http://www.hwupgrade.it/forum/showpost.php?p=27385231&postcount=73)

[EDIT2]
Però effettivamente si fa riferimendo al Application.DoEvents senza me e My, come mai?


My fa girare gli eventi di tutto il computer?
Me solo quelli della classe?
Senza Me e My solo gli eventi dell'annidamento in cui mi trovo?

MarcoGG
16-06-2009, 14:38
Allora :

Application.DoEvents()

My.Application.DoEvents()

System.Windows.Forms.Application.DoEvents()

Questi 3 sono in pratica la stessa cosa.
Il primo, semplicemente Application.DoEvents() è da prendere con le molle in quanto, in alcuni casi specifici, può dare adito ad ambiguità, perciò lasciamolo da parte in uno scenario di utilizzo del tutto generale.
Dal momento che c'è My. la forma più sicura e al tempo stesso più sintetica è My.Application.DoEvents().

Per quanto riguarda Me.Application.DoEvents(), bisongnerebbe vedere nel tuo caso cos'è quel Me.
Se lo fai da dentro una classe Form ottieni errore, così come nella stragrande maggioranza dei casi, perciò lo eviterei proprio.

Application è System.Windows.Forms.Application, mentre Form1 eredita da System.Windows.Forms.Form. Non so in quale caso tu sia riuscito a compilare con un Me.Application.DoEvents()...

Matrixbob
16-06-2009, 16:19
Allora :

Application.DoEvents()

My.Application.DoEvents()

System.Windows.Forms.Application.DoEvents()

Questi 3 sono in pratica la stessa cosa.
Il primo, semplicemente Application.DoEvents() è da prendere con le molle in quanto, in alcuni casi specifici, può dare adito ad ambiguità, perciò lasciamolo da parte in uno scenario di utilizzo del tutto generale.
Dal momento che c'è My. la forma più sicura e al tempo stesso più sintetica è My.Application.DoEvents().

Per quanto riguarda Me.Application.DoEvents(), bisongnerebbe vedere nel tuo caso cos'è quel Me.
Se lo fai da dentro una classe Form ottieni errore, così come nella stragrande maggioranza dei casi, perciò lo eviterei proprio.

Application è System.Windows.Forms.Application, mentre Form1 eredita da System.Windows.Forms.Form. Non so in quale caso tu sia riuscito a compilare con un Me.Application.DoEvents()...
:ave: :nera:
Onde fugare ogni dubbio mi trovo un forum ufficiale Microsoft e vedo se completano il quadro.

Matrixbob
28-06-2009, 21:30
Sto arrivando (per ora, dato che mi scade il progetto) alla fine dell'avventura con Visual Basic.

Grazie GG per l'aiuto alla fine fornitomi.

Volevo ancora far notare un popup che compare quando lanci VB2005 da Vista.

http://img26.imageshack.us/img26/2267/immaginebkg.png

Tra l'altro per una macchina debita a sviluppo .NET quanta ram consigliate? Io almeno 2GB perchè sull'attuale dove ho XP e VB2005 a volte ho dei freez. :(

MarcoGG
29-06-2009, 10:33
Sto arrivando (per ora, dato che mi scade il progetto) alla fine dell'avventura con Visual Basic.

Grazie GG per l'aiuto alla fine fornitomi.

Volevo ancora far notare un popup che compare quando lanci VB2005 da Vista.
...

Tra l'altro per una macchina debita a sviluppo .NET quanta ram consigliate? Io almeno 2GB perchè sull'attuale dove ho XP e VB2005 a volte ho dei freez. :(

Ehhh, Vista è sempre Vista, che ci vuoi fare ? :D

Beh, almeno 2 GB di Ram, al prezzo delle Ram di adesso ( in alcuni casi, su Ram Oem, davvero irrisori... ) è consigliabile su qualsiasi Pc.
Dipende da che applicazioni crei, certo che un'applicazione VB che porta via 2 GB in debug è un bella bestia ! :D

Che freezes hai ?

Io su XP con Dual Core / 2 GB Ram ecc... ho una certa "lentezza" ( roba di qualche secondo ), ma solo al primo avvio di VS. Gli avvii successivi sono molto più veloci...

Matrixbob
29-06-2009, 19:00
Ehhh, Vista è sempre Vista, che ci vuoi fare ? :D

Beh, almeno 2 GB di Ram, al prezzo delle Ram di adesso ( in alcuni casi, su Ram Oem, davvero irrisori... ) è consigliabile su qualsiasi Pc.
Dipende da che applicazioni crei, certo che un'applicazione VB che porta via 2 GB in debug è un bella bestia ! :D

Che freezes hai ?

Io su XP con Dual Core / 2 GB Ram ecc... ho una certa "lentezza" ( roba di qualche secondo ), ma solo al primo avvio di VS. Gli avvii successivi sono molto più veloci...

Invece in ste aziende hanno 1GB di RAM tutta tirata per XP e le sue cazzatine installate, figurati se VS2005 gira bene!
Ogni tanto si frizza tutto il sistema, dal client di posta Outlook 2003 ai browser FireFox/Opera.
Ho sempre la caga di essere sgamato con Skype aperto perchè non riesco a switchare tra le applicazioni col TAB! :D
Il processore è un Dual Core abbastanza prestante, ma completamente strozzato IMHO da disco lentissimo e poca ram. Sono delle "workstation" (per modo di dire, come se bastasse il processore a fare la macchina) Dell...

Matrixbob
29-06-2009, 19:04
[PS]
CMQ tanto per chiudere in bellezza oggi penultimo giorno è spuntato un warning su un riferimento importato. Dopo posto l'immagine per vederese è risolvibile e faccio 1 UP!
A primo achito sulla mia "workstation" (:rotfl:) non risultava tra i warning, mentre sull'operatore virtuale si.
Mi pare che mi inibisca la pubblicazione la comparsa di tale warning ... magari l'avrete già visto.

Matrixbob
29-06-2009, 19:23
Spero si veda!

http://img395.imageshack.us/img395/3616/asdr.png

Tra l'altro ho anche quel "Form1.vb" bianco che probabilmente non mi appartiene ma è un rimasuglio di codice/file che mi ritrovo nel progetto. Giusto?

MarcoGG
29-06-2009, 20:58
Il processore è un Dual Core abbastanza prestante, ma completamente strozzato IMHO da disco lentissimo e poca ram. Sono delle "workstation" (per modo di dire, come se bastasse il processore a fare la macchina) Dell...

Beh, al giorno d'oggi una "workstation" senza almeno un SATA @7200 Rpm, la vedo maluccio, ma non disperare, c'è chi si è trovato ( io ) in situazioni ben peggiori, che so, ad esempio con un "capo" che cerca di convincere i suoi collaboratori ad installare un application server su un Pentium II, per testare una grossa applicazione web... Sì, hai letto bene, Pentium II, e si parla solo di qualche annetto fa. E' davvero disarmante e triste, quando poi il ragazzino che fa gli esercizietti a scuola c'ha sotto un Quad-Core con 4 GB di Ram e un paio di Raptor in RAID. :(

Per quel warning, StdType non mi dice nulla, quasi certamente non ha niente a che fare col FW, forse un rif. a componente COM. Prova a cercarla manualmente nei rif. COM, e comunque potrebbe essere una libreria non più presente, se hai spostato il progetto da una macchina all'altra. Mai sentito dell'opzione "Copia Localmente = True" dei COM ? :D
La Form bianca è una novità. Se Form1 fosse stata spostata o rinominata il debugger dovrebbe dare errore, mentre da quello screen vedo solo alcuni warning... Se tenti di aprirla che succede ?
Concludendo, con un progetto in quelle condizioni di compilare non se ne parla ( nel senso che sarei io a non volerlo proprio compilare ! :D ).

Matrixbob
30-06-2009, 00:06
Per quel warning, StdType non mi dice nulla, quasi certamente non ha niente a che fare col FW, forse un rif. a componente COM. Prova a cercarla manualmente nei rif. COM, e comunque potrebbe essere una libreria non più presente, se hai spostato il progetto da una macchina all'altra. Mai sentito dell'opzione "Copia Localmente = True" dei COM ? :D

Anche qui a casa con Vista me lo da quel warning.
Mai sentito dell'opzione "Copia Localmente = True" dei COM, puoi appronfondire?!
Qui tutto autodidatta tra libri e discussioni di questo forum.


La Form bianca è una novità. Se Form1 fosse stata spostata o rinominata il debugger dovrebbe dare errore, mentre da quello screen vedo solo alcuni warning... Se tenti di aprirla che succede ?

Se la apro:

Public Class FrmDatiDigitati

End Class

Se la cancello pare non succedere nulla.
:D Viva! Che delirio! :D

MarcoGG
30-06-2009, 10:05
Mai sentito dell'opzione "Copia Localmente = True" dei COM, puoi appronfondire?!


Quando aggiungi un rif. a componente COM puoi decidere se copiarlo localmente ( su proprietà del rif. in Esplora Soluzioni ). Al primo avvio del progetto VS va a prendersi la dll, o ocx, ecc, corrispondente, ne fa una copia e la inserisce nella bin\Debug\.
Alla prima compilazione fa lo stesso nella bin\Release\. ;)


Se la apro:

Public Class FrmDatiDigitati

End Class


Un file che si chiama Form1.vb, e dentro una FrmDatiDigitati ? Pessimo... :D

Matrixbob
30-06-2009, 20:29
Un file che si chiama Form1.vb, e dentro una FrmDatiDigitati ? Pessimo... :D

Infatti l'ho rimosso e non è successo nulla.
IMHO spazzatura dovuta a sovrascritture delle cartelle di progetto o CMQ al caso.

Oggi ufficialmente ho finito col VB (o almeno faccio pausa), ma ufficiosamente esaminerò ancora tutto quello di cui abbiamo discusso in questi 3 mesi.

Da Lunedì si cambia tecnologia ... Java mi han detto. :O
Poi forse me le son fatte tutte le + diffuse. :)

MarcoGG
30-06-2009, 21:00
Poi forse me le son fatte tutte le + diffuse. :)

Cosa, tecnologie... o segretarie ? :D

[ ... pensando al tuo post #13 ... ]

Matrixbob
30-06-2009, 21:44
Cosa, tecnologie... o segretarie ? :D

[ ... pensando al tuo post #13 ... ]

Eh ho sopravvalutato, dovevo nascere 10 anni prima per quello! :P