Tag Archive for 'delphi'

Soft News - UBUNTU 8.10 e Lazarus .26

ubuntu

Mese di Ottobre eccezionale,
non ho memoria di un mese tanto attivo sul piano software internazionale, incredibile, le principali case software hanno fatto talmente tanti annunci di novita, da stravolgere il mondo prima del 2009.
In effetti tutto ciò è contestuale al PDC di Los Angeles, ma c’è stato anche l’anno scorso e non ci son stati altrettanti annunci.
In breve, cos’è successo sto mese :

  • Microsoft ha annuncitato la nuova versione “Windows 7″
  • UBUNTU (miglior distribuzione DeskTop Linux) si è migliorata parecchio vedi “http://wiki.ubuntu-it.org/IntrepidNoteDiRilascio”.
  • Phyton ha ufficializzato la sua ver. 3.0
  • Embarcadero ha annunciato Delphi/C++ 2009 , inoltre collabora con remObjects sul progetto annunciato “Prism”
  • E’ uscita la nuova versione di Lazarus (in breve Delphi Open Source e multi piattaforma)
  • sempre Microsoft sta confezionando il suo F#
  • Apple ha annunciato la sua nuova linea di MacBook
  • Android di Google è stato reso finalmente Open Source
  • a me pare incredibile, se fino a oggi l’informatica avanzava del 100% oggi siamo quasi a livello di caos… c’è gente come me che non ha mai visto realmente Windows Vista e ne sta uscendo un altro. Incredibile!!!
    Magari mi son dimenticato anche qualcosa, chissà … Dimenticavo c’è stato anche l’hackIT a palermo….

    a presto

    PRISM

    PRISM_FIRST_LOGO


    This week there is a lot news about IT world, in first the new MS Windows 7 , another good news is the Embarcaer Delphi “PRISM”.

    Delphi “PRISM”, is the DotNet environment of Embarcadero Delphi , this new version of Delphi is not a descendant of Delphi for DotNet, in fact it is the real implementation of Oxygene project maked by RemObject.

    Highlights : cross-platform application generation, with full support for project MONO (linux), COCCOA (mac osx ) and the DotNet Framework 3.5. This Delphi version is a plug-in for Visual Studio, i hope that they continued to use the standard IDE of Delphi.
    Now we attend the new Rad Studio from Embarcadero/CodeGear.

    Here you can find a good screen cast

    now is a news for us….
    stay tuned…

    Tiburon -> Delphi 2009

    Da qualche giorno è ormai disponibile la nuova versione di Delphi e C++ con enormi novità tecnologiche rispetto alle precedenti. Questa nuova versione codename “Tiburon” migliora drasticamente le performance dell’IDE e del compilatore/parser,tra le novità più ecclatanti vi sono :

  • Supporto ai generics (Tlist)
  • Completo supporto a Unicode
  • DataSnap completamente nuovo basato sullo std JSON per la comunicazione.
  • Attualmente alla lista delle cose che mi attendevo ne manca una non di poca importanza cioè Delphi2009 for DotNet , che sul sito di Embacadero non trovo nemmeno nella RoadMap… Ogni volta che vedo delle cose del genere mi torna in mente lo spettro di Kylix e delle aziende che vi ci avevano investito sopra!!.
    Cosa molto carina invece è la possibilità di provare (cacchio solo per 14gg) le versioni trial del prodotto Enterprise scaricandole direttamente da Embarcadero all’indirizzo :

    http://cc.codegear.com/free/delphi oppure http://cc.codegear.com/free/cppbuilder
    la procedura di intallazione e richiesta dei codici questa volta è veramente smart e come dicono dalle mie parti veramente “sbattimento zero!”.

    Domani a Milano vi sarà la presentazione di questi nuovi bei prodotti e ovviamente Synaptica andrà a far visita e porterà con sè qualche news …

    delphi drag & drop from shell (IDropTarget interface)

    Per permettere a un applicazione in windows di accatere drag end drop bisogna obbligatoriamente pasare per la tecnologia com e astrarre l’interfaccia IDROP_TARGET. Questa procedura seppur non complicata descritta molto bene nei suoi aspetti per le applicazioni delphi dall’articolo riportato : http://pasotech.altervista.org/delphi/articolo87.htm permette di fare cose notevoli. Sicuramente la procedura seppur non difficile comporta qualche conoscenza specifica ed inserisce non poco codice all’interno della nostra applicazione, per comodità esiste un componente semplicisimo dei JEDI il TjvDropTarget che ci permette di fare esattemente la stessa cosa con uno sforzo estremamente ridotto. Basta implementare il metodo DRAGDROP del componente ad esempio :

    1.  
    2. procedure TForm1.JvDropTarget1DragDrop(Sender: TJvDropTarget;var Effect: TJvDropEffect; Shift: TShiftState; X, Y: Integer);
    3. Var
    4. List : TStringList;
    5. i : integer;
    6. begin
    7. List := TStringList.Create;
    8. try
    9.   JvDropTarget1.GetFilenames(List);
    10.   for i := 0 to List.Count - 1 do
    11.     memoDin.Text := List.Text;
    12. // DoOpenFile(List[i]);
    13. finally
    14.   List.Free;
    15. end;
    16.  

    a presto ivan

    Associate your program with file extension

    article source : http://www.delphi3000.com/articles/article_525.asp?SK=
    author : Igor Siticov

    For creating file associations you should make some registry changes and inform Windows explorer about your changes.

    For launching your program as default for all unregistered file types just associate it for “*” file type.

    The following unit includes realization of function for creating file association.
    See comments in source for details.

    1.  
    2. unit utils;
    3.  
    4. interface
    5. uses Registry, ShlObj, SysUtils, Windows;
    6.  
    7. procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription, ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);
    8.  
    9. implementation
    10.  
    11. procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription, ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);
    12. var
    13.    Reg: TRegistry;
    14. begin
    15.   Reg := TRegistry.Create;
    16.   try
    17.     Reg.RootKey := HKEY_CLASSES_ROOT;
    18.     Reg.OpenKey(cMyExt, True);
    19.     // Write my file type to it.
    20.     // This adds HKEY_CLASSES_ROOT\.abc\(Default) = ‘Project1.FileType’
    21.     Reg.WriteString(, cMyFileType);
    22.     Reg.CloseKey;
    23.     // Now create an association for that file type
    24.     Reg.OpenKey(cMyFileType, True);
    25.     // This adds HKEY_CLASSES_ROOT\Project1.FileType\(Default)
    26.     //   = ‘Project1 File’
    27.     // This is what you see in the file type description for
    28.     // the a file’s properties.
    29.     Reg.WriteString(, cMyDescription);
    30.     Reg.CloseKey;    // Now write the default icon for my file type
    31.     // This adds HKEY_CLASSES_ROOT\Project1.FileType\DefaultIcon
    32.     //  \(Default) = ‘Application Dir\Project1.exe,0′
    33.     Reg.OpenKey(cMyFileType + ‘\DefaultIcon’, True);
    34.     Reg.WriteString(, ExeName + ‘,’ + IntToStr(IcoIndex));
    35.     Reg.CloseKey;
    36.     // Now write the open action in explorer
    37.     Reg.OpenKey(cMyFileType + ‘\Shell\Open’, True);
    38.     Reg.WriteString(, ‘&Open’);
    39.     Reg.CloseKey;
    40.     // Write what application to open it with
    41.     // This adds HKEY_CLASSES_ROOT\Project1.FileType\Shell\Open\Command
    42.     //  (Default) = ‘"Application Dir\Project1.exe" "%1"’
    43.     // Your application must scan the command line parameters
    44.     // to see what file was passed to it.
    45.     Reg.OpenKey(cMyFileType + ‘\Shell\Open\Command’, True);
    46.     Reg.WriteString(, ‘"’ + ExeName + ‘" "%1"’);
    47.     Reg.CloseKey;
    48.     // Finally, we want the Windows Explorer to realize we added
    49.     // our file type by using the SHChangeNotify API.
    50.     if DoUpdate then SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
    51.   finally
    52.     Reg.Free;
    53.   end;
    54. end;
    55.  
    56. end.
    57.  

    C++ & Delphi (obj & dll)

    Sicuramente lo sapevate già, ma Delphi vi da la possibilità di inglobare nel vostro eseguibile codice C++ in modi diversi.
    Questo nonostante la vastità di componenti VCL oggi disponibili è sicuramente un fattore a grande vantaggio dell’ambiente , considerando la vastità di codice scritto in C/c++ per i diversi sistemi.

    Un modo abbastnaza interessante e a basso livello, è quello di includere i file “.obj” all’interno della vs applicazione.
    I file obj li tratterete esattamente come dll ma per includerli nelle vostre classi è necessaria la direttiva al compilatore LINK strutturata come segue:
    {$LINK “obj_filename”}

    ex :

    1.  
    2. unit Unit1;
    3.  
    4. interface
    5.  
    6. uses
    7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    8.   Dialogs;
    9.  
    10. type
    11.   TForm1 = class(TForm)
    12.   private
    13.     { Private declarations }
    14.   public
    15.     { Public declarations }
    16.   end;
    17.  
    18. var
    19.   Form1: TForm1;
    20.  
    21. implementation
    22.  
    23. {$LINK mio_obj.obj}
    24.  
    25. {$R *.dfm}
    26.  
    27. end.
    28.  
    29.  

    un articolo interessante e ben struttarato sull’argomento, che merita sicuramente di essere letto se non si conosce esattamente la tecnologia : http://rvelthuis.de/articles/articles-cppobjs.html

    come al solito i miei articoli sono un po stringati, per ulteriori informazioni o approfondimenti scrivete a info@synaptica.info…..

    a presto
    ivan

    Delphi for DotNet - WebForm per fare l’upload di un file

    COME CREARE UNA PAGINA PER ESEGUIRE GLI UPLOAD CON ASP.NET IN DELPHI PER .NET

    A differenza del caro e buon veccio Asp in cui creare una pagina di upload era simile ad un parto, nel nuovo ambiente .Net di Microsoft la cosa è resa molto più semplice grazie all’introduione della classe : System.Web.UI.HtmlControls.HtmlInputFile.

    In questo esempio viene creata una pagina ASP.Net da inserire nel vs. progetto per poter permettere agli utenti di eseguire un upload di un file.

    Come ben sapete una pagina ASP.Net in delphi 8.0 costituita dal relativo file .aspx e dal code behind contenuto nella dll del progetto. Il “code behind” viene generato in funzione del file della pagina .pas (scritto nel classico object pascal).

    Analizziamo cosa dobbiamo inserire nel file .aspx nel nostro caso la pagina l’ho chiamata wf_upload_file.aspx che contiene il codice :

    1.  
    2. <%@ Page language="c#" Debug="true" Codebehind="wf_upload_file.pas" AutoEventWireup="false" Inherits="wf_upload_file.Twf_upload_file" %>
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    4.  
    5. <html>
    6.   <head>
    7.     <title></title>
    8.     <meta name="GENERATOR" content="Borland Package Library 7.1">
    9.   </head>
    10.  
    11.   <body ms_positioning="GridLayout">
    12.   <form id=Form1 method=post enctype="multipart/form-data" runat="server">
    13.     <input id=MyFile type=file runat="server"><br>
    14.     <input type=submit value="Invia query">
    15.     <asp:textbox id=TextBox1
    16.                  style="Z-INDEX: 1; LEFT: 14px; POSITION: absolute; TOP: 86px"
    17.                  runat="server" height="93" width="691px" textmode="MultiLine">
    18.     </asp:textbox>
    19.     <asp:image id=Image1
    20.                style="Z-INDEX: 2; LEFT: 118px; POSITION: absolute; TOP: 214px"
    21.                runat="server" height="211px" width="243px">
    22.     </asp:image>
    23.   </form>
    24. </body>
    25. </html>
    26.  

    La riga di ns interesse è :

    1. "<input id=MyFile type=file runat="server">"

    dove l’interprete .Net crea un oggetto il cui nome è “MyFile” questo oggetto fa parte della classe : System.Web.UI.HtmlControls.HtmlInputFile.

    La parte di “code behind” il file wf_upload_file.pas :

    1.  
    2. unit wf_upload_file;
    3.  
    4. interface
    5.  
    6. uses
    7.   System.Collections, System.ComponentModel,
    8.   System.Data, System.Drawing, System.Web, System.Web.SessionState,
    9.   System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls;
    10.  
    11. type
    12.   Twf_upload_file = class(System.Web.UI.Page)
    13.   {$REGION ‘Designer Managed Code’}
    14.   strict private
    15.     procedure InitializeComponent;
    16.   {$ENDREGION}
    17.   strict private
    18.     procedure Page_Load(sender: System.Object; e: System.EventArgs);
    19.   strict protected
    20.     TextBox1: System.Web.UI.WebControls.TextBox;
    21.     MyFile : System.Web.UI.HtmlControls.HtmlInputFile;
    22.     Image1: System.Web.UI.WebControls.Image;
    23.     procedure OnInit(e: EventArgs); override;
    24.   private
    25.  
    26.   public
    27.     { Public Declarations }
    28.   end;
    29.  
    30. implementation
    31.  
    32. uses borland.vcl.sysutils;
    33.  
    34. {$REGION ‘Designer Managed Code’}
    35. /// <summary>
    36. /// Required method for Designer support — do not modify
    37. /// the contents of this method with the code editor.
    38. /// </summary>
    39. procedure Twf_upload_file.InitializeComponent;
    40. begin
    41.   Include(Self.Load, Self.Page_Load);
    42. end;
    43. {$ENDREGION}
    44.  
    45. procedure Twf_upload_file.Page_Load(sender: System.Object; e: System.EventArgs);
    46. begin
    47.   // TODO: Put user code to initialize the page here
    48.  
    49.   If filMyFile.PostedFile <> nil then
    50.    Begin
    51.      TextBox1.Text := ‘ non nullo ‘;
    52.      TextBox1.Text := TextBox1.Text + MyFile.PostedFile.FileName + #10#13;
    53.      TextBox1.Text := TextBox1.Text + ‘dimensione : ‘ + Int64(filMyFile.PostedFile.ContentLength).ToString + #10#13;
    54.  
    55.      filMyFile.PostedFile.SaveAs(‘C:\Inetpub\wwwroot\mio_progetto\up_img\’ + ExtractFileName(filMyFile.PostedFile.FileName));
    56.      Image1.ImageUrl := ‘up_img/’ + ExtractFileName(MyFile.PostedFile.FileName);
    57.  
    58.    End
    59.   Else
    60.    Begin
    61.    End;
    62.  
    63.  
    64. end;
    65.  
    66. procedure Twf_upload_file.OnInit(e: EventArgs);
    67. begin
    68.   //
    69.   // Required for Designer support
    70.   //
    71.   InitializeComponent;
    72.   inherited OnInit(e);
    73. end;
    74.  
    75. end.
    76.  

    Da notare l’obbligatorietà della dichiarazione dell’oggetto MyFile all’interno della classe che definisce la pagina, che non avviene in automatico, anche se dovrebbe delphi 8.0 riconoscere tutti gli oggetti definiti nella pagina .aspx e mantenerne l’allineamento con il .pas. Nell’evento Page_Load viene implementato il codice per salvare il file inviato dall’utente in una posizione del disco.

    Ho aggiunto l’uso della libreria uses borland.vcl.sysutils; s per poter accedere alla funzione ExtractFileName della vcl semplicemente perchè non conosco la funzione che esegue le stesse cose nel .Net framework.

    Spero che l’articolo sia comprensibile, l’ho effettivamente scritto un po di fretta.

    Ciao a tutti

    Ivan ….

    Delphi for pHp v2.0

    Rilascio ufficiale di Delphi for pHp

    Da CodeGear è stata rilasciata la nuova versione di Delphi4php … interessanti le features sulla carta, cosa che spicca è l’integrazione dello Zend Framework con la VCL per php.
    Personalmente non ho ancora provato il prodotto, ma da quello che si evince dalla documentazione ufficiale, non dovrebbe esser male.

    il link delle nuove implementazioni : http://www.qadram.com/vcl4php/docwiki/index.php/What_is_new_in_Delphi_for_PHP_2.0 Leggi il resto dell’articolo ‘Delphi for pHp v2.0′

    Cool Stuff [Flussi informatici liberi]

    Dal portale di lazarus ho trovato un sito scritto in italiano , molto bello e ben articolato, con poche cose ma precise e interessanti. Anche il nome del sito mi piace molto : flussi informatici liberi .
    In questo sito si parla di sviluppi open source e di programmazione per i sistemi plc, il tutto basato su piattaforme open ,comprese le librerie di interfacciamento con i Siemens S5 e S7 via seriale per più sistemi operativi.

    molto interessante e gradevole
    dateci un okkio

    a presto
    i

    Il gestionale synapse gira sotto Linux

    Synapse , ERP by Synaptica


    Grazie a wine, il nostro gestionale (Synapse) sviluppato con tecnologia win32 funziona perfettamente anche sulla piattaforma Linux.
    Attualmente il gestionale è ancora una beta, e si pensa passerà in alfa entro la fine del prossimo mese, grazie alle tecnologie utilizzate garantisce un estrema flessibilità, e una notevole riduzione di costi dovuto al fatto di non dover acquistare licenze addizionali per il suo funzionamento.

    Tecnologie utilizzate :

    Lato Server :
    - DB : Firebird 1.5 in versione superserver / embedded
    - Servizi : Cross JAVA

    Lato Client :
    - Piattaforma w32 sviluppata in Delphi 7.0
    - Piattaforma Web sviluppata con pHp , possibili porting per ASP.Net e JSF

    a presto