martedì 21 aprile 2015

Evento Delphi Porte Aperte 2015: Programma e iscrizioni


Anche quest'anno Wintech-Italia organizza Delphi Porte Aperte, un evento gratuito di mezza giornata per offrire ai partecipanti una visione sullo stato dell'arte di Delphi (e RAD Studio) e approfondire le caratteristiche più interessanti delle ultime versioni degli ambienti di sviluppo targati Embarcadero.

L'edizione 2015 si terrà (come l'anno scorso) a Padova, presso lo Sheraton Hotel.
Maggiori informazioni:
Quest'anno, una importante novità: la mattina del giorno dell'evento, si terranno due seminari (a un prezzo di lancio) di approfondimento tenuti dagli Embarcadero MVP Andrea Magni e Paolo Rossi.

Gli argomenti dei seminari vertono principalmente su ambiti di automazione industriale e sviluppo di applicazioni business-oriented, particolarmente indicati per chi deve sviluppare applicazioni professionali e moderne:
  • Andrea Magni: "App business con Delphi (mobile e oltre!)"
  • Paolo Rossi: "Delphi per l'automazione industriale"
Per iscriversi ai seminari, potete usare questa pagina del nostro shop on-line.

Un ringraziamento anticipato a Devart e Fast Reports nostri partner nell'organizzazione della giornata e che metteranno a disposizione premi per i partecipanti (maggiori dettagli durante l'evento)!




Vi aspettiamo numerosi!
Qui trovate qualche fotografia dell'edizione 2014 !

Andrea e Paolo


mercoledì 15 aprile 2015

Embarcadero RAD Studio (e Delphi) XE8

Embarcadero Technologies ha rilasciato da qualche giorno la nuova versione di RAD Studio (e Delphi) battezzandola XE8,  facendo seguito alla nomenclatura adottata in questi ultimi anni.



Fra le principali novità, possiamo elencare:

  • il nuovo compilatore (Object Pascal e C++) 64 bit per iOS (supporto per le Apple Universal App)
  • Designer Previews (per FireMonkey, utilissimo per avere un colpo d'occhio su come la vostra applicazione multidevice si adatterà alle diverse forme/risoluzioni dei dispositivi target)
  • TMapView: un componente per includere nelle vostre applicazioni mobile le mappe (Google, iOS Map Kit) e manipolare facilmente markers su di esse
  • Estensione del supporto a controlli nativi (iOS-only)
  • Estensione del supporto per il componente WebBrowser anche sulle piattaforme desktop
  • Supporto per le ImageList in FireMonkey (desktop e mobile)
  • TBeacon: un componente (e un pezzo di RTL sottostante) per gestire facilmente i beacon (segnalatori di prossimità) nelle vostre app mobile
  • Box2D: una libreria (FMX e VCL) che vi mette a disposizione un modello fisico completo (forze, velocità, masse, collision detection, ...). Perfetta per giochi come AngryBirds ma anche per molte applicazioni business!
  • Nuova libreria HTTP client (FMX e VCL), multipiattaforma, permette di affidarsi alla libreria specifica offerta dal SO ospitante e dimenticarsi dei problemi di deploy per esempio delle librerie OpenSSL
  • TAppAnalytic: perfetto per profilare l'utilizzo delle vostre applicazioni (FMX e VCL)
  • Un nuovo driver FireDAC: Teradata (basato sul driver ODBC)
  • Sempre in FireDAC: migliorie al supporto per SQLite
  • Una menzione speciale per GetIt: un package manager integrato nell'IDE (funzionalità molto interessante e attesa)
Ci sono molte altre novità "minori", che saranno oggetto (insieme a queste "principali") di prossimi post su questo blog, tema dei prossimi corsi e seminari. 
Restate in ascolto ;-)

Nel frattempo qualche link di approfondimento:

Andrea


mercoledì 11 febbraio 2015

The Delphi Week 2015!

Forse avrete notato che in queste settimane non ho dedicato molto tempo al blog ma credo di avere un'ottima giustificazione: il 17 gennaio 2015 è nata mia figlia Federica ed è veramente difficile staccarsi da questo piccolo concentrato di tenerezza e gioia! :-)

Nel frattempo, Delphi si avvicina al suo ventesimo compleanno e per l'occasione Embarcadero ha organizzato la Delphi Week 2015!
Sui vari social network si sono viste immagini di "reperti storici" non banali:


e molto altro per esempio su Twitter #DelphiWeek


Da segnalare (fra le mille notizie interessanti di queste settimane):

Se usate o avete usato Delphi in questi venti anni (!) non potete mancare alle celebrazioni per questo anniversario, davvero speciale, in un momento in cui molti linguaggi/ambienti di programmazione non durano venti mesi! ;-)

A presto!

martedì 23 dicembre 2014

martedì 16 dicembre 2014

RAD Studio XE7 in action Live Bologna: foto, ringraziamenti e codice sorgente

Si è tenuto ieri a Bologna l'evento RAD Studio XE7 in action Live, un evento Embarcadero organizzato da BitTime Software in collaborazione con Wintech-Italia.

L'evento era volto a illustrare le novità introdotte nella VCL (quindi Windows, Desktop) con le ultime versioni di RAD Studio (Delphi e C++ Builder).
In particolare è stata dedicato ampio spazio:

  • a come dare un aspetto moderno alle applicazioni tramite l'uso degli stili VCL;
  • ai nuovi componenti TaskBar e JumpList che migliorano l'integrazione con Windows;
  • alle nuove feature del linguaggio e della RTL (metodi anonimi, generici, AppTethering, nuove estensioni sintattiche, type helpers, ecc);
  • alla nuova Parallel Programming Library;
  • a FireDAC, la libreria di accesso ai dati di RAD Studio inclusa nel prodotto con la versione XE3.
Ringraziandovi per la partecipazione, vi lasciamo qualche fotografia dell'evento:






Qui trovate l'album Google+ con altre fotografie:



Ringraziamo tutti i partecipanti (molto attivi!) e Fabrizio e Valentina di BitTime per l'organizzazione.

Vi ricordiamo che potete trovare il codice sorgente delle demo utilizzate al seguente indirizzo:


Grazie e a presto!

Andrea e Paolo

venerdì 5 dicembre 2014

RAD Studio XE7 in action live: workshop gratuito a Bologna!

Si terrà a Bologna, lunedì 15 dicembre 2014, il prossimo evento RAD Studio XE7 in action live: un workshop gratuito organizzato da bit Time Software e Wintech Italia, in collaborazione con Embarcadero.



L'evento è focalizzato sulle novità introdotte nelle ultime versioni di RAD Studio ed è in particolare rivolto agli sviluppatori di applicazioni VCL Desktop che desiderano ammodernare le proprie applicazioni sfruttando le nuove funzionalità offerte dall'ambiente di sviluppo.

Alcuni degli argomenti trattati: Novità del linguaggio e della RTL, Parallel Computing Library, Librerie REST e FireDAC.
Un pomeriggio denso di informazioni per chi vuole proiettare nel futuro le proprie applicazioni.

Le sessioni tecniche sono affidate a Wintech-Italia e saranno tenute da:
  - Andrea Magni, Embarcadero MVP
  - Paolo Rossi, Embarcadero MVP

Vi rimando alla pagina dell'evento per l'agenda dettagliata, il modulo di iscrizione e i dettagli sulla location:


Vi aspettiamo numerosi!

Andrea

lunedì 1 dicembre 2014

Workaround per l'errore EBitmapLoadingFailed su Android Lollipop

Introduzione

C'è un bug di Delphi XE7 per cui le applicazioni Android non si avviano su Lollipop (Android 5.0). In particolare, vanno in crash subito dopo aver visualizzato lo splashscreen, a causa dell'eccezione EBitmapLoadingFailed che viene sollevata durante il caricamento delle immagini contenute nel file .fmx .
Lo stessa applicazione (stesso APK) esegue senza problemi su versioni di Android precedenti alla 5.

Ci sono un paio di discussioni a riguardo, sui social-network: 

Viene spiegato anche un workaround (che io ho applicato alla versione beta di ColorMapp stamattina) che consiste nel caricare le risorse grafiche (TBitmap) a runtime invece che lasciarle embedded nelle risorse dell'applicazione (evitando così che vengano caricate attraverso una chiamata a TBitmap.LoadFromStream, che sembra essere il punto critico del malfunzionamento).

Passi per applicare il workaround:

1) Salvare su disco tutte le bitmap di ogni form

(comodo se avete già caricato le immagini a design time, meno utile se state scrivendo una applicazione da zero)

Per semplificare il processo, ho scritto un pezzetto di codice che itera sui componenti di una form e salva tutte le bitmap delle TImage che trova.
Potete guardare la funzione SaveAllImagesToDisk della unit ImageDumpUnit.pas, che trovate in un mio repository GitHub:


Per esempio, nell'evento OnCreate della form ho aggiunto:

  {$IFDEF MSWINDOWS}
  SaveAllImagesToDisk(Self);
  {$ELSE}
  LoadAllImagesFromDisk(Self);
 {$ENDIF}

Eseguendo l'applicazione sulla platform Win32, vi verrà generata una cartella images_dump con delle sottocartelle (una per ogni form) con le immagini salvate in files PNG.
Il ramo $ELSE della direttiva di compilazione viene eseguito per esempio su Android, così l'applicazione Win32 fa il dump e l'applicazione Android cerca di caricare dinamicamente le immagini dallo storage del dispositivo.

2) Rimuovere tutte le bitmap dalle risorse (.fmx)

Il modo più semplice (ma richiede di agire manualmente su ogni singolo componente delle vostre form con una bitmap) consiste nel:
  • svuotare tutte le voci delle MultiResBitmap (eliminando tutte le versioni delle bitmap);
  • svuotare le TBitmap (es. le proprietà StartValue / StopValue delle TBitmapAnimation), aprendo il component editor e premendo il tasto Clear;
Se avete molte TBitmap e svuotarle manualmente vi sembra improponibile, potreste agire direttamente sul DFM, cercando tutte le occorrenze di Bitmap.

3) Caricare a run-time le immagini corrispondenti

Anche in questo caso potete sfruttare la funzione LoadAllImagesFromDisk della unit ImageDumpUnit.pas, avendo cura di chiamarla per esempio nell'evento OnCreate delle vostre form.

4) Aggiungere al deploy tutti i file PNG generati al passo 1

Attraverso il deployment manager di Delphi, aggiungete i file PNG in modo che vengano distribuiti con la vostra applicazione. Abbiate cura di indicare come RemotePath, il valore  'assets/internal/images_dump/' seguito dal nome della form corrispondente.


5) controllate di non avere altre TBitmap

Per esempio mi sono accorto che il problema si presenta anche con le TBitmap (non solo le TMultiResBitmap) presenti in molti componenti (es. le TBitmapAnimation). Per queste io ho risolto manualmente (mimando il comportamento di LoadAllImagesFromDisk ) ma potrebbe aver senso automatizzare il dump e il load dinamico anche di quelle.

Conclusione

E' tutto, seguendo questi passi io ho risolto il crash della mia applicazione XE7 ColorMapp su Android 5.0 Lollipop e attualmente ho una beta funzionante sul mio Nexus 5.
Conto di promuovere la versione beta in produzione appena fatti i test su qualche altro dispositivo.

Buon lavoro e a presto,
Andrea