* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 18, 2024, 03:31:30 am

Inserisci il nome utente, la password e la durata della sessione.

181 Visitatori, 0 Utenti

Autore Topic: Split Unit  (Letto 3434 volte)

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Split Unit
« il: Febbraio 17, 2020, 02:06:14 pm »
Salve a tutti.

Avrei bisogno di sapere se esistesse un modo per separare una “Unit” in almeno due file diversi; in pratica avrei bisogno di replicare un metodo analogo a quello utilizzato in c# con le “partial class”.
Se non fosse possibile potrei cercare di implementare un piccolo merging tools, ma questa soluzione non sarebbe certo molto comoda.

Saluti,
Otto.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:Split Unit
« Risposta #1 il: Febbraio 17, 2020, 04:02:17 pm »
non so se mi sono perso qualcosa ma con free pascal mi pare proprio che non si possa fare

quando mi si è presentata la necessità di fare qualcosa del genere ho usato la direttiva $I ($INCLUDE)
non so se è applicabile a quello che devi fare tu

in alternativa puoi splittare la classe i più classi che hanno compiti diversi per poi "iniettare" le sottoclassi in qualche property di quella principale
Imagination is more important than knowledge (A.Einstein)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #2 il: Febbraio 17, 2020, 04:16:08 pm »
Ciao Otto.

Cosa sono le partial class?

Lo chiedo perché forse mi è venuta un'idea.


Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:Split Unit
« Risposta #3 il: Febbraio 17, 2020, 04:36:10 pm »
Imagination is more important than knowledge (A.Einstein)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #4 il: Febbraio 17, 2020, 04:38:23 pm »
Ni.
Forse assomigliano alle classi helper :)
Lo so è una soluzione "malvagia dentro", ma forse è da indagare in questa direzione ;)
Volevo solo una conferma.
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Re:Split Unit
« Risposta #5 il: Febbraio 17, 2020, 06:48:37 pm »
non so se mi sono perso qualcosa ma con free pascal mi pare proprio che non si possa fare

quando mi si è presentata la necessità di fare qualcosa del genere ho usato la direttiva $I ($INCLUDE)
non so se è applicabile a quello che devi fare tu

in alternativa puoi splittare la classe i più classi che hanno compiti diversi per poi "iniettare" le sottoclassi in qualche property di quella principale

Grazie nomorelogic, ho controllato la guida https://wiki.lazarus.freepascal.org/$include e credo che la tua soluzione ($INCLUDE) possa andare bene.
Anche l’alternativa da te proposta sembra interessante, solo che avrei bisogno di un piccolo esempio per velocizzare l’implementazione.

Saluti,
Otto.

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Re:Split Unit
« Risposta #6 il: Febbraio 17, 2020, 07:00:53 pm »
Ni.
Forse assomigliano alle classi helper :)
Lo so è una soluzione "malvagia dentro", ma forse è da indagare in questa direzione ;)
Volevo solo una conferma.
Stilgar

Grazie Stilgar, potresti avere ragione.
Sapresti indirizzarmi su qualche buon esempio di un corretto utilizzo delle helper class?

Saluti,
Otto.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #7 il: Febbraio 17, 2020, 07:17:31 pm »
https://github.com/paxtibi/lazarus-batis-utility/blob/master/src/lzbatis.dom.aspects.pas

Qui ho simulato il comportamento di jquery sul dom fp.

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Re:Split Unit
« Risposta #8 il: Febbraio 18, 2020, 08:30:09 am »
Grazie Stilgar, il tuo progetto è molto interessante. Lo studierò attentamente: mi sarà certamente utile in futuro.

Saluti,
Otto.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #9 il: Febbraio 18, 2020, 09:05:35 am »
Ciao Otto.

Ne sto progettando uno più compatibile con mybatis.
Manca di le annotation/atttribute in freepascal devo riadattare la logica interna
Ma l'obiettivo è sempre generare delle classi pronte all'uso.
Devo produrre altri package di supporto  per la gestione dei null/nil.

Intanto buon studio

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Re:Split Unit
« Risposta #10 il: Febbraio 18, 2020, 11:55:00 am »
Molto bene Stilgar, tienici informati sullo sviluppo del nuovo progetto.

Per quanto riguarda le “Class helpers” ho letto la discussione:
https://forum.lazarus.freepascal.org/index.php/topic,45253.0.html
che mi ha fatto propendere a pensare che le “Class helpers” del FPC siano sovrapponibili solo in alcuni aspetti con le “partial class” del c#.
Sembrerebbero utilissime qualora si volesse aggiungere del codice a delle classi alle quali non si avesse, o non si volesse avere, accesso diretto.
The purpose of helpers is to be able to add code to classes that you don't have direct access to.
Per le mie modeste conoscenze le “Class helpers” del FPC sembrerebbero più vicine alle “Extension Method” del C# (https://www.dotnetperls.com/extension) senza però essere equivalenti.
In questo articolo https://delphisorcery.blogspot.com/2013/04/why-no-extension-methods-in-delphi.html vengono messe in luce alcune differenze.

Saluti,
Otto.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #11 il: Febbraio 18, 2020, 01:37:12 pm »
:)
Mi sfugge la tua necessità di usare le classi parziali.
Non mi è chiaro il concetto evidentemente di classi parziali.
:)
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Otto

  • Jr. Member
  • **
  • Post: 58
  • Karma: +0/-0
Re:Split Unit
« Risposta #12 il: Febbraio 18, 2020, 02:45:20 pm »
La possibilità di utilizzare le “classi parziali” mi permetterebbe la semplificazione del processo di conversione di progetti già realizzati in Lazarus in modo tale che molti dei controlli vengano creati in fase di run time. Quando i progetti sono pochi e relativamente semplici non è certo un problema effettuare tale conversione, ma quando i progetti sono molti e con interfacce complesse il tempo necessario potrebbe essere considerevole.
Per velocizzare il processo ho utilizzato uno strumento in grado di convertire  i “Lazarus Form file” (*.lfm)  in codice sorgente pascal (*.pas)
 lazarus/examples/pascalstream/CopyAsPasPkg/copyformaspascaldemopkg.lpk.
Tale tools mi è stato suggerito da wp nella discussione: https://forum.lazarus.freepascal.org/index.php/topic,48160.0.html
- Il tools copyformaspascaldemopkg da buoni risultati purché i controlli non contengano immagini, altrimenti queste avrebbero una rappresentazione incompatibile con la sintassi Pascal. Credo che per risolvere il problema si possa adoperare un riferimento ai dati delle immagini, magari salvandoli all’interno di un file di risorse. Immagino che, in qualche modo, sia possibile adattare i dati immagine provenienti dal RAD in un formato compatibile ai file di risorse -.

Utilizzando le “classi parziali” potrei salvare i dati prodotti dal tools direttamente in un nuovo file (chiamandolo ad esempio Unit1_lfm.pas), in questo modo avrei il file della Unit del form (chiamata Unit1.pas) sostanzialmente invariato ed il nuovo file relazionato con tale Unit che andrebbe a sostituire il file “Lazarus Form file”. Questo processo potrebbe essere reso automatico.

Spero di non essere stato troppo confusionario.
Otto.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #13 il: Febbraio 18, 2020, 02:52:16 pm »
In soldoni stai cercando di pare un porting del codice.

Fare un parser che legga i file cs e li converta in pascalese?

La butto lì.



Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Split Unit
« Risposta #14 il: Febbraio 18, 2020, 03:01:21 pm »
Leggendo il 3d in inglese ho capito che è lazarus su Lazarus che stai cercando di "convertire".
Corretto?
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 219
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 181
Total: 181

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.