* * * *

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 27, 2024, 06:52:46 am

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

228 Visitatori, 0 Utenti

Autore Topic: [Risolto] fpspreadsheet non funziona più  (Letto 1742 volte)

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
[Risolto] fpspreadsheet non funziona più
« il: Febbraio 17, 2021, 05:03:58 pm »
Non capisco perchè, dopo un aggiornamento di sitema, ahimè obbligato, non funzionino più le componenti fpspreadsheet.

Ricordo di non averlo installato. L'ho scaricato da qui
Poi ho semplicemente aggiunto nella riga uses le unit: "fpspreadsheet, laz_fpspreadsheet, "

Ora ciò non funziona più e, in compilazione, ricevo il messaggio d'errore
Citazione
frmmain.pas(9,33) Fatal: Impossibile trovare fpspreadsheet usato da frmmain dell'Analizzatore Progetti.
.
Ho anche guardato in IDE -> progetto -> opzioni progetto -> Percorsi  -> Altri File unit
Lì dentro ho aggiunto il percorso relativo alla cartella ottenuta con l'estrazione dal file fpspreadsheet-1.12.zip:
(../../fpspreadsheet-1.12/fpspreadsheet).

Ho riprovato a compilare, ma non è cambiato niente. Il programma non riesce più a ritrovare le unit pertinenti.
« Ultima modifica: Febbraio 19, 2021, 04:38:53 pm da petrusic »
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:fpspreadsheet non funziona più
« Risposta #1 il: Febbraio 17, 2021, 06:30:46 pm »
Prova ad installare il pacchetto attraverso l'online package manager.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:fpspreadsheet non funziona più
« Risposta #2 il: Febbraio 18, 2021, 05:02:47 pm »
Ma perchè devo installarlo?
Un mese fa sono riuscito a farlo funzionare già senza installarlo. Anche qui ho letto che funziona senza installarlo, dovrei riuscirci anche questa volta. Probabilmente non seguo lo stesso procedimento dichiarativo della volta scorsa e purtroppo non lo ricordo più.  :o :-[ :'(
ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:fpspreadsheet non funziona più
« Risposta #3 il: Febbraio 18, 2021, 06:06:15 pm »
Ho anche guardato in IDE -> progetto -> opzioni progetto -> Percorsi  -> Altri File unit
Lì dentro ho aggiunto il percorso relativo alla cartella ottenuta con l'estrazione dal file fpspreadsheet-1.12.zip:
(../../fpspreadsheet-1.12/fpspreadsheet).

Torna in
Ho anche guardato in IDE -> progetto -> opzioni progetto -> Percorsi  -> Altri File unit
Se guardi, su quella riga, sulla destra c'è un bottone con 3 puntini.
Se ci clicchi sopra, ti fa vedere i percorsi che hai aggiunto "incolonnati", e colora con un colore differente i percorsi che fanno riferimento a directories che non esistono (visto che lavori in Linux, potrebbero anche esistere, ma il tuo utente non hai i permessi per usarle).
Eventualmente, le puoi anche cancellare tutte, ed aggiungerle non a mano, ma usando la casella che c'è sotto all'elenco.

Trattandosi di Linux, magari hai scritto i percorsi a mano, ed hai invertito maiuscolo/minuscolo di qualche lettera.

Ciao, Mario

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:fpspreadsheet non funziona più
« Risposta #4 il: Febbraio 18, 2021, 06:42:29 pm »
@ bonmario

Ho verificato tutto. Non ci sono errori. Anche i permessi sono tutti aperti a tutto.
Per completezza, allego l'immagine dei percorsi relativi ad "Altri file unit".
Allego anche l'immagine delle sottodirectory corrispondenti.
ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:fpspreadsheet non funziona più
« Risposta #5 il: Febbraio 18, 2021, 06:56:05 pm »
Nel primo post, hai scritto:
Codice: [Seleziona]
Poi ho semplicemente aggiunto nella riga uses le unit: "fpspreadsheet, laz_fpspreadsheet, "

Dalle immagini che hai appena mandato, si vede che in quel percorso c'è "laz_fpspreadsheet", ma "fpspreadsheet" non c'è, quindi è normale che ti dia quell'errore in compilazione.

Ciao, Mario

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:fpspreadsheet non funziona più
« Risposta #6 il: Febbraio 18, 2021, 10:11:56 pm »
Dalle immagini che hai appena mandato, si vede che in quel percorso c'è "laz_fpspreadsheet", ma "fpspreadsheet" non c'è, quindi è normale che ti dia quell'errore in compilazione.

Eh!, Eh!, Eh! :)
Sembra facile, ma non è come credi perchè, impostando la riga delle uses così':
Codice: [Seleziona]
unit frmmain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, DB, SQLDB, SQLite3Conn, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, laz_fpspreadsheet, Process;

type
. . .
ecco cosa succede in compilazione:
Citazione
laz_fpspreadsheet.pas(11,3) Fatal: Impossibile trovare fpsallformats usato da laz_fpspreadsheet dell'Analizzatore Progetti.

e nel sorgente compare una unit creata automaticamente con la segnalazione della riga contenente l'errore, come risulta dall'immagine allegata.

Io non so più che prove fare.



« Ultima modifica: Febbraio 18, 2021, 10:13:43 pm da petrusic »
ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:fpspreadsheet non funziona più
« Risposta #7 il: Febbraio 19, 2021, 07:57:24 am »
Devi cercare, tra i sorgenti di del componente, dove risiede "fpspreadsheet", ed aggiungere quella directory alle altre.

Ho trovato un mio progetto dove lo uso: io nell'elenco delle directories, per quanto riguarda fpspreadsheet, ho solo questa
Codice: [Seleziona]
..\..\____Componenti\fpspreadsheet\source\common

Ciao, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:fpspreadsheet non funziona più
« Risposta #8 il: Febbraio 19, 2021, 08:30:19 am »
Ma perchè devo installarlo?

Per evitare situazioni come questa. Installalo con Online package manager e ti togli il fastidio.
Poi basta che nei tuoi progetti lo usi come risorsa aggiuntiva e metti le unit che ti servono.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:fpspreadsheet non funziona più
« Risposta #9 il: Febbraio 19, 2021, 11:18:48 am »
Per evitare situazioni come questa. Installalo con Online package manager e ti togli il fastidio.
Poi basta che nei tuoi progetti lo usi come risorsa aggiuntiva e metti le unit che ti servono.

MAh, è anche questione di abitudine e di organizzazione soggettiva.
Io se non mi servono gli "oggetti visuali", preferisco non installare. Questo è uno dei componenti che non ho mai installato !

Ciao, Mario

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:fpspreadsheet non funziona più
« Risposta #10 il: Febbraio 19, 2021, 11:50:25 am »
Devi cercare, tra i sorgenti di del componente, dove risiede "fpspreadsheet", ed aggiungere quella directory alle altre.

Ho trovato un mio progetto dove lo uso: io nell'elenco delle directories, per quanto riguarda fpspreadsheet, ho solo questa
Codice: [Seleziona]
..\..\____Componenti\fpspreadsheet\source\common

Qualcosa è cambiato.

Ammetto che non avevo capito dove andare a sistemare l'unzip di fpspreadsheet-1.12.zip. Ieri l'ho inserito in /usr/.../lazarus/component ed ho aggiunto stamani, nei Percorsi di ricerca  di lazarus, come mi hai suggerto, la riga:
Codice: [Seleziona]
/usr/lib64/lazarus/components/fpspreadsheet/source/common/

Ora il programma contiene, relativamente a fpspreadsheet, le seguenti righe:
Codice: [Seleziona]
unit frmmain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, DB, SQLDB, SQLite3Conn, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, fpspreadsheet, Process;
--- bla --- bla ---
var
  Form1: TForm1;

implementation

{$R *.lfm}
uses
  frm2;
  //  frm2, tbComuni;
type
   TsSpreadsheetFormat = (sfExcel2, sfExcel5, sfExcel8, sfExcelXML, sfOOXML,
    sfOpenDocument, sfCSV, sfHTML, sfWikiTable_Pipes, sfWikiTable_WikiMedia, sfUser);

--- bla --- bla ---
procedure TForm1.PulsAvviaClick(Sender: TObject);
var
  frm2: TForm;

    areaFile: TsWorkbook;
    foglioCorr: TsWorksheet;       
. . .
begin
. . .               
    nuFogli:=  areaFile.GetWorksheetCount - 1; 
    striMia:='il file-cartella corrente è' + nomeFilCorr +' e contiene n.' + IntToStr(nuFogli + 1) + ' fogli elettronici' + chr(10) + ' così denominati:';
    foglioCorr:= areaFile.GetFirstWorksheet;
    for ixFoglio:= 0 to nuFogli do
    begin
      numRg:=  foglioCorr.GetCellCountInCol(0);   
      numCol:=  foglioCorr.GetCellCountInRow(0);
--- bla --- bla ---
Dicevo che qualcosa è cambiato, grazie ai tuoi suggerimenti, ma ora compare, in compilazione, un nuovo messaggio di errore
Citazione
fpstypes.pas(13,2) Fatal: Cannot open include file "fps.inc"
Codice: [Seleziona]
unit fpsTypes;

{$mode objfpc}{$H+}
{$include fps.inc}

ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:fpspreadsheet non funziona più
« Risposta #11 il: Febbraio 19, 2021, 12:04:48 pm »
Stessa logica di prima: guarda dove risiede quel file, ed eventualmente aggiungi la directory

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:fpspreadsheet non funziona più
« Risposta #12 il: Febbraio 19, 2021, 04:38:21 pm »
Ho concluso,
ma purtroppo non come volevo io perchè, dopo tante prove e tentativi fatti, ogni piccolo passo fatto, non era un passo avanti, ma un passo verso un nuovo ostacolo.
Perciò, alla fine, ho deciso di installare fpspreadsheet, limitatamente alle funzioni non visuali.
Ora il programma ha superato il livello della compilazione. Non so ancora se riuscirò a leggere le celle dei fogli di calcolo candidati. Infatti la lettura di detti fogli è subordinata a determinati valori riscontrati in una delle tabelle del mio DB. Però ora devo riadattare il programma ai criteri interni a SQLConstructor.
Grazie per la paziente guida.
ciao ciao

petrusic

  • Hero Member
  • *****
  • Post: 589
  • Karma: +0/-0
Re:[Risolto] fpspreadsheet non funziona più
« Risposta #13 il: Febbraio 21, 2021, 04:51:53 pm »
Credo di avere cantato vittoria troppo presto.
Infatti, dopo aver potuto riprendere le prove interrotte per avanzamento programma, ieri ho ricominciato ed ecco la sorpresa:
Nella procedura riportata parzialmente qui sotto
Codice: [Seleziona]
procedure TForm1.PulsAvviaClick(Sender: TObject);

var
  frm2: TForm;
    areaFile: TsWorkbook;
    foglioCorr: TsWorksheet;
--- bla --- bla ---
begin
  n:= lsDir.Items.Count - 1 ;
  areaFile:= TsWorkbook.Create;
    ixFile:= lsDir.ItemIndex;
    nomeFilCorr:= lsDir.Items[ixFile];
    lun:= Length(nomeFilCorr) - 1;
    nomeFilCorr:= dirFogli + RightStr(nomeFilCorr, lun);
    areaFile.ReadFromFile(nomeFilCorr);
--- bla --- bla ---
 
l'ultima istruzione ("areaFile.ReadFromFile(nomeFilCorr); ") determina un'eccezione di classe per file NON trovato in lettura (vedi immagine allegata)

L'errore però non si manifesta in altro punto del programma dove eseguo un comando "cp" di salvataggio prudenziale del DBsqlite3 che dovrebbe essere aggiornato successivamente coi dati letti dal foglio di calcolo
Riporto, per completezza, anche il gruppo di istruzione relative al comando cp:
Codice: [Seleziona]
procedure TForm1.FormCreate(Sender: TObject);
const
  dbCopia: String = '/media/dirdati/dativari/contabfam/ContabFamdb_prove';
  dbOrig: String = '/media/dirdati/dativari/contabfam/ContabFamdb';
var
  AProcess: TProcess;      //  classe dedicata ad eseguire comandi Shell (commad Line)
  Esito: TSearchRec;

  result: Boolean;
  swAster: Boolean = False;

  lun, totRecQry: Integer;

  annata, dtIni, dtFin, sql, striMia: String;
  dirDB, nomeDB: String;

begin
//-----------> avvio SALVATAGGIO intero DB -------------------
  striMia:= 'cp ' + dbOrig + ' ' + dbCopia;
  AProcess := TProcess.Create(nil);
  AProcess.CommandLine:= striMia;
  AProcess.Options := AProcess.Options + [poWaitOnExit];
  AProcess.Execute;
  AProcess.Free;                                                                         
Per quello che sto soffrendo in questo periodo, in termini di malfunzionamenti di vario genere, non riesco più a capire se l'eccezione sollevata possa dipendere dal programma, dal S.O., dalla scheda madre, ...

Però, se il comando cp funziona (il file /media/dirdati/dativari/contabfam/ContabFamdb_prove   viene creato), mentre l'accesso al foglio di calcolo NO, il problema potrebbe dipendere dal programma.
ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1302
  • Karma: +10/-1
Re:[Risolto] fpspreadsheet non funziona più
« Risposta #14 il: Febbraio 21, 2021, 06:43:44 pm »
Se guardi i sorgenti, capisci che quell'errore non vuol dire che non trova il file, ma che non sa con quale "lettore" leggerlo.
In pratica , lui non sa capire per i fatti suoi se è un file Excel, Calc, o altro. Devi dirglielo tu.

Vado a memoria, dovrebbe essere qualcosa del genere:
Codice: [Seleziona]
      areaFile.ReadFromFile(nomeFilCorr, sfOpenDocument);

Ciao, Mario

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18776
  • Topic in totale: 2234
  • Online Today: 233
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 228
Total: 228

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.