Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-08-2005, 16:28   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[C#]Lavorare con le classi

Altro problema della giornata

Allora,sono riuscito a trovare degli esempi che mi hanno consentito di collegarmi tramite C# ad un db mysql e di leggerne da console il contenuto e fare qualche piccola operazione.Ora,non contento di questo,mi era venuta la malsana idea di creare anche una piccola interfaccia grafica.Ad ogni modo,il grande e paziente vicius mi ha consigliato di cominciare a pensare a crearmi delle classi,per scomporre il problema in tanti problemini più piccoli.

Allora,per quanto riguarda la connessione al database,ho fatto così:
Codice:
using System;
using System.Data;
using ByteFX.Data.MySqlClient;
 
 
 class Connessione
 {
    public Connessione(string[] args)
    {
       
       public string connectionString = 

                        "Server=localhost;" +
                        "Database=presenze;" +
                        "User ID=raoul;" +
                        "Password=quellochevolete;";	 		                 
       
       IDbConnection dbcon;
       dbcon = new MySqlConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
      
       public string sql = "SELECT codice, MIN(orario) AS Ingresso, MAX(orario) AS Uscita, (MAX(orario) - MIN(orario)) " + 
                           " AS ore FROM rilievi" +
       			   " WHERE codice = '0017' " +
                           " GROUP BY codice" ;
       
       dbcmd.CommandText = sql;
       
       IDataReader reader = dbcmd.ExecuteReader();
       
       while(reader.Read()) {
            string Codice = (string) reader["codice"];
            string Ingresso = (string) reader["ingresso"].ToString();
            string Uscita = (string) reader["uscita"].ToString();
            string Ore = (string) reader["ore"].ToString();
            
            
       }
       // chiudi le connessioni
       reader.Close();
       reader = null;
       dbcmd.Dispose();
       dbcmd = null;
       dbcon.Close();
       dbcon = null;
    }
}
E questo l'ho salvato in un file che ho chiamato connessione.cs
Ora, nel file Main.cs ho:

Codice:
using System;
using System.Data;
using ByteFX.Data.MySqlClient;
using Gtk;
using Glade;
 
 
public class Test 
 {
    public static void Main(string[] args)
    {
       
       
       Console.WriteLine("Name: " + Codice + Ingresso + Uscita + "   " + "Totale: " + Convert.ToDouble(Ore));
       
     
    }
}
Allora, se lavoro in un unico file, ad esempio il Main.cs non ho problemi e funziona.

Nel caso quindi di una classe contenuta in un altro file,come dico al main di prendermi i valori da li?

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 16:31   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
opporc!!

Ho sbagliato sezione

Si può spostare per favore moderatori?

Thx.


RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 07:52   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Spostato
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 09:27   #4
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
ciao
ho provato a modificare la tua classe però non la posso provare ora
Codice:
using System;
using System.Data;
using ByteFX.Data.MySqlClient;
 
namespace ProvaMysql{
	class Connessione
	{
		
		private string connectionString;
		private IDbConnection dbcon;
		private IDbCommand dbcmd;
		private string sql;
		private IDataReader reader;
		
		
		public Connessione()
		{
			
			connectionString = "Server=localhost;" +
				"Database=presenze;" +
				"User ID=raul;" +
				"Password=quellochevolete;";
			
			
			dbcon = new MySqlConnection(connectionString);
			dbcon.Open();
			
			
			
		}
		
		public void Comando(){
			dbcmd = dbcon.CreateCommand();
			sql = "SELECT codice, MIN(orario) AS Ingresso, MAX(orario) AS Uscita, (MAX(orario) - MIN(orario)) " +
				" AS ore FROM rilievi" +
				" WHERE codice = '0017' " +
				" GROUP BY codice" ;
			
			dbcmd.CommandText = sql;
			
			reader = dbcmd.ExecuteReader();
			
			while(reader.Read()) {
				Console.WriteLine(reader["codice"] + " " + 
				" " + reader["ingresso"] + " " +  reader["uscita"] + 
				" " +  reader["ore"]);
			}
		}
		// chiudi le connessioni
		~Connessione(){
			reader.Close();
			reader = null;
			dbcmd.Dispose();
			dbcmd = null;
			dbcon.Close();
			dbcon = null;
		}
	}
}
ho diviso il tuo codice in 3 metodi
il costruttore crea la connessione
il metodo comando esegue il comando contenuto nella stringa sql e stampa il risultato
il metodo ~Connessione() è il distruttore dovrebbe chiudere la connessione e liberare le risorse
il main è così
Codice:
using System;
 
namespace ProvaMysql
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			Connessione con = new Connessione();
			
			con.Comando();
		
			
		}
	}
}
creo un nuovo oggetto di tipo Connessione, quando chiami il costruttore dovrebbe anche aprire la connessione al database
con.comando() esegue il comando e stampa
quando l'oggetto con viene distrutto dal Garbage Collector, viene chiamato il distruttore che libera le risorse
Provalo spero che funzioni io ora non ho un server MySql per provarlo
P.S. Che libro usi per studiare C#?
P.P.S. dove trovo la documentazione di ByteFX?

Ultima modifica di Brazorv : 25-08-2005 alle 09:33.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 09:35   #5
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Io avrei separato il codice in questo modo.
Codice:
using System;
using System.Data;
using ByteFX.Data.MySqlClient;


class Connessione 
{
	private IDbConnection conn;
	
	public Connessione(string  host, string db, string user, string passwd)
	{
		string connectionString = "Server="+host+";"  +
                        		  "Database="+db+";"  +
                                  "User ID="+user+";" +
                                  "Password="+passwd+";" ;

		conn = new MySqlConnection (connectionString);
		conn.Open();
	}
	
	public IDataReader EseguiQuery()
	{
		string sql = "SELECT codice, MIN(orario) AS Ingresso, " +
		             " MAX(orario) AS Uscita, (MAX(orario) - MIN(orario)) " + 
                     " AS ore FROM rilievi" +
                     " WHERE codice = '0017' " +
                     " GROUP BY codice" ;

        IDbCommand cmd = conn.CreateCommand();
        cmd.CommandText = sql;
		
		return cmd.ExecuteReader();
	}

}
Certo pero Connessione e EseguiQuery non sono due nomi molto significativi.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 09:53   #6
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
ho provato il codice che ho scritto sopra e mi da un eccezione:

Unhandled Exception: ByteFX.Data.MySqlClient.MySqlException: Client does not sup
port authentication protocol requested by server; consider upgrading MySQL client

uso Mysql 4.1 e ByteFx 0.76 su Windows
sapete dirmi come risolvere il problema?
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 14:03   #7
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
@ Brazorv:

Io ho le stesse versioni tue ma non è che ti da un'eccezione perchè usi delle parole chiave che fanno parte della libreria ByteFx per dichiarare variabili?!?

Inoltre:

Grazie ad entrambi per i suggerimenti ma sono ancora abbastanza confuso

Non riesco a trovare una guida (in qualsiasi lingua) che tratti il concetto di "classi" partendo dal presupposto che non le si sia mai affrontate prima.Su tutte le guide che sto seguendo,è come se il concetto di classe sia qualcosa di talmente scontato che non lo trattano "per newbie"
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 15:28   #8
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
...in qualke libro di c++ hai provato??? o magari di java...
se nn sbaglio in quello di bruce eckel thinking in java ne parla.....
cmq puoi vedere la definizione di una classe come la definizione formale e completa di un oggetto, con tutte le variabili globali utilizzabili dall'oggetto (ad esempio per un libro potrebbero essere num di pagine, autore, titolo, ecc.), quindi c'è il costruttore ke è il metodo primario che si occupa della corretta inizializzazione della classe, e anzi ci possono essere un certo numero di costruttori che differiscono solo per il tipo o il numero dei parametri.
Ad esempio nella classe che dovevi usare tu per accedere a mysql la cosa migliore è crearsi la connessione al server nel costruttore.
Se fosse stato una classe Libro avresti dovuto inizializzare tutte le informazioni ke lo caratterizzano (le variabili di cui sopra), magari utilizzando dei parametri ke hai passato al costruttore.
Inoltre ogni classe che si rispetti deve anche avere dei metodi (anche se non è per nulla obbligatorio). Questi metodi sono delle particolari "funzioni" che agiscono sull'istanza dell'oggetto creato modificandone lo stato o facendolo agire su altri oggetti.....
Infine c'è il distruttore che si occupa di liberare le risorse occupate dal tuo oggetto una volta che il suo scopo è finito.
A questo punto dovrei spiegarti perchè prima ho parlato di "istanza" di classe.....
Praticamente quella che hai fatto tu e che hai chiamato genericamente classe è in realtà la definizione della classe.
Quando invece viene invocato il costruttore (Libro dune=new Libro("Frank Herbert")) viene istanziata la classe che hai definito, creando un oggetto dune avente tutte le caratteristiche dichiarate nella tua classe e che lo inizializza sfruttando il costruttore che riceve come parametro una stringa.
In questo modo il tuo oggetto dune sarà un istanza della classe Libro e la sua variabile privata "autore" avrà il valore "Frank Herbert".
Nulla ti vieta di utilizzare degli altri oggetti di tipo libro (sacraBibbia, starWars) che dovranno seguire sempre le specifiche di base dettate dalla definizione della classe, ma che avranno i VALORI di queste caratteristiche diversi l'uno dall'altro.
Ora....perchè t ho smarruggiato i neuroni x spiegarti che un oggetto è un'istanza della definizione di una classe da te specificata?????
perchè vi sono delle particolari variabili o dei particolari metodi di una classe che sono chiamati "statici".
Ovvero questi metodi non cambiano dinamicamente a seconda dell'oggetto che stiamo utilizzando (dune, robinHood), ma sono uguali x tutte le istanze delle classi.....
Ad esempio... la costante Pi Greco può essere definita come una costante statica, poichè essa DEVE avere lo stesso valore per tutte le differenti istanze della classe.
O ad esempio il metodo coseno (dato ke siamo in tema ) avrà un implementazione comune per tutte le classi.
L'utilizzo di questi metodi statici è ad esempio il seguente:
Math.sin(3.14)
ke richiama il metodo statico sin della classe Math.
Inoltre anche il metodo main è un metodo statico, questo perchè non è variabile a seconda delle istanze della classe, ma deve essere uguale per tutte.
...Probabilmente mi sto dimenticando una marea di cose.....quasi certamente ti ho confuso ancora di più........
cmq prova a guardare nei libri che ti dicevo prima.... magari riesci a chiarirti un pò meglio il concetto di classe!
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2005, 18:59   #9
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
io sto usando questo libro "C# How to Program" di Deitel & Deitel. spiega bene la programmazione ad oggetti, ed è pieno di esempi.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
La NASA sta costruendo e provando i dron...
Northrop Grumman utilizzerà HALO ...
Anthropic prepara l'IPO dei record: gli ...
La beta di iOS 27 conferma i rumor, Appl...
HONOR esagera, il prossimo smartphone av...
L'edizione speciale della Switch 2 per i...
Taiwan, il primo attacco hacker AI auton...
The Lord of the Rings: War in the North ...
I prezzi delle RTX 50 continuano ad aume...
La prossima crisi riguarderà i pannelli ...
Terabyte di dati trafugati: un attacco a...
Volo Delta 591, spunta un Wi-Fi che imit...
La scienziata lancia l'allarme: l'intell...
BYD Denza N8 e la super batteria: 130 kW...
Trump autorizza le aziende private a hac...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v