Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-01-2013, 23:02   #1
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
[C++] Input da un Textbox: ottenere una stringa da un Textbox

Con VisualC++, in un progetto clr, se nella progettazione dell'evento click di un Textbox scrivo: textBox1->Text= "prova"; io visualizzo "prova" nel Textbox.
Se invece io voglio importare in una stringa std::string il testo digitato nel Textbox, come posso fare?

Ultima modifica di Albitexm : 27-01-2013 alle 23:06.
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2013, 08:24   #2
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Albitexm Guarda i messaggi
Con VisualC++, in un progetto clr, se nella progettazione dell'evento click di un Textbox scrivo: textBox1->Text= "prova"; io visualizzo "prova" nel Textbox.
Se invece io voglio importare in una stringa std::string il testo digitato nel Textbox, come posso fare?
La proprietà Text di una TextBox è di Tipo String, pertanto ti basta assegnare alla tua variabile di tipo String il contenuto di textBox1->Text.

Edit: poi, se ci fornisci qualche dettaglio in più sul come vuoi utilizzare quel valore possiamo aiutarti meglio.

Ultima modifica di [Kendall] : 28-01-2013 alle 09:59.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2013, 13:10   #3
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
La proprietà Text di una TextBox è di Tipo String, pertanto ti basta assegnare alla tua variabile di tipo String il contenuto di textBox1->Text.
Già, come?
Io importo nel textbox la posizione che è stata copiata nella cliboard come stringa dalla chess GUI con il codice: textBox1->Text = Clipboard::GetText();
ora questa stringa che ho e visualizzo adesso nel textbox, come l'assegno a una std::string?

Quote:
poi, se ci fornisci qualche dettaglio in più sul come vuoi utilizzare quel valore possiamo aiutarti meglio.
Dunque, io ho scritto un programma d'analisi scacchistico in modalità console. Devo creare un'interfaccia grafica per agevolare l'utente nell'uso del tool.
Il programma riceve gli input dall'utente sotto forma di stringa. Ritorna come output delle stringhe. Le mie idee concettuali per la realizzazione di una GUI per l'applicazione sono due: 1- scrivere un progetto clr che incorpora il codice del motore d'analisi(quello che ho sritto per ora in modalità console). 2-scrivere un progetto clr che realizza solo la GUI, e che lancia il programma d'analisi come processo Children, comunicando con esso tramite DLL. Questo è il metodo usato dalle Chess GUI in circolazione, che "caricano" l'engine scacchistico da usare. (I chess engine, sono ditribuiti come file .exe, e se si clicca sopra, partono e si possono usare in modalità console).

Il mio programma, come tutti i chess engines, riceve i dati di input tramite il metodo Getline() e restituisce gli output tramite cout<<.

Ultima modifica di Albitexm : 28-01-2013 alle 14:08.
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2013, 15:29   #4
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Albitexm Guarda i messaggi
Già, come?
Io importo nel textbox la posizione che è stata copiata nella cliboard come stringa dalla chess GUI con il codice: textBox1->Text = Clipboard::GetText();
ora questa stringa che ho e visualizzo adesso nel textbox, come l'assegno a una std::string?
Mh, non capisco il tuo dubbio.

Se hai bisogno di copiare il valore della textBox in una nuova variabile semplicemente fai un assegnamento diretto:
Codice:
std::string copy = textBox1->Text;
Altrimenti utilizzi una varibile puntatore, così hai la possibilità di sincronizzarti direttamente con il valore della textBox in qualsiasi momento.
Codice:
std::string* copy = textBox1.Text;
Ovviamente con quest'ultima soluzione devi stare attento perchè ogni modifica porta ad una modifica pure della textBox (comportamento che può essere voluto come no, quindi attenzione).
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2013, 17:22   #5
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
Mh, non capisco il tuo dubbio.

Se hai bisogno di copiare il valore della textBox in una nuova variabile semplicemente fai un assegnamento diretto:
Codice:
std::string copy = textBox1->Text;
Il dubbio è dovuto al fatto che se io assegno semplicemente il valore del textbox alla stringa ottengo questo errore:
"Errore 1 error C2440: 'inizializzazione': impossibile convertire da 'System::String ^' a 'std::basic_string<_Elem,_Traits,_Ax>'"
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2013, 18:18   #6
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Capito. Il problema sta nel fatto che effettivamente l'implementazione del C++/CLR non è C++ standard, e utilizza una serie di costrutti nonchè una sintassi in diversi aspetti differente.
Tra le varie cose viene definita una classe String per la compatibilità con gli altri linguaggi del CLR, classe che pertanto non è compatibile con le string della STL.

Non ho mai lavorato con il C++/CLR ma ho dato un'occhiata alla documentazione relativa alla classe System::String.
Non vi sono metodi interni alla classe System::String o relativi extension methods che permettono un passaggio diretto ad una std::string o ad una stringa stile c, però ho trovato un interessante articolo a riguardo.

Articolo by MSDN.

Una cosa importante: le std::string non sono stringhe di caratteri unicode (sono stringhe di char, pertanto non hanno l'estensione tale per essere idonee allo scopo).
Ti consiglio pertanto di affidarti alle wstring (che sono composte da wchar_t) che fanno comunque sempre parte della libreria standard ma ti permettono una maggiore interfacciabilità con il C++/CLR (oltre ad essere ben più moderne e funzionali delle sue sorelle string)
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2013, 00:23   #7
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
Capito. Il problema sta nel fatto che effettivamente l'implementazione del C++/CLR non è C++ standard, e utilizza una serie di costrutti nonchè una sintassi in diversi aspetti differente.
Tra le varie cose viene definita una classe String per la compatibilità con gli altri linguaggi del CLR, classe che pertanto non è compatibile con le string della STL.

Non ho mai lavorato con il C++/CLR ma ho dato un'occhiata alla documentazione relativa alla classe System::String.
Non vi sono metodi interni alla classe System::String o relativi extension methods che permettono un passaggio diretto ad una std::string o ad una stringa stile c, però ho trovato un interessante articolo a riguardo.

Articolo by MSDN.

Una cosa importante: le std::string non sono stringhe di caratteri unicode (sono stringhe di char, pertanto non hanno l'estensione tale per essere idonee allo scopo).
Ti consiglio pertanto di affidarti alle wstring (che sono composte da wchar_t) che fanno comunque sempre parte della libreria standard ma ti permettono una maggiore interfacciabilità con il C++/CLR (oltre ad essere ben più moderne e funzionali delle sue sorelle string)
Si, alla fine ho usato la funzione esposta nel link da te postato. Ma non bastava ancora, perchè ho scoperto che nelle applicazioni clr, non si può dichiarare una variabile globale se non di tipo statico. E quindi ho usato la funzione di trasformazione, per riversare il contenuto in una "static std:: string", che poi ho legato a un oggetto di una classe da me creata, che "esporterò" per collegarmi al programma "engine" tramite una dll. E non è finita! Ho anche scoperto che un controllo "numericUpDown" restituisce un valore non in "intero", bensì in "System decimal", che devo sempre poi "convertire" usando la funzione sopra linkata e ancora un'altra funzione, in un oggetto di una mia classe. Metodi comunque molto atificiosi. Diciamo pure che programmare in C++ è una cosa, usare Visual Studio per realizzare un'interfaccia grafica è un'altra cosa.
Ho sentito parlare bene di un'applicazione Nokia per creare interfaccie grafiche. Dicono che sia semplice e funzionale. La proverò. Grazie per le info.

Ultima modifica di Albitexm : 31-01-2013 alle 00:35.
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2013, 00:51   #8
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da Albitexm Guarda i messaggi
Si, alla fine ho usato la funzione esposta nel link da te postato. Ma non bastava ancora, perchè ho scoperto che nelle applicazioni clr, non si può dichiarare una variabile globale se non di tipo statico. E quindi ho usato la funzione di trasformazione, per riversare il contenuto in una "static std:: string", che poi ho legato a un oggetto di una classe da me creata, che "esporterò" per collegarmi al programma "engine" tramite una dll. E non è finita! Ho anche scoperto che un controllo "numericUpDown" restituisce un valore non in "intero", bensì in "System decimal", che devo sempre poi "convertire" usando la funzione sopra linkata e ancora un'altra funzione, in un oggetto di una mia classe. Metodi comunque molto atificiosi. Diciamo pure che programmare in C++ è una cosa, usare Visual Studio per realizzare un'interfaccia grafica è un'altra cosa.
Ho sentito parlare bene di un'applicazione Nokia per creare interfaccie grafiche. Dicono che sia semplice e funzionale. La proverò. Grazie per le info.
Visual Studio è solo l'IDE, il problema nel tuo caso è che usi come librerie grafiche le Windows Form che sono scritte per il CLR, e che richiedono pertanto il C++/CLR (nel tuo caso) che NON è C++ (in generale sempre meglio usare il C# quando hai a che fare con il CLR e il framework .NET).

Per una interfaccia C++ il consiglio che hai letto è valido. Usa le QT (non sono più seguite dalla Nokia però, bensì dalla Digia)
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2013, 17:17   #9
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
Per una interfaccia C++ il consiglio che hai letto è valido. Usa le QT (non sono più seguite dalla Nokia però, bensì dalla Digia)
Io leggo nei post italiani che QT Creator è gratuito. Seguendo il tuo consiglio ieri mi accingevo a scaricarlo, ma mi sono accorto che la licenza è trial è dura solo 30 giorni. In un mese non so se riuscirò ad imparare bene l'uso dell'applicazione e scrivere il mio programma. Ma anche se ci riuscissi, non potrò in futuro modichicare o aggiornare il programma creato.
Forse le versioni più vecchie erano free?
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2013, 17:27   #10
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Probabilmente hai guardato nella pagina della versione a pagamento.

Ecco la versione gratuita: http://qt-project.org/downloads
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 31-01-2013, 22:29   #11
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da [Kendall] Guarda i messaggi
Probabilmente hai guardato nella pagina della versione a pagamento.

Ecco la versione gratuita: http://qt-project.org/downloads
Grazie veramente utile informazione.
Albitexm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
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: 23:06.


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