Uses RpDefine

di il
12 risposte

Uses RpDefine

Ciao a tutti,

Preciso che non sono molto ferrato in delphi; ho un vecchio progetto del 2014 circa, fatto con non so che versione di delphi purtroppo, che per necessità devo riprendere.

Ho installato la delphi 11 community edition e caricato il progetto.

Al momento del Run mi da errori su alcune unit che sono riuscito a sistemare tranne per le unit RpCon, RpConDS, RpDefine, RpRave,
 RpBase, RpRender, RpRenderCanvas, RpRenderPreview. L'errore è “could not compile use unit…..”

Come devo risolvere il problema?

Grazie

12 Risposte

  • Re: Uses RpDefine

    https://en.delphipraxis.net/topic/8924-looking-for-rpshell-rptable-rpdefine-rpbase-rpsystem/

    Uguale uguale

  • Re: Uses RpDefine

    Puoi sostituire rave report o comprarlo.

    Nell'augurio che non sia cambiato nulla rispetto alla versione delphi7

  • Re: Uses RpDefine

    Comunque sul libro incluso su delphi1 c'era scritto che una buona partenza nella scrittura del codice avrebbe reso più facile la manutenzione.

    La prossima volta usa un form dedicato alla stampa.

    Male che vada devi solo ricreare una unit con lo stesso nome, passi gli stessi parametri e se delphi cambia da reoort smith, a fast report, passando per rave report e fuzzy report, o al futuro xy report non avrai molti problemi.

  • Re: Uses RpDefine

    26/10/2023 - robrob ha scritto:


    Preciso che non sono molto ferrato in delphi; ho un vecchio progetto del 2014 circa, fatto con non so che versione di delphi purtroppo, che per necessità devo riprendere.

    Puoi determinare la versione del progetto all'interno del file con estensione .dproj.

    26/10/2023 - robrob ha scritto:


    Ho installato la delphi 11 community edition e caricato il progetto.

    Attenzione che la Community Edition non contiene tutti i componenti di terze parti delle versioni Professional e superiore.
    Oltre a questo, un uso commerciale richiede una licenza.

    Se vuoi fare una prova di migrazione, dovresti scaricare invece la versione Trial.

    26/10/2023 - robrob ha scritto:


    Al momento del Run mi da errori su alcune unit che sono riuscito a sistemare tranne per le unit RpCon, RpConDS, RpDefine, RpRave,
     RpBase, RpRender, RpRenderCanvas, RpRenderPreview. L'errore è “could not compile use unit…..”

    Come devo risolvere il problema?

    Sono le unit di RAVE Reports, un tool di reportistica.

    Per risolvere, devi reperire questi componenti, ma sono commerciali a oggi.
    Inoltre, è possibile che vi siano altre dipendenze che dovresti reperire.

    26/10/2023 - sihsandrea ha scritto:


    Comunque sul libro incluso su delphi1 c'era scritto che una buona partenza nella scrittura del codice avrebbe reso più facile la manutenzione.

    Sebbene questo principio è senz'altro vero, qui si applica poco, in quanto la problematica non è quella di aver scritto codice che impedisce di sostituire una dipendenza, ma di aver realizzato uno o più report (non ci è dato saperlo) con un tool che non è attualmente disponibile e va reperito, e rendersi indipendenti da questo a prescindere dal tool di reportistica o sostituirlo integralmente con un altro significherebbe riscrivere totalmente tutti questi report, e ciò comporta un effort che comparato a quello per una scrittura del codice “aperta” rende quest'ultimo risibile.

    In due parole, pur applicando il suddetto principio, non c'è modo di sostituire “a cuor leggero” un tool di reportistica con un altro, poiché sono tutti simili ma legati a implementazioni totalmente diverse, e l'unica cosa che puoi fattorizzare è il “generami il report”, che è una banalità a confronto del resto.

  • Re: Uses RpDefine

    Mettendo l'accesso ai dati del report su un datamodule

    Il programma deve funzionare a prescindere dalle stampe.

    Se gestisci la stampa da un modulo e un form dedicati anche modificare le stampe diventa facile. Soprattutto non tocchi il funzionamento del programma.

  • Re: Uses RpDefine

    26/10/2023 - sihsandrea ha scritto:


    Mettendo l'accesso ai dati del report su un datamodule

    L'accesso ai dati serve per fornire i dati al report, ma qui il problema è un altro: il report.

    26/10/2023 - sihsandrea ha scritto:


    Il programma deve funzionare a prescindere dalle stampe.

    Se il compito del programma è stampare, non può funzionare prescindendo da queste.

    26/10/2023 - sihsandrea ha scritto:


    Se gestisci la stampa da un modulo e un form dedicati anche modificare le stampe diventa facile.

    Di nuovo, qui la problematica non è gestire l'iniezione del tool di reportistica come dipendenza, ma il fatto che il programma probabilmente stampa dei report, e per farlo usa RAVE Reports: in qualunque modo tu abbia separato la logica del tuo programma principale da quella che genera i report, se l'autore della discussione non trova i componenti, non può stampare, e ricreare i report con un tool differente a seconda della complessità può essere un compito abbastanza gravoso, perché ogni reporting tool ragiona a suo modo, ma nel caso sia una passeggiata farlo, lo sarebbe comunque a prescindere dall'architettura, ma se le stampe sono complesse, se sono una feature indispensabile (non penso le abbia messe per sport), allora vanno riscritte con un altro tool sostitutivo (se non si intende far uso di RAVE Reports) e in quel caso la riscrittura è il compito più gravoso di tutti, di portata ben più rilevante di quella architetturale.

    In definitiva, non esiste una architettura così ben congeniata da farti passare da un tool di reportistica a un altro in modo indolore, ed è quello il problema, non dove ha posizionato i componenti.

    Se anche avesse messo giù i componenti come si deve, seguendo tutti i crismi, se non trova RAVE Reports il programma non compila, o se compila non può stampare, e se è necessario ricreare le stampe con un altro tool, sono dolori (oppure ore di lavoro).

    In tutte queste alternative possibili, l'architettura o la suddivisione dei componenti centra lo 0,01% rispetto al resto.

  • Re: Uses RpDefine

    Grazie intanto ad entrambi mi siete stati di grande aiuto!

  • Re: Uses RpDefine

    Alka, ho parecchia stima di te.

    26/10/2023 - Alka ha scritto:


    Puoi determinare la versione del progetto all'interno del file con estensione .dproj.

    Se trovi come estensione .dpr è ante embarcadero (borland) ossia delphi 7 al massimo.

    27/10/2023 - Alka ha scritto:


    L'accesso ai dati serve per fornire i dati al report, ma qui il problema è un altro: il report

    L'accesso ai dati lo fai sempre con il datasouce ma ogni gestione reoort ha la sua dataset che pasa i dati al report.

    27/10/2023 - Alka ha scritto:


    Se il compito del programma è stampare, non può funzionare prescindendo da queste.

    Mi sono espresso male. Se inserisco i vari componenti vcl del report su ogni form la unit del form si blocca.

    Se uso un form dedicato posso richiamare un form privo dei vcl report senza che il programma ne risenta: al massimo non stampa.

    27/10/2023 - Alka ha scritto:


    In definitiva, non esiste una architettura così ben congeniata da farti passare da un tool di reportistica a un altro in modo indolore, ed è quello il problema, non dove ha posizionato i componenti.

    Se i componenti sono sparsi nelle unit il lavoro è pesante.

    Se hai una unit dedicata cambi le uses del rave con le uses del nuovo report.

    Poiché sia rave che il nuovo si agganciano ai datasource che usa per le ttable o fdtable (nel caso di firedac), basta sostituire l'oggetto sourcetable (o come si chiama) che passano i dati alla pagina del report, nonché la pagina stessa del report.

    Essendo tutti su un modulo, non devi aprire ogni singola form per sostituire i vari componenti.

    Devi avere l'accortezza di chiamare il form per le stampe (tipo frmstampe) che passando i parametri abilita la stampa di un ordine piuttosto che di una lista fornitori) un form di opzione di stampa che lancia la preview o la stampa diretta.

    Utile nel caso in cui si vuole cambiare il tipo di report.

    In un altro 3D si parlava di migrazione indolore e, per esperienza, non per teoria, come dissi in quell'occasione, il passaggio non è mai indolore (usai l'esempio di ttable con tabelle paradox e firedac, ma l'esempio della gestione stampe è più evidente), programmare usando i datamodule aiuta a riscrivere l'accesso ai dati senza alterare troppo il programma.

    Ho lavorato per la conversione da tado a zeos per la conversione a mysql e con il datamodule i ¾ di conversione sono facilitati, rispettando nomi e tabelle.

    Pratica non teoria.

  • Re: Uses RpDefine

    27/10/2023 - sihsandrea ha scritto:


    Se trovi come estensione .dpr è ante embarcadero (borland) ossia delphi 7 al massimo.

    Lo so bene, quindi perché me lo stai dicendo? Lo chiedo a maggior ragione dato che nessuno ha parlato di file .dpr, quindi non capisco perché questa precisazione, e ci aggiungo che il file .dpr è presente anche nelle nuove versioni, sebbene affiancato dal .dproj.

    Ma a parte questo - ripeto - cosa c'entra? Chi lo ha nominato? Perché me lo dici? Boh…

    27/10/2023 - sihsandrea ha scritto:


    L'accesso ai dati lo fai sempre con il datasouce ma ogni gestione reoort ha la sua dataset che pasa i dati al report.

    Il DataSource fa solo da tramite, l'accesso si fa con i componenti DataSet, ma non tutti i tool di reportistica ne fanno uso, alcuni sì, alcuni no, alcuni hanno i propri componenti, altri gestiscono tutto direttamente dal designer…

    Detto questo, se anche fosse, torniamo al punto iniziale che vale per questo discorso come per quello del file .dpr: che c'entra tutto questo?

    27/10/2023 - sihsandrea ha scritto:


    Mi sono espresso male. Se inserisco i vari componenti vcl del report su ogni form la unit del form si blocca.

    Ma che si blocca? Senza neanche approfondire cosa si intende con “blocca”, non si “blocca” niente, poco ma sicuro.

    27/10/2023 - sihsandrea ha scritto:


    Se uso un form dedicato posso richiamare un form privo dei vcl report senza che il programma ne risenta: al massimo non stampa.

    I componenti li puoi mettere dove vuoi: al netto della forma e della maggiore manutenibilità del programma, “funzionalmente” l'effetto che ottieni a runtime è praticamente lo stesso. Detto questo, come vale per tuuutti i punti precedentemente detti, di nuovo, cosa c'entrano queste cose?

    “Al massimo non stampa”… ah beh, hai detto niente. E' questo il problema principale, non il resto.

    Il problema qui - lo ripeto di nuovo - è che il programma non compila perché mancano quei componenti: toglierli può richiedere 5 minuti, o facendo come dici tu ce ne possono volere 2, ma comunque il problema è che non compili se non hai i componenti, se li togli non stampi, e se vuoi toglierli ma stampare ugualmente, devi rifare i report con un altro tool, completamente diverso, e il problema non è dove metti i componenti per collegare le origini dei dati al report, ma il report progettato “fatto e finito” col nuovo tool.

    27/10/2023 - sihsandrea ha scritto:


    Se i componenti sono sparsi nelle unit il lavoro è pesante.

    Macché “pesante”, ci metterai un minuto in più estendendo una ricerca. Capisco cosa intendi, ma quello che ti sto dicendo è che il problema è compilare trovando i componenti che fanno generare il report che serve, non trovare il modo più rapido per toglierli dal programma in modo da poterlo compilare rinunciando a una funzionalità fondamentale. Allora tanto vale togliere tutto quello che non compila: otterrai un programma che parte, ma che non fa nulla. Che cosa c'entra tutto questo discorso?

    27/10/2023 - sihsandrea ha scritto:


    programmare usando i datamodule aiuta a riscrivere l'accesso ai dati senza alterare troppo il programma.

    Tutte considerazioni valide, ma per me non c'entrano nulla col problema.

    L'autore della discussione non riesce a compilare un progetto perché non ha i RAVE Reports.
    Le soluzioni possibili sono: 1) avere i RAVE Reports, oppure 2) usare un altro tool.

    Le pratiche di buona programmazione sono sacrosante ma non hanno nulla a che vedere con il fatto che qui mancano dei componenti necessari a compilare il progetto. Se vengono tolti non stampi, se usi un altro tool devi rifare i report a meno che il nuovo tool non possa importare i vecchi.

    Tutto il resto è irrilevante, non nel senso che non è corretto o va disatteso, ma nel senso che non cambia le condizioni del problema indicate sopra.

    Non ha senso parlare di “buona programmazione” quando il mio problema è che non ho dei componenti che mi servono.

    27/10/2023 - sihsandrea ha scritto:


    Pratica non teoria.

    Eh, sarà la troppa pratica… :)

  • Re: Uses RpDefine

    Andiamo con ordine (anche se siamo al confine OT).

    28/10/2023 - Alka ha scritto:


    Lo so bene, quindi perché me lo stai dicendo?

    Per non confondere l'autore nel cercare il file dproj, quando parla di versione remota di delphi, con il tuo suggerimento di vedere la versione su detto file. Era solo per completezza.

    Poi questa affermazione:

    28/10/2023 - Alka ha scritto:


    Ma che si blocca? Senza neanche approfondire cosa si intende con “blocca”, non si “blocca” niente, poco ma sicuro.

    cozza con questa:

    28/10/2023 - Alka ha scritto:


    Il problema qui - lo ripeto di nuovo - è che il programma non compila perché mancano quei componenti:

    sempre TUE affermazioni.

    veniamo ora al perchè ho dato dei consigli…

    28/10/2023 - Alka ha scritto:


    L'autore della discussione non riesce a compilare un progetto perché non ha i RAVE Reports.
    Le soluzioni possibili sono: 1) avere i RAVE Reports, oppure 2) usare un altro tool.

    A parte che “non riesce a compilare” cozza sempre con “ma che si blocca?”, io, oltre a suggerire di mettere le stampe su un form a parte, in modo da intervenire sulle unit con prefisso “stampa”, ho risposto:

    26/10/2023 - sihsandrea ha scritto:


    Puoi sostituire rave report o comprarlo.

  • Re: Uses RpDefine

    28/10/2023 - sihsandrea ha scritto:


    Per non confondere l'autore nel cercare il file dproj, quando parla di versione remota di delphi, con il tuo suggerimento di vedere la versione su detto file. Era solo per completezza.

    Se l'intento è non confondere l'autore, quello che si dovrebbe fare è evitare di aggiungere dettagli superflui. O sbaglio?

    L'autore ha scritto “ho un vecchio progetto del 2014 circa”, quindi il file .dproj esiste già (è stato introdotto ben 7 anni prima).

    Al netto che l'autore potrebbe sbagliarsi, stando alle informazioni fornite, il mio suggerimento era corretto perché diceva di controllare una informazione all'interno di un file che dovrebbe esistere.

    Che si voglia aggiungere per completezza una ulteriore indicazione, può starci, ma non essendo richiesta senz'altro è proprio quella che contribuisce a creare maggiore confusione, oltre al fatto che l'hai detta a me come contestazione invece che all'autore della discussione, motivo per cui mi viene spontaneo chiedermi perché mi stai insegnando la cosa. Delphi lo conosco bene eh, giuro… :)

    28/10/2023 - sihsandrea ha scritto:


    A parte che “non riesce a compilare” cozza sempre con “ma che si blocca?”

    Non cozza nulla perché questo “si blocca” non vuol dire niente, non è un termine tecnico, non vuol dire nulla di preciso, non si capisce a cosa ti riferisci, non c'entra niente con la discussione, non c'entra niente col problema, non c'entra nulla con quello che sto dicendo: stai continuando a ribattere a discorsi che nessuno ha fatto deviando continuamente dal punto principale, sul quale non si vuole arrivare.

    28/10/2023 - sihsandrea ha scritto:


    oltre a suggerire di mettere le stampe su un form a parte, in modo da intervenire sulle unit con prefisso “stampa”, ho risposto:

    26/10/2023 - sihsandrea ha scritto:


    Puoi sostituire rave report o comprarlo.

    Si vede che parliamo una lingua diversa…

    Questa parte che hai quotato sopra io non l'ho mai contestata, e infatti è precisamente l'unica cosa che hai detto che identifica il problema centrale ed elenca le uniche possibili soluzioni.

    Le parti che io ho quotato e commentato sono altre, e non quella sopra che hai riportato, che nella sua sinteticità tra l'altro dimostra perfettamente quello che sto cercando di dire ormai da decine di messaggi: essendo quello il problema, sono tutti gli altri suggerimenti che hai dato a essere superflui, in parte, ed errati (a mio avviso) in altre parti.

    Quando si dialoga e ci si confronta, si ribatte facendo riferimento a quello che le persone dicono: tu mi rispondi senza quotare le cose che ho detto riportando l'unica parte dei messaggi che hai scritto sulle quali non ho avuto nulla da dire. Così è impossibile capirci qualcosa.

    E in ogni caso, per me la questione finisce qui perché è diventata assurda: tu dici mele, poi dici anche pere… io critico pere, tu mi riporti che hai detto anche mele, inutile proseguire. :)

  • Re: Uses RpDefine

    In effetti non hai chiesto come sapere quale versione avevi usato…Nel 2014 poteva anche essere da delphi 1 a delphi 10 in effetti.

    Beh, il report è rave.

Devi accedere o registrarti per scrivere nel forum
12 risposte