* * * *

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.
Maggio 01, 2024, 02:33:31 pm

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

265 Visitatori, 0 Utenti

Autore Topic: unit che si rincorrono  (Letto 748 volte)

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
unit che si rincorrono
« il: Novembre 07, 2023, 09:58:19 am »
invece che un componente ho messo le unit in pascal all'interno di un progetto, ma sembra che le unit si rincorrano, tanto da spostare la prima in fondo e ccosi' via...
l'errore mi si presenta in continuazione tanto che alla fine si ritorna ai posti di partenza e mi da' lo stesso errore.

echo.pas(6,3) Fatal: Impossibile trovare winsocs usato da echo.

non so' come fare , avete un idea... ?

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1267
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:unit che si rincorrono
« Risposta #1 il: Novembre 07, 2023, 11:50:57 am »
Non ho compreso chiaramente il problema.

Ci sono due "posti" dove le "Uses" possono essere inserite:

1) Sezione Interface;

2) Sezione Implementation.

Un riferimento incrociato non può essere inserito nelle Interface.

Se la Unit1 è presente nella Interface della Unit2, allora la Unit2 NON PUO' ESSERE PRESENTE nelle sezione Interface della Unit1 e viceversa ovviamente. Questo in linea generale ... se non ci sono errori anche se entrambe "si richiamano" allora vuol dire che il doppio USES non ha comunque senso perchè una delle due Unit non richiama l'altra.

In linea generale le unit (ossia i sorgenti Pascal) dovrebbero essere delle entità autonome, ossia svolgere delle elaborazioni autonome con riferimento ai framework di base (LCL, FPC, VCL, FMX, SYSTEM, UWP, RTL, etc ...) e a librerie di terze parti (o proprie). Ma ovviamente non ha alcun senso che una libreria di terze parti (o anche una propria se fatta bene) abbia dei riferimenti a qualcosa che è nel progetto che le usa ....

Normalmente si usa inserire nelle sezione Interface le Unit che hanno oggetti (classi, interfacce, record, etc ...) e variabili usate sempre nella stessa sezione Interface da altri oggetti che li dichiarano come membri propri. Devono essere inserite nella sezione Interface anche le Unit che dichiarano e istanziano oggetti con visibilità globale (molto spesso sono variabili semplici o record).

Nella sezione Implementation invece vengono inserite le Unit che vengono usate solo con visibilità locale.

Esempio di NON USO !!!:
Codice: [Seleziona]
 
Unit Unit1
Interface
Uses ......, Unit2, ....

type
  TProva1 = class(TProva2)
     SonoQui1: boolean;
end;

var Prova1: TProva1;
   
....
.....

****************************

Unit Unit2
Interface
Uses ......, Unit1, ....

type
  TProva2 = class(TProva1)
     SonoQui2: boolean;
end;

var Prova2: TProva2;
   
....
.....
Questo è un esempio tipico (che nessuno si sogna neanche lontanamente di applicare) in cui ci sono dei riferimenti incrociati dichiarati in due Unit. La classe TProva1 e TProva2 sono dichiarate come derivate una dall'altra. Ciò non è possibile (ma non lo sarebbe neanche se fossero nella stessa Unit) oltre che per il riferimento incrociato anche per ulteriori motivi .....

I riferimenti incrociati devono essere sbrogliati in più Unit (o più oggetti) e ciascuna Unit dovrebbe essere tipicamente autonoma.

Io normalmente uso creare una Unit solo ed esclusivamente contenente le definizioni di qualunque oggetto ad uso di tutte le altri classi. Tutte le dichiarazioni in questa Unit DIPENDONO solo ed esclusivamente dai framework di base, da librerie di terze parti, da wrapper o da librerie personali.

Questa Unit potrà essere richiamata ove serve o nella Interface o nella Implementation in quanto non contiene riferimenti diretti al progetto (è il progetto che usa le definizioni di questa Unit).

Spero che sia stato utile.
« Ultima modifica: Novembre 07, 2023, 02:00:37 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #2 il: Novembre 07, 2023, 12:57:57 pm »
Le USES sono tutte dichiarate sotto interface..... :-X :-X

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1267
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:unit che si rincorrono
« Risposta #3 il: Novembre 07, 2023, 01:59:55 pm »
echo.pas(6,3) Fatal: Impossibile trovare winsocs usato da echo.

L'errore che riporti corrisponde alla impossibilità per il compilatore di trovare l'unità "winsocs" (o sorgente in .pas o già compilata) nei percorsi definiti.

A parte che forse dovrebbe essere WINSOCK, non winsocs, l'unità ECHO.pas è scritta per Lazarus ?

:) Ogni alba è un regalo, ogni tramonto è una conquista :)

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #4 il: Novembre 07, 2023, 05:02:15 pm »
si per lazarus e anche la parte per win e' scritta in pascal. :-\ :-\

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1267
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:unit che si rincorrono
« Risposta #5 il: Novembre 07, 2023, 05:33:04 pm »
si per lazarus e anche la parte per win e' scritta in pascal. :-\ :-\
Ma sei sotto Windows o Linux ?
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #6 il: Novembre 07, 2023, 06:55:39 pm »
sono sotto linux ma una unit si puo'usare per interfacciarci con win. :-X :-X

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #7 il: Novembre 07, 2023, 08:30:22 pm »
le unit fanno parte del pacchetto nsinapse, ho usato il formato in Pascal, per poter intervenire nelle stesse agiungendoci qualcosa di mio es. un gestore degli errori a runtime....

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #8 il: Novembre 07, 2023, 08:36:09 pm »
A proposito le uses sono tutte in lettere minuscole, ho controllato. :'( :'(

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1267
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:unit che si rincorrono
« Risposta #9 il: Novembre 07, 2023, 09:24:23 pm »
A proposito le uses sono tutte in lettere minuscole, ho controllato. :'( :'(

Questo vale solo x Linux, dove il nome del file deve essere "preciso". Comunque se sbagli nome in compilazione ti dice che non trova il file.

sono sotto linux ma una unit si puo'usare per interfacciarci con win. :-X :-X

No, non è possibile usare Unit "platform dependent" in altri SO. Non puoi usare una Unit di Linux con Windows o viceversa.

le unit fanno parte del pacchetto nsinapse, ho usato il formato in Pascal, per poter intervenire nelle stesse agiungendoci qualcosa di mio es. un gestore degli errori a runtime....

Synapse non lo uso, ma sò che è abbastanza delicato con le versioni. Ho "paura" che se non hai la versione abbinata di Synapse con il tuo Lazarus potresti avere dei problemi.

Come ti ho già riportato, una buona parte di pacchetti di terze parti funzionano solo con Lazarus dalla versione 2 in poi.

Magari c'è qualcuno della comunità che ti può aiutare in maniera più mirata.

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:unit che si rincorrono
« Risposta #10 il: Novembre 08, 2023, 08:31:24 am »
DragoRosso ha già fatto tutte le osservazioni che si potevano fare senza avere un sorgente da analizzare.
Ieri è passato, domani è futuro, oggi è un dono...

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #11 il: Novembre 08, 2023, 10:53:03 am »
ok mi ha dato tutte le delucidazioni. ma tolto synapse adesso mi da quest'errrore:

/usr/bin/ld.bfd: impossibile trovare -lmsvcrt.dll

che precedentemente non avevo....
grazie.

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1267
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:unit che si rincorrono
« Risposta #12 il: Novembre 08, 2023, 03:28:41 pm »
Questo lo avevi già segnalato in un altro Thread: https://www.lazaruspascal.it/index.php?topic=2809.msg19160#msg19160

Non possiamo aiutarti se non ci dai qualche spiegazione in più o non ci dai qualcosa da "analizzare".

Non è che stai "misciando" codice Delphi Windows con codice Lazarus Linux ?
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

francesco

  • Jr. Member
  • **
  • Post: 59
  • Karma: +0/-0
Re:unit che si rincorrono
« Risposta #13 il: Novembre 08, 2023, 05:24:20 pm »
In verita' non so' ci guardero subito in tutte le unit.
grazie

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18784
  • Topic in totale: 2236
  • Online Today: 465
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 265
Total: 265

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.