Dovresti scrivere qual è il problema (e scrivere il tuo codice) se vuoi che ti dica sì o no...Originariamente inviato da Ephestus
Alka il tuo modo di chiudere le form mi dà qualche problema...![]()
Dovresti scrivere qual è il problema (e scrivere il tuo codice) se vuoi che ti dica sì o no...Originariamente inviato da Ephestus
Alka il tuo modo di chiudere le form mi dà qualche problema...![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Il problema non è all'atto pratico (non ci sono errori perché non l'ho ancora compilato), ma è che non ho mai avuto a che fare con le eccezioni e quindi me le sono lette in queste ultime 4 orette di "pseudolavoro".
Nelle varie guide ho notato che try si usa per far compiere una funzione o processo, il quale, se non va a buon fine, restituisce un errore che, seguito dalla parola chiave catch e da qualche altra funzione, si può far si di controllare e gestire l'errore.
__finally{func();}invece è l'azione che viene eseguita alla fine della funzione, o processo, presente in try...prima di chiudere il tutto...
fin qui è esatto?
Bhé se io nel progetto ho questo:
1)Dove lo piazzo __finally?? io l'ho posto subito prima di return 0;codice:#include <vcl.h> #pragma hdrstop USERES("CTC.res"); USEFORM("..\Cisco Template Creator\Inizio.cpp", F_Inizio); USEFORM("..\Cisco Template Creator\About.cpp", AboutBox); USEFORM("..\Cisco Template Creator\C_827.cpp", F_827); USEFORM("..\Cisco Template Creator\C_2520.cpp", F_2520); USEFORM("..\Cisco Template Creator\C_1601.cpp", F_1601); //----------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TF_Inizio), &F_Inizio); Application->CreateForm(__classid(TAboutBox), &AboutBox); Application->CreateForm(__classid(TF_827), &F_827); Application->CreateForm(__classid(TF_2520), &F_2520); Application->CreateForm(__classid(TF_1601), &F_1601); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; }
2)Più lo rileggo più sono convinto che tutto questo non va in questo .cpp, ma in quello relativo alla Form F_Inizio
Ne ho altre ma ho finito il mio turno...continuo domani...
![]()
Il costrutto try...catch serve per intercettare eventuali eccezioni che potrebbero verificarsi nel blocco di istruzioni compreso tra le parole chiave try e catch.
Il costrutto try...finally permette di definire un blocco di istruzioni (quello incluso in finally) che viene comunque eseguito qualsiasi cosa accada nel blocco di istruzioni incluso tra le parole chiave try e finally.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ho capito...finalmente ho capito cosa significa e dove va inserito try...__finally![]()
Dopo 4 giorni di vacanze ho realizzato quello che intendevi dire.
Grazie dell'aiuto![]()
![]()
Ricordati di leggere anche la Guida in linea a riguardo: ci sono tutte le indicazioni, per qualsiasi costrutto e parola chiave.Originariamente inviato da Ephestus
Ho capito...finalmente ho capito cosa significa e dove va inserito try...__finally![]()
Dopo 4 giorni di vacanze ho realizzato quello che intendevi dire.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ma in C++ Builder le interfacce grafiche con che libreria sono costruite? Uan libreria sviluppata da borland (vcl?) o si usano le MFC? E il codice che gestisce l'interfaccia si puo editare a mano o si possono solo scrivere le funzioni handler degli eventi?
![]()
Delphi e C++Builder sono due ambienti di sviluppo RAD che si basano sulla VCL (Visual Component Library); si tratta di una libreria che contiene un insieme ben nutrito di classi, funzioni e procedure.Originariamente inviato da anx721
Ma in C++ Builder le interfacce grafiche con che libreria sono costruite? Uan libreria sviluppata da borland (vcl?) o si usano le MFC? E il codice che gestisce l'interfaccia si puo editare a mano o si possono solo scrivere le funzioni handler degli eventi?
Alcune classi sono di infrastruttura; ad esempio, TObject è la classe base dalla quale derivano (implicitamente) tutte le classi, poi vi sono classi come TComponent, TControl e altre che danno vita a gerarchie di classi legate alla creazione di componenti, controlli visuali e così via, fino ai controlli di tipo più complesso. Esistono inoltre classi di supporto (liste, pile, code, collezioni, ecc.) nonchè funzioni e procedure per la conversione dei valori, il calcolo con valori data/ora e più moduli (unit) che contengono la definizione delle API di Windows, usate all'interno della librerie stessa per creare poi i controlli visuali e incapsulare funzionalità del sistema operativo affinchè lo sviluppatore possa trarne vantaggio.
La libreria VCL viene distribuita con il codice sorgente, pertanto è utile anche dare una sbirciata al codice per capire come Borland ha implementato una determinata cosa, che pattern ha usato e come si può fare tesoro del caso in esame per replicarlo nell'organizzazione del proprio codice.
Il codice sorgente a disposizione permette inoltre di compilare i file eseguibili includendo tale codice, come se lo sviluppatore lo avesse scritto di proprio pugno (o dito?), sebbene sia stato implementato da Borland; è per questo che Delphi e C++Builder producono eseguibili "standalone".
In alternativa, si possono compilare i programmi utilizzando package (librerie) che contengono tale codice già compilato in una sorta di DLL condivisibile tra le applicazioni...in poche parole, la massima varietà di scelta nel deploy delle proprie applicazioni, a seconda delle esigenze.
Le risorse offerte dalla VCL (classi, metodi, funzioni e procedure) sono identiche per Delphi e C++Builder, così come sono compatibili i compilatori, sebbene nel primo essa sia implementata in linguaggio Object Pascal (ora denominato solo "linguaggio Delphi"), mentre nel secondo è scritta in linguaggio C++. Questo consente da un ambiente la produzione di componenti, librerie e package condivisibili con l'altro, e viceversa.
Essendo fornita col sorgente, è ovviamente possibile modificarlo, anche se io in genere preferisco non farlo per i seguenti (buoni) motivi:
dato che non si può avere tutto il background esperienziale dei programmatori Borland nella creazione della libreria, è possibile renderla inservibile se le modifiche riguardano una parte "centrale" di essa, con il risultato che si dovrebbe reinstallare il prodotto; in secondo luogo, stiamo parlando di linguaggi completamente object oriented, pertanto è molto meglio creare discendenti delle classi che ci interessa estendere e modificarne (leggi: specializzarne) il comportamento, evitando tutti i possibili problemi derivanti da una modifica del codice originale, che tra l'altro porrebbe lo sviluppatore nella condizione di avere un codice differente da quello di tutti gli altri rendendo difficile ottenere aiuto da forum e newsgroup.
Parere del tutto personale: la VCL è la libreria meglio progettata che ho mai visto, poichè esiste da Delphi 1 ed ha già attraversato il porting da Win16 a Win32 (con Delphi 2), poi quello da Win32 a .NET (di recente introduzione con Delphi 8) con una compatibilità all'indietro ineguagliabile per i prodotti della categoria RAD di cui fa parte (per controprova, prova a chiedere ad un programmatore VB .NET proveniente da VB6 quanto è facile eseguire il porting in .NET di una propria applicazione legacy realizzata con VB6 o una versione precedente)...
Questo indica senz'altro che Borland mette un certo impegno nell'aiutare il porting delle applicazioni, ma anche che la VCL è stata comunque progettata sin dalla nascita con delle prerogative in grado di renderla robusta nel tempo.
In definitiva, era già un ottimo prodotto.
Credo di essere stato esaustivo...![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
si, grazie,Originariamente inviato da alka
Credo di essere stato esaustivo...![]()
![]()
Ma la diffewrenza tra c++Builder e c++BuilderX qual è? Sul sito della borand si lege che X include piu compilatori, ma per il resto?
La differenza tra C++Builder e C++BuilderX è totale.Originariamente inviato da anx721
Ma la diffewrenza tra c++Builder e c++BuilderX qual è? Sul sito della borand si lege che X include piu compilatori, ma per il resto?
Si tratta di due prodotti completamente differenti.
C++Builder, che penso abbia raggiunto la versione 6, è un ambiente per lo sviluppo di applicazioni Win32 (incluse console, DLL, CGI/ISAPI e altre ancora) con il linguaggio C++, ed è basato sulla VCL come descritto nel messaggio precedente.
C++BuilderX è un ambiente C++ per la programmazione distribuite su diverse piattaforme e sistemi operativi (ad esempio, PDA e cellulari); si tratta di un ambiente che è più simile ad Eclipse piuttosto che al classico C++Builder. E' integrabile con diversi compilatori nonchè con diversi SDK i quali, ospitato al proprio interno, rendono l'ambiente uno strumento consistente per sviluppare applicazioni per i dispositivi più diffusi usando estensioni fornite dai rispettivi produttori (ad esempio, Symbian, Siemens e altri che distribuiscono i propri SDK).
Al momento, non sono a conoscenza di nuove versioni in produzione di C++Builder, ma è probabile che ve ne saranno, che ne so forse integrate con C#Builder (un altro ambiente ancora, basato sul linguaggio C#, per lo sviluppo con il .NET Framework).
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...