Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: casey - Marzo 04, 2022, 04:09:07 pm

Titolo: conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 04, 2022, 04:09:07 pm
Ciao a tutti,
dovrei convertire un archivio clienti di un vecchio programma fatto in dbase III plus sotto dos,
si tratta di un DBF,
mi interesserebbe convertirlo sia in sqlite, che in csv,

ho visto che ci sono dei siti che fanno ciò,
ma siccome si tratta di dati sensibili non mi fido a caricarli su quei siti,
c'e altro modo pee farlo in locale e in modo che i dati restino integri così come sono?

su Lazarus per sqlite sto usando Zeodb,
quindi creo il form e ci metto gli oggetti sul form,
se volessi utilizzare free pascal, quindi con schermate non grafichecome potrei fare?

grazie
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: nomorelogic - Marzo 04, 2022, 05:25:17 pm
se si tratta di una operazione una-tantum potresti aprire file file DBF con Libre Office e poi te lo salvi direttamente in CSV

o si tratta di una operazione che deve essere fatta continuamente?

nomorelogic
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: bonmario - Marzo 04, 2022, 06:23:59 pm
Oltre a quanto scritto da @nomorelogic, in Lazarus c'è questo:
https://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial

ma non so se si tratta dello stesso tipo di files.
Io lo uso da anni, per un unico semplice progetto.

Ciao, Mario
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 04, 2022, 08:11:18 pm
se si tratta di una operazione una-tantum potresti aprire file file DBF con Libre Office e poi te lo salvi direttamente in CSV

o si tratta di una operazione che deve essere fatta continuamente?

nomorelogic

Ho letto su internet che la conversione in csv da libreoffice non è perfetta,

in ogni caso più che csv, a me interesserebbe convertirlo in sqlite
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 04, 2022, 08:13:04 pm
Oltre a quanto scritto da @nomorelogic, in Lazarus c'è questo:
https://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial

ma non so se si tratta dello stesso tipo di files.
Io lo uso da anni, per un unico semplice progetto.

Ciao, Mario

non voglio usare il dbf, che è meno efficiente,
cerco un modo per convertire il database vecchio direttamente in sqlite

altra cosa,
come posso usare zeos in free pascal non essendoci i form?
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 04, 2022, 09:24:07 pm
altra cosa,
come posso usare zeos in free pascal non essendoci i form?
Crea una app console e copiaci dentro questo codice. Nella stessa directory copiaci i due file allegati.

Ciao

Codice: [Seleziona]
program Console_DemoDB;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, SysUtils, CustApp, odbcconn, SQLDB,  DB,
  ZCompatibility, ZConnection, ZDataset, SQLite3Conn
  { you can add units after this };

type

  { TMyApplication }

  TMyApplication = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
  end;

{ TMyApplication }

var
  ZConnection1: TZConnection;
  ZTable1: TZTable;
procedure TMyApplication.DoRun;
var
  ErrorMsg: String;
begin
  { add your program here }
  //Inizializzazione componenti
  ZConnection1 := TZConnection.Create(nil);
  with ZConnection1 do
    begin
      ControlsCodePage := cCP_UTF8;
      AutoEncodeStrings := True;
      ClientCodepage := 'UTF-8';
      Properties.Add('AutoEncodeStrings=True');
      Properties.Add('controls_cp=CP_UTF8');
      Properties.Add('codepage=UTF-8');
      Port := 0;
      Database := '.\db.s3db';
      Protocol := 'sqlite-3';
    end;
  ZConnection1.Connected:= True;
  ZTable1 := tZTable.Create(nil);
  with ZTable1 do
    begin
      Connection := ZConnection1;
      SortedFields := 'ID';
      TableName := 'utenti';
      IndexFieldNames := 'ID Asc';
    end;
  ZTable1.Active:= True;
  //Fine Inizializzazione

  ZTable1.First;
  writeln(ZTable1.FieldByName('Cognome').AsAnsiString,' - ', ZTable1.FieldByName('Nome').AsAnsiString);
  readln();

  //Finalizzazione
  ZTable1.Active:= False;
  ZTable1.Free;
  ZConnection1.Connected := False;
  ZConnection1.Free;
  // stop program loop
  Terminate;
end;

constructor TMyApplication.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor TMyApplication.Destroy;
begin
  inherited Destroy;
end;

var
  Application: TMyApplication;
begin
  Application:=TMyApplication.Create(nil);
  Application.Title:='My Application';
  Application.Run;
  Application.Free;
end.
               
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 04, 2022, 09:33:42 pm
Crea una app console e copiaci dentro questo codice. Nella stessa directory copiaci i due file allegati.

Ciao

Codice: [Seleziona]
program Console_DemoDB;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, SysUtils, CustApp, odbcconn, SQLDB,  DB,
  ZCompatibility, ZConnection, ZDataset, SQLite3Conn
  { you can add units after this };

type

  { TMyApplication }

  TMyApplication = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
  end;

{ TMyApplication }

var
  ZConnection1: TZConnection;
  ZTable1: TZTable;
procedure TMyApplication.DoRun;
var
  ErrorMsg: String;
begin
  { add your program here }
  //Inizializzazione componenti
  ZConnection1 := TZConnection.Create(nil);
  with ZConnection1 do
    begin
      ControlsCodePage := cCP_UTF8;
      AutoEncodeStrings := True;
      ClientCodepage := 'UTF-8';
      Properties.Add('AutoEncodeStrings=True');
      Properties.Add('controls_cp=CP_UTF8');
      Properties.Add('codepage=UTF-8');
      Port := 0;
      Database := '.\db.s3db';
      Protocol := 'sqlite-3';
    end;
  ZConnection1.Connected:= True;
  ZTable1 := tZTable.Create(nil);
  with ZTable1 do
    begin
      Connection := ZConnection1;
      SortedFields := 'ID';
      TableName := 'utenti';
      IndexFieldNames := 'ID Asc';
    end;
  ZTable1.Active:= True;
  //Fine Inizializzazione

  ZTable1.First;
  writeln(ZTable1.FieldByName('Cognome').AsAnsiString,' - ', ZTable1.FieldByName('Nome').AsAnsiString);
  readln();

  //Finalizzazione
  ZTable1.Active:= False;
  ZTable1.Free;
  ZConnection1.Connected := False;
  ZConnection1.Free;
  // stop program loop
  Terminate;
end;

constructor TMyApplication.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor TMyApplication.Destroy;
begin
  inherited Destroy;
end;

var
  Application: TMyApplication;
begin
  Application:=TMyApplication.Create(nil);
  Application.Title:='My Application';
  Application.Run;
  Application.Free;
end.
             

Ti ringrazio,

praticamente così invece di usare FPC,
uso direttamente Lazarua con Zeos installato, giusto?

hai suggerimenti da darmi anche per la conversione del vecchio dbf dbase III Plus a sqlite?
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 04, 2022, 09:43:08 pm
Ti ringrazio,
praticamente così invece di usare FPC,
uso direttamente Lazarua con Zeos installato, giusto?
hai suggerimenti da darmi anche per la conversione del vecchio dbf dbase III Plus a sqlite?

Si, usi Lazarus comunque ma semplicemente creando i "controlli" a runtime. Questo è il modo più semplice.
Una alternativa più prestante (ma un pò più complessa), è quella di usare direttamente le interfaccie.
I componenti non sono altre che incapsulazioni di interfaccie, con le interfaccie sei più diretto.

Per la conversione invece, puoi fare un piccolo programma di conversione con Lazarus, usando il componente indicato da @bonmario per leggere il dbf e ZEOS per scrivere un db SQLite, poi se non sbaglio SQLite ha un metodo diretto per scrivere un csv dei dati del suo db.

Ci sono anche dei tools a pagamento che fanno ciò, ma ultimanete sono un pò fuori dal giro e quindi non saprei darti altre indicazioni.

Ciao
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: sergio - Marzo 12, 2022, 07:38:09 pm
Ciao , se vuoi puoi usare DB browser for Sqlite che titrasforma unfile csv  in un archivio sqlite. Il programma è Free !
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 18, 2022, 02:07:31 pm
altra cosa,
come posso usare zeos in free pascal non essendoci i form?
Crea una app console e copiaci dentro questo codice. Nella stessa directory copiaci i due file allegati.

Ciao

Codice: [Seleziona]
program Console_DemoDB;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, SysUtils, CustApp, odbcconn, SQLDB,  DB,
  ZCompatibility, ZConnection, ZDataset, SQLite3Conn
  { you can add units after this };

type

  { TMyApplication }

  TMyApplication = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
  end;

{ TMyApplication }

var
  ZConnection1: TZConnection;
  ZTable1: TZTable;
procedure TMyApplication.DoRun;
var
  ErrorMsg: String;
begin
  { add your program here }
  //Inizializzazione componenti
  ZConnection1 := TZConnection.Create(nil);
  with ZConnection1 do
    begin
      ControlsCodePage := cCP_UTF8;
      AutoEncodeStrings := True;
      ClientCodepage := 'UTF-8';
      Properties.Add('AutoEncodeStrings=True');
      Properties.Add('controls_cp=CP_UTF8');
      Properties.Add('codepage=UTF-8');
      Port := 0;
      Database := '.\db.s3db';
      Protocol := 'sqlite-3';
    end;
  ZConnection1.Connected:= True;
  ZTable1 := tZTable.Create(nil);
  with ZTable1 do
    begin
      Connection := ZConnection1;
      SortedFields := 'ID';
      TableName := 'utenti';
      IndexFieldNames := 'ID Asc';
    end;
  ZTable1.Active:= True;
  //Fine Inizializzazione

  ZTable1.First;
  writeln(ZTable1.FieldByName('Cognome').AsAnsiString,' - ', ZTable1.FieldByName('Nome').AsAnsiString);
  readln();

  //Finalizzazione
  ZTable1.Active:= False;
  ZTable1.Free;
  ZConnection1.Connected := False;
  ZConnection1.Free;
  // stop program loop
  Terminate;
end;

constructor TMyApplication.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor TMyApplication.Destroy;
begin
  inherited Destroy;
end;

var
  Application: TMyApplication;
begin
  Application:=TMyApplication.Create(nil);
  Application.Title:='My Application';
  Application.Run;
  Application.Free;
end.
             

Niente da fare,ho copiato il codice, ma via console mi da sempre errore nella USES,
non capisco perchè,
ho provato anche con free pascal direttamente,

cmq c'è un modo per ingrandire quella maledetta finestra di free pascal prima che diventi cieco?
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 18, 2022, 03:09:22 pm
Niente da fare,ho copiato il codice, ma via console mi da sempre errore nella USES,
non capisco perchè,
ho provato anche con free pascal direttamente,

cmq c'è un modo per ingrandire quella maledetta finestra di free pascal prima che diventi cieco?

Che errore nelle USES ?

Ingrandire che cosa ?

Non ho visto dei rifierimenti nei post precedenti a queste tue ultime questioni.

Ciao
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 18, 2022, 10:52:20 pm
Niente da fare,ho copiato il codice, ma via console mi da sempre errore nella USES,
non capisco perchè,
ho provato anche con free pascal direttamente,

cmq c'è un modo per ingrandire quella maledetta finestra di free pascal prima che diventi cieco?

Che errore nelle USES ?

Ingrandire che cosa ?

Non ho visto dei rifierimenti nei post precedenti a queste tue ultime questioni.

Ciao

Scusami amico,
l'errore uses ora non lo ricordo,
quando sono al pc ti faccio sapere.
Cmq il coeice che mi hai allegato, copiato in un file di testo, in modo da utilizzare sqlite via console, mi da quell'errore USES, che poi ti dirò.

Ciò che non riesco ad ingrandire,
è la finestra di FPC,
praticamente per programmare via console.
Per utilizzarla ieri pomeriggio sono quasi diventato cieco.
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 25, 2022, 05:02:30 pm
Niente da fare,ho copiato il codice, ma via console mi da sempre errore nella USES,
non capisco perchè,
ho provato anche con free pascal direttamente,

cmq c'è un modo per ingrandire quella maledetta finestra di free pascal prima che diventi cieco?

Che errore nelle USES ?

Ingrandire che cosa ?

Non ho visto dei rifierimenti nei post precedenti a queste tue ultime questioni.

Ciao

allora,
creando un programma cnosole e incolllando il codice che mi hai detto tu,
mi viene fuori l'errore : Fatal: can't find unit Zcompatibility used by console_demo

se cancello zcompatibility,
mi danno errore gli altri ZConnection, ZDataset, SQLite3Conn
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 28, 2022, 11:11:02 pm
allora,
creando un programma cnosole e incolllando il codice che mi hai detto tu,
mi viene fuori l'errore : Fatal: can't find unit Zcompatibility used by console_demo

se cancello zcompatibility,
mi danno errore gli altri ZConnection, ZDataset, SQLite3Conn

Apri "Analizzatore Progetti" e dove c'è la scritta "Pacchetto Richiesto" con il tasto destro del mouse scegli "AGGIUNGI" e poi nell'elenco che appare seleziona "zcomponent".

Ora vedrai che funziona.

Ciao
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 29, 2022, 07:05:08 pm
allora,
creando un programma cnosole e incolllando il codice che mi hai detto tu,
mi viene fuori l'errore : Fatal: can't find unit Zcompatibility used by console_demo

se cancello zcompatibility,
mi danno errore gli altri ZConnection, ZDataset, SQLite3Conn

Apri "Analizzatore Progetti" e dove c'è la scritta "Pacchetto Richiesto" con il tasto destro del mouse scegli "AGGIUNGI" e poi nell'elenco che appare seleziona "zcomponent".

Ora vedrai che funziona.

Ciao

scusami, ma questi pacchetti non dovevano essere già aggiunti installando zeos,
e quindi solo richiamati con uses?

Ho un cacchio di problema anche sotto windows quando programmo applicazioni console,
c'è modo di vedere l'applicazione in full screen?

su windows XP funziona premendo ALT INVIO,
su Linux funziona,
sul vecchio DOS pure tutto ok,
ma sotto Windows 7/8/10/11 mi si apre quella schermata piccola, e non si può lavorare così.
Questo problema ce l'ho anche con FreeBasic,
mentre con QB64 nessun problema, funziona magnificamente.
Con C++ mi basta scrivere System('mode 650');
compilare , e va in full screen.

Con free pascal proprio non riesco.


in qualche post fa chiedevo come convertire dei vecchi archivi dbf in sqlite,
alla fine ci sono riuscito con il programma FULL CONVERT, che però è a pagamento.
Converte qualsiasi archivio in qualsiasi altro formato,
ve lo consiglio, funziona benissimo.

Ho ripreso a programmare da poco, e devo dire che mi è tornata un pò questa passione che avevo perso tempo fa,
anche se sono rimasto parecchio indietro rispetto agli anni 90 quando ero al TOP, considerato un grande esperto,
devo dire che amo il PASCAL,
però mi sono trovato in queste settimane così per riprendere la mano, a convertire vecchi gestionali DOS che avevo programmato io stesso all'epoca con dbase III plus,
e li ho rifatti sia in QB64 che in FREE PASCAL,
funzionano benissimo entrambi, molto meglio di come funzionavano all'epoca con il dbase che era interpretato e lento,
e così mi sono messo a fare un paragone,
e vi posso dire che i programmi in QB64 li ho realizzati molto più velocemente, e con la metà delle righe rispetto a free pascal.
Come detto, amo il free pascal, ma mi sono reso conto che amo molto di più QB64,
tutto è molto più rapido e semplificato con esso,
è chiaro che non ha tutte le funzioni che ha il free pascal, che è immenso, ma alla fine ha tutto ciò che serve.
Peccato che non ci sia un RAD simile a LAZARUS che invece di Free Pascal usi QB64,
una specie di visual basic 6 sotto licenza GPL, multipiattaforma.
So che esiste Visual Basic .net express, che è gratuito,
ma ormai il visual basic non ha più nulla a che vedere con la versione 6 e QB64,
ha perso la sua immediatezza e facilità,
è più simile a C# che al Visual Basic 6,
e poi non ho mai amato i software che pesano diversi giga.

Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 29, 2022, 07:54:05 pm
allora,
creando un programma cnosole e incolllando il codice che mi hai detto tu,
mi viene fuori l'errore : Fatal: can't find unit Zcompatibility used by console_demo

se cancello zcompatibility,
mi danno errore gli altri ZConnection, ZDataset, SQLite3Conn

Apri "Analizzatore Progetti" e dove c'è la scritta "Pacchetto Richiesto" con il tasto destro del mouse scegli "AGGIUNGI" e poi nell'elenco che appare seleziona "zcomponent".

Ora vedrai che funziona.

Ciao

fatto,
ora non mi da più quegli errori,
ma mi da Error: Undefined symbol: WSregister.....
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 30, 2022, 05:37:34 pm
scusami, ma questi pacchetti non dovevano essere già aggiunti installando zeos,
e quindi solo richiamati con uses?

.......................................

e poi non ho mai amato i software che pesano diversi giga.

Per quello che riguarda l'uso di "pacchetti", non è dissimile da gli altri linguaggi: le uses servono al compilatore per la definizione degli "oggetti", delle variabili, delle dichiarazioni, etc ....
L'inserimento nel "pacchetto richiesto" invece è necessario normalmente per componenti già compilate, altrimenti TUTTO dovrebbe essere ricompilato ogni volta: non è equivalente la compilazione di un pacchetto a se stante rispetto alla compilazione o al semplice riferimento (USES) di una unità anche se precompilata.

Chi programma in Lazarus, Delphi o altri linguaggi come anche Visual Studio è abituato a ciò.

Per quello che riguarda invece il pieno schermo del terminale o meno, è una problematica relativa al sistema operativo e a come il software compilato (in questo caso da Lazarus) usa il terminale.

Per quello che riguarda Lazarus sotto Windows 11, con una applicazione console, premendo ALT INVIO a me il terminale si pone a pieno schermo.

Discorso invece QB64 (che non conosco, però immagino sia un discendente di QBasic o di GWBasic): il fatto che uno si trovi bene in un ambiente o l'altro, o che piaccia un linguaggio o l'altro coinvolge diversi aspetti, primo dei quali è la sua conoscenza dell'ambiente e del linguaggio.

Ci sono decine, anzi centinaia di linguaggi (ovviamente stiamo parlando di programmazione) e sono nati proprio dall'insoddisfazione di quelli che già c'erano oppure dalla volontà di creare un proprio paradigma di programmazione (magari legato a scopi specifici come hardware, SO, etc...).

A differenza di tutti gli altri linguaggi di programmazione, che penso tutti noi abbiamo usato più di qualche volta (e che mi tocca usare ancora ogni tanto), il Pascal è un linguaggio strutturato e fortemente tipizzato (non è così invece il QB64, almeno se mantiene i canoni del Basic).

"Fortemente tipizzato" significa (in breve) che qualunque dato tu maneggi, il compilatore deve conoscerne le caratteristiche, in poche parole deve essere dichiarato "prima" e le sue caratteristiche non devono cambiare nel corso del programma. Una variabile dichiarata DOUBLE sarà DOUBLE per tutta la sua esistenza, e per essere usata dovrà essere compatibile con gli argomenti in cui verrà usata. Un array di interi rimarrà un array di interi, magari il un numero di elementi che varia nel corso del programma ma sempre di interi rimarrà.

Tralasciando lo "furbate" e le tecniche avanzate, ciò significa che devi avere chiaro quello che c'è da fare in quanto devi definire TUTTO ed è molto più "certo" ciò che ottieni. In fase di "debug", aggiornamento del codice, ampliamento, etc ...., sarà tutto molto più semplice.

Faccio un esempio su tutti: in Basic (A = B) può voler dire più di una "cosa" ....., assegnazioni e confronti (alla base del linguaggio) che si mischiano ....

Và bhe, sono state scritte pagine di trattati su questi argomenti, e tediare la ns. platea non mi sembra il caso.

Io ho usato prevalentemente il Pascal, anche se sono nato con il C (come la stragrande maggioranza di quelli della mia generazione), e devo dire che la programmazione in Pascal non ha trovare un paragone decente in altri linguaggi. Ma questo forse è dovuto dalla mia "forma mentis" ormai plasmata su ciò.

Poi devo dire sinceramente che avendo sviluppato prevelentamente sotto Windows, Delphi mi è stato da maestro e non c'era storia tra il VB6 ed il Delphi .... la velocità con cui creavi programmi e la facilità soprattutto con Delphi e la sua barra dei componenti già piena zeppa di oggetti di uso comune.

Comunque non posso giudicare QB64 perchè non lo conosco, ma ho come l'impressione che sia una specie di "ambiente" tipo "DEV C++" .... che è fatto in Delphi .... (QB64 sarà fatto in C++ immagino).

Lazarus incarna il concetto di Pascal: ogni versione nuova viene compilata con quella precedente ed è praticamente in puro Pascal.

Lazarus ha dei meriti, e anche delle sue criticità e, su questo sono d'accordo con te, conoscere linguaggio ed ambiente di programmazione pone delle difficoltà che si riescono a superare solo se si è fortemente motivati.

Purtroppo più di darti una mano se hai problemi noi del forum non possiamo fare. Come scrissi su alcuni post, purtroppo c'è un percorso da fare e un pegno da pagare e bisogna essere convinti di sostenerli entrambi.

Se fai un giretto alla base della montagna avrai comunque visto un bellissimo posto e con un dispendio di energie contenuto. Ma solo se avrai l'ardire di scalarla la montagna con grosso dispendio di energie potrai avere il "massimo".

Ciao
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: casey - Marzo 30, 2022, 07:15:10 pm
scusami, ma questi pacchetti non dovevano essere già aggiunti installando zeos,
e quindi solo richiamati con uses?

.......................................

e poi non ho mai amato i software che pesano diversi giga.

Per quello che riguarda l'uso di "pacchetti", non è dissimile da gli altri linguaggi: le uses servono al compilatore per la definizione degli "oggetti", delle variabili, delle dichiarazioni, etc ....
L'inserimento nel "pacchetto richiesto" invece è necessario normalmente per componenti già compilate, altrimenti TUTTO dovrebbe essere ricompilato ogni volta: non è equivalente la compilazione di un pacchetto a se stante rispetto alla compilazione o al semplice riferimento (USES) di una unità anche se precompilata.

Chi programma in Lazarus, Delphi o altri linguaggi come anche Visual Studio è abituato a ciò.

Per quello che riguarda invece il pieno schermo del terminale o meno, è una problematica relativa al sistema operativo e a come il software compilato (in questo caso da Lazarus) usa il terminale.

Per quello che riguarda Lazarus sotto Windows 11, con una applicazione console, premendo ALT INVIO a me il terminale si pone a pieno schermo.

Discorso invece QB64 (che non conosco, però immagino sia un discendente di QBasic o di GWBasic): il fatto che uno si trovi bene in un ambiente o l'altro, o che piaccia un linguaggio o l'altro coinvolge diversi aspetti, primo dei quali è la sua conoscenza dell'ambiente e del linguaggio.

Ci sono decine, anzi centinaia di linguaggi (ovviamente stiamo parlando di programmazione) e sono nati proprio dall'insoddisfazione di quelli che già c'erano oppure dalla volontà di creare un proprio paradigma di programmazione (magari legato a scopi specifici come hardware, SO, etc...).

A differenza di tutti gli altri linguaggi di programmazione, che penso tutti noi abbiamo usato più di qualche volta (e che mi tocca usare ancora ogni tanto), il Pascal è un linguaggio strutturato e fortemente tipizzato (non è così invece il QB64, almeno se mantiene i canoni del Basic).

"Fortemente tipizzato" significa (in breve) che qualunque dato tu maneggi, il compilatore deve conoscerne le caratteristiche, in poche parole deve essere dichiarato "prima" e le sue caratteristiche non devono cambiare nel corso del programma. Una variabile dichiarata DOUBLE sarà DOUBLE per tutta la sua esistenza, e per essere usata dovrà essere compatibile con gli argomenti in cui verrà usata. Un array di interi rimarrà un array di interi, magari il un numero di elementi che varia nel corso del programma ma sempre di interi rimarrà.

Tralasciando lo "furbate" e le tecniche avanzate, ciò significa che devi avere chiaro quello che c'è da fare in quanto devi definire TUTTO ed è molto più "certo" ciò che ottieni. In fase di "debug", aggiornamento del codice, ampliamento, etc ...., sarà tutto molto più semplice.

Faccio un esempio su tutti: in Basic (A = B) può voler dire più di una "cosa" ....., assegnazioni e confronti (alla base del linguaggio) che si mischiano ....

Và bhe, sono state scritte pagine di trattati su questi argomenti, e tediare la ns. platea non mi sembra il caso.

Io ho usato prevalentemente il Pascal, anche se sono nato con il C (come la stragrande maggioranza di quelli della mia generazione), e devo dire che la programmazione in Pascal non ha trovare un paragone decente in altri linguaggi. Ma questo forse è dovuto dalla mia "forma mentis" ormai plasmata su ciò.

Poi devo dire sinceramente che avendo sviluppato prevelentamente sotto Windows, Delphi mi è stato da maestro e non c'era storia tra il VB6 ed il Delphi .... la velocità con cui creavi programmi e la facilità soprattutto con Delphi e la sua barra dei componenti già piena zeppa di oggetti di uso comune.

Comunque non posso giudicare QB64 perchè non lo conosco, ma ho come l'impressione che sia una specie di "ambiente" tipo "DEV C++" .... che è fatto in Delphi .... (QB64 sarà fatto in C++ immagino).

Lazarus incarna il concetto di Pascal: ogni versione nuova viene compilata con quella precedente ed è praticamente in puro Pascal.

Lazarus ha dei meriti, e anche delle sue criticità e, su questo sono d'accordo con te, conoscere linguaggio ed ambiente di programmazione pone delle difficoltà che si riescono a superare solo se si è fortemente motivati.

Purtroppo più di darti una mano se hai problemi noi del forum non possiamo fare. Come scrissi su alcuni post, purtroppo c'è un percorso da fare e un pegno da pagare e bisogna essere convinti di sostenerli entrambi.

Se fai un giretto alla base della montagna avrai comunque visto un bellissimo posto e con un dispendio di energie contenuto. Ma solo se avrai l'ardire di scalarla la montagna con grosso dispendio di energie potrai avere il "massimo".

Ciao

per l'errore Error: Undefined symbol: WSregister....  hai idea del motivo?

Ovviamente bisogna essere molto motivati come dici tu,
e per tornare al top come i bei tempi, dovrò impegnarmi moltissimo.
Sono anche combattuto se buttarmi su lazarus che mi piace molto, o dedicarmi ad altri linguaggi come C# python e Java, che ormai sono quelli più usati,
C# è il nuovo JAVA, JAVA è quello più richiesto nel mondo del lavoro, e python anche se è interpretato, è però un linguaggio semplice, immediato, ed è molto potente,
è un linuaggio ricco, e devo dire che mi appassiona molto.
Per il web voglio studiarmi bene PHP e JAVASCRIPT,
e forse nel 2023 sarò pronto per riprendere a livello professionale,
al momento me la cavicchio, ma ho parecchie lacune.

Cmq si, QB64 è la versione free e moderna di QuickBasic, con tante aggiunte ovviamente,
compila i vecchi programmi scritti in QB senza alcuna modifica al codice,
è scritto in C++, ed in pratica traduce i programmi QB in C++ e poi li compila con GCC/MINGW
multipiattaforma, a 64bit, ed è molto veloce,
è un pò come il free pascal, ma più semplice, e permette anche di usare librerie di C++, SQL, ecc.
Per fare programmi Console lo trovo perfetto,
purtroppo non ha un progetto come Lazarus dietro, e quindi conviene utilizzarlo solo per programmi console.
Anche FreeBasic è interessante, ma a differenza di QB64, la sintassi cambia,
è più simile al C, e anche le variabili vanno dichiarate prima, ma resta possibile lo stesso compilare i programmi scritti in QB lanciando il compilatore con il parametro -lang qb.
Il compilatore di FreeBasic è molto veloce, multipiattaforma, compila persino per l'ormai inutile DOS, a 32 bit usando l'extender cwsdpmi come il free pascal, mettendosi così alle spalle il limite della memoria convenzionale.
Come velocità, sembra essere persino più veloce del QB64,
e incredibile ma vero, le prime veraioni sobo state acritte con Visual Basic 1.0 per DOS,
che con la versione 1.0 aveva sostituito proprio il QB Microsoft originale,
poi ovviamente Visual Basic nelle versioni successive, funzionava solo su windows.
Purtroppo nemmeno FreeBasic ha alle spalle progetti come Lazarus,
ed è un vero peccato, perchè sono linguaggi molto validi,
e sarebbe stato bello avere una specie di Visual Basic GPL multipiattaforma.
Titolo: Re:conversione archivio dbf (dbase III plus) a sqlite
Inserito da: DragoRosso - Marzo 30, 2022, 11:05:03 pm
per l'errore Error: Undefined symbol: WSregister....  hai idea del motivo?

No, così non mi dice nulla. Riporta l'errore completo, oppure una schermata dell'errore.

Ciao