Pascal

Delphi openGL and 3ds files….

Thursday 23 July 2009, 16:11
ivan.revelli@synaptica.info

opengl.png

Ambiente di sviluppo : Microsoft Visual C++ , Delphi 7.0, GNU GCC

Come tutti ormai credo sappiano Borland include una libreria per la gestione dell’OpenGl che appunto si chiama OpenGl.pas che a sua volta mappa per windows buona parte dei metodi contenuti nella dll di sistema ‘opengl32.dll’. Questa libreria funziona molto bene, ed in passato la vecchia Borland aveva anche fatto il corrispondente .so per l’ormai defuntu Kylix.
Tutto ciò è molto carino ed esaltante, però a meno di volersi disegnare gli scenari da codice , una cosa sicuramente necessaria è la possibilità  di importare oggetti e scenari da un programma apposito. Quale programma se non il mitico 3d Studio ?
A questo punto ci si imbatte in una ricerca frenetica su internet incappando in diverse solozioni , tra cui una libreria interamente scritta in Delphi ed open source da un sito SULACO , a prima vista sembra funzioni tutto correttamente ma manipolando texture e punti luce affiorano dei piccoli problemi. Ovviamente è un buon lavoro che per chi è interessato permette di comprendere un po la struttura dei files 3ds e magari da una base per farne di conseguenza delle correzioni.
Provando e riprovando librerie si incappa nalla libreria “lib3ds” al sito www.lib3ds.org, questa libreria oltre ad essere molto veloce è anche semplicissima da utilizzare. A parte qualche prova iniziale ricompilandola come dll usando Microsoft Visual C++ ci è stato semplice utilizzarla con Delphi.

Su internet avevamo trovato già  dei sorgenti in C++ che permettevano di compilarne una dll facilmente utilizzabile, e la dll creata dal progetto si chiama lib3dsloader.dll , c’era però qualche problema nel richiamo delle procedure, perchè la definizione in C++ non era stdcall. Allora abbiamo apportato al sorgente questa piccola modifica :

1 – nel file lib3dsloader.h abbiamo definito il tipo di riferimento per l’esportazione dei metodi (LIB3DSLOADERAPI ) come __stdcall
2 – la funzione “ivan” dato un pathfile e un “filename” ritorna l’id “hadle” della memoria dove gli oggetti 3d studio sono caricati , i parametri da Delphi dovranno essere dei pChar che corrispondono in C a char *

nell’implementazione, cioè nel file lib3dsloader.cpp abbiamo modificato un po le definizioni in modo da renderle compliant, definendo il gruppo di funzioni esportate come “Extrnal C”

Download :
src libreria 3ds compreso di binario

Per usare questa libreria :

1) dovete copiare le due dll (lib3dsloader.dll e lib3ds-2_0.dll ) nella directory del progetto.
2) abbiamo creato una “unit” (libreria per i non delphini) che mappi i metodi della stessa (per il momento ci serve esclusivamente caricare gli oggetti 3dstudio), il codice della libreria per il richiamo :

ora creiamo un progetto… dove nel form main usiamo la unit dove abbiamo definito il map con la DLL

a questo punto avete caricato e state vedendo il vs modello 3DStudio all’interno del vostro form Delphi, ovviamente non ditemi quant’è veloce perchè ci son rimasto di stucco, viaggia alla stragrande anche dentro una virtual machine con le OpenGL in emulazione…. (da paura)

se avete bisogno di chiarimenti in merito lasciate pure un commento mi arriva la mail ….

a presto
ivan

Back from London …. Emabrcadero Workshop

Thursday 18 June 2009, 9:02
ivan.revelli@synaptica.info

bang

Questa settimana abbiamo fatto una visitina a Londra al fine di partecipare al “Embarcadero Technologies Developer Workshop”, dove era presente David Intersimone “Chief Evangelist of Embarcadero”.
A questa sessione erano presenti diversi membri della comunità  Delphi Inglese, che è una comunità  di sviluppatori molto attiva. Gli argomenti affrontati da David I.sono stati molti, cercherò di fare un piccolo riassunto :

  • La futura versione di Delphi a 64Bit per Windows “Weaver”
  • ProjectX o DelphiX la versione in lavorazione e non ancora visibile di Delphi cross-platform
  • Una panoramica dei DB Tools di Embarcadero
  • Alcune novità  su Delphi Prism e DotNet 4.0
  • Emabrcadero All-Access
  • Un po di planning futuro…
  • Mi aspettavo presentassero una roadmap nuova per i loro prodotti,, ma per il momento hanno detto cosa vogliono fare ma non ho visto delle date ufficiali di rilascio dei vari prodotti.

    La futura versione di Delphi a 64Bit per Windows “Weaver” dovrebbe vedere la luce i primi del 2010, elenco alcuni dei punti di forza di questa versione :

  • La novità  maggiore è che dopo 14anni hanno messo mano al compilatore… Weaver permetterà  la compilazione del codice a 64bit per i sistemi Windows quindi il tipo di compilazione probabilmente sarà  scelta al momento della compilazione, ovviamente il supporto a 32bit rimarrà  a pieno.
  • Ovviamente ci sarà  il pineo supporto delle novità  di Windows 7
  • Hanno annunciato il supporto ufficiale di Firebird
  • Il compilatore sarà  comune per Delphi e C++ Builder
  • Supporto completo per la applicazioni native a SOAP 1.2
  • ProjectX o DelphiX la versione in lavorazione e non ancora visibile di Delphi cross-platform, che comprenderà  ovviamente anche C++ Builder , è una novità  attesa credo da moltissimi sviluppatori Delphi. A mio avviso un passo importante e dovuto, a quanto affermato ufficialmente da Embarcadero molti dei loro grossi clienti in America si sono spostati al mondo Mac. La domanda che risultava ovvia era il paragone tra questa nuova versione e il caro buon vecchio Kylix, al che David ha affermato delle grosse differenze. ProjectX probabilmente avrà  un unico IDE Windows e al momento della compilazione verrà  richiesto per quale ambiente compilare, sarà  possibile il debug su macchine remote e già  stanno lavorando a DataSnap per questa versione. Ciò significa la completa interoperabilità  delle applicazioni tra ambiente diversi sia a livello di metodi che di scambio dati. Importante inoltre il fatto che la VCL sarà  comune e indipendente dalla piattaforma, nel senso che per il programmatore un bottone sarà  un TButton sia per le applicazioni Windows che per tutte le altre piattaforme.
    Speriamo che questa versione esca presto, non vedo l’ora di ricompilare i miei lavori per linux.

    Una panoramica dei DB Tools di Embarcadero che sono veramente dei tool per DB fantastici, la cosa che mi piace di più di questi tools è che con lo stesso strumento gestisci DB diversi , quindi significa conoscere uno strumento unico. Al di là  delle features incredibili di questi tools (l’optimizer fa paura, l’ho visto girare su una stored oracle ), il fatto di conoscere un unico strumento abbatte tantissimo i tempi di migrazione da un db all’altro.

    David and I

    Alcune novità  su Delphi Prism e DotNet 4.0 è un argomento che personalmente non mi interessa un granchè, per DotNet tendo ad utilizzare C# trovo che Prism abbia una sintassi troppo differente da quella di Delphi pur essendo Object Pascal. Cmq Prism è compliant con le ultimissime versioni di Dot Net ed è integrato nel’IDE di Visual Studio. La cosa che mi interessa di questo ambiente per il momento è DataSnap che permette un veloce e semplice protocollo cross per il trasporto dei dati tra DotNet e le applicazioni native, senza dimenticare l’invocazione remota dei metodi. Altra cosa che Prism aggiunge alle potenzialità  di Visual Studio è il fatto di produrre applicazioni per le diverse distribuzioni di DotNet per gli ambienti Mac e Linux.

    All Access

    Emabrcadero All-Access è stile msdn di Microsoft, è una piattaforma che da accesso a tutti i tools di sviluppo e gestione DB di Embarcadero, una cosa molto carina è che tutta la piattaforma può essere copiata in locale ed eventualmente trasferita su chiavetta usb. Alcune delle applicazioni (ovviamente Delphi 2009 no) possono essere eseguite senza installazione dalla chiavetta.
    Altra cosa comoda è che per tutte le applicazioni è sufficiente una chiave unica riducendo drasticamente gli sbattimenti di liceze chiavi e quant’altro.

    future

    Un po di planning futuro.., alla fine David ha mostrato delle slides dove erano elencati tutti gli obiettivi futuri di Embarcadero e dei tools di sviluppo, attualmente credo che abbiano già  abbastanza carne al fuoco … e soprattutto io ero sfinito.

    Lazarus 0.9.26.2-0 beta ..

    Thursday 18 June 2009, 8:33
    ivan.revelli@synaptica.info

    Lazarus

    The Lazarus project is a Delphi clone IDE based on the open source project “Free Pascal”, this project exists from several years. Under windows i use Delphi that is a really rocks , the advantage of Lazarus is that is OpenSource and work under a lot of O/S like Windows, MacOSX and Linux. The compiler of Lazarus is soo fast a the code produced is really good and fast.
    Last month was released the new version of Lazarus , and i am trying to use the 0.9.26.2-0 beta under Ubuntu Hardy, i found it really good and a lot of advanced between prev versions. In this period the lazarus comunity is on working a lot and there are a lot of new free components usable by Lazarus and Delphi. The compatibility between Delphi and Lazarus is good except for the components who not run on Lazarus.
    Here you can find the lastest snapshot of the project : http://snapshots.lazarus.shikami.org/lazarus/

    try it is cool
    by Ivan

    so funny…. from Delphi live

    Sunday 24 May 2009, 10:01
    ivan.revelli@synaptica.info

    Nick Hodges, R&D Manager Allen Bauer, Chief Scientist Embarcadero Technologies DelphiLive! 2009 May 2009 in San Jose RTTI Project “X” – Delphi application running on Mac OSX

    very funny video from delphi live, at the end of the video there is a JBuilder team developer that show a command line compiler of Delphi (incredible on a mac osx system) …. the speakers are so funny and show work maded some day before of the presentation. With a navigation class at one time compare a TKomponet class (only a cazy develor can do this…)

    have a good look
    bye
    ivan

    Create an invisible application with Delphi

    Wednesday 8 April 2009, 15:56
    ivan.revelli@synaptica.info

    [lang_it]

    produrre un applicazione non visibile con Delphi è un gioco da ragazzi.

    per nascondere il form principale dell’applicazione dovete semplicemente aggiungere la seguente riga al codice del vs. progetto :
    Application.ShowMainForm:=False;

    esempio concreto, modifico il “dpr” della mia applicazione:

    non finisce qui, voglio anche esser sicuro che non si veda sulla taskbar il bottone associato all’applicazione, per far ciò nell’evento onCreate del form principale aggiungo quanto segue, se sto usando Delphi 7.0 o versioni precedenti :

    (with Delphi 7.0)

    Con Delphi 2007 o maggiore, per nascondere il bottone sulla taskbar è necessario semplicemente settare la proprietà  dell’oggetto form “MainFormOnTaskbar” a false.

    e questo è tutto, ora l’applicazione gira, pre chiuderla ovviamente non vi resta che il taskmanager.

    [/lang_it]
    [lang_en]
    to produce an invisible application with Delphi is soo simple….

    to hide the main form at application start you need to add in your project source a this code :

    Application.ShowMainForm:=False;

    full piece of code:

    for hiding the taskbar button you need to add following code on the create event handler of you main form like :

    (with Delphi 7.0)

    with Delphi 2007 or greater, to hide task bar button you need to set the property “MainFormOnTaskbar” to false of your main form.

    thats all, now you can’t see the application on your DeskTop.

    [/lang_en]

    Evalutation on Delphi Prims

    Tuesday 10 March 2009, 17:55
    ivan.revelli@synaptica.info

    [Lang_it]

    installation….

    Prima prova sul campo del fatidico prism…
    Domani da un cliente ho un workshop per migrare l’architettura attuale basata su COM e socket verso i Web Service… e dato che loro sono in molti ad usare Delphi, quale migliore occasione? Per farsi un giro su questo nuovo promettente ambiente di sviluppo… noi programmatori siamo malati, ammettiamolo!!!

    Cominciamo, l’installazione sulla mia macchina virtuale con Visual Studio 2008 già  presente ci ha messo circa 15min….

    Leggiamo il file readme … :

    Questo già  mi fa pensare bene…

    start

    vediamo un po cosa succede ora se lancio il mitico prism…

    startup

    a questo punto parme VS2008 con tutti i miei progetti scritti in C# come se nulla fosse, allora proviamo in prima istanza a fare un semplice progetto nuovo di un banale WebService con Prism. (Non vedo l’ora di provarlo su un mio serve ubuntu… smania 1 smania 2 smania a mille)

    newprj

    non trovo il template però dei WebServices… quindi creo la mia bella applicazione ASP.Net e successivamente cerco di aggiungere un elemento con il widzard e mi compare :

    wselement

    paura !!!!!! guardate un po cosa mi combina l’IDE :

    ws_delphi

    premo play e tutto si avvia tranquillamente come se lo avessi fatto con C#, avverto solo la differenza che il webserver di debug ha una porta diversa da quella di default di Visual Studio….
    Bene procedo, ora provo a definire una di ritorno :

    beh domani se mi avanza tempo dal Workshop sistemo sto casino di articolo ….
    sorry

    [Lang_en]
    installation….

    Scoprite cosa possiamo fare per il vostro business
    I nostri linguaggi