* * * *

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 03, 2025, 04:29:06 am

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

176 Visitatori, 0 Utenti

Post recenti

Pagine: 1 ... 7 8 [9] 10
81
Generale / Re:Inizializzazione array di record
« Ultimo post da nomorelogic il Marzo 10, 2025, 04:35:50 pm »
infatti non so se ho capito il problema
comunque, con l'occasione, questo è il link della documentazione ufficiale

(cercate la sezione "Dynamic array constructor")

https://www.freepascal.org/docs-html/ref/refsu14.html#x38-520003.3.1
82
Generale / Re:Inizializzazione array di record
« Ultimo post da DragoRosso il Marzo 10, 2025, 03:49:54 pm »
Quel "modo" di creare gli array, se si legge bene l'articolo, ha tutta una serie di controindicazioni. Prima di usarlo io ci penserei N (con N che tende all'infinito e oltre) volte ....

E' una mimica usata per il compilatore (ci sono diverse discussioni anche su Delphi) per consentire un uso simile al WriteLn(var1, var2, var3, var n) ...

Quando viene usato, non c'è modo di sapere da parte di chi riceve questo "array" (se si può chiamare tale) quanti elementi ci sono, è necessario conoscerli a priori (o ci devo abbinare qualche altro dato che mi informi su ciò).

Però, ammettendo che si voglia usare, non penso sia ancora quello che vuole @Cappe, magari mi sbaglio però ...

83
Generale / Re:Inizializzazione array di record
« Ultimo post da nomorelogic il Marzo 10, 2025, 03:36:30 pm »
se guardi nel link che ti ho indicato c'è questo pezzo di codice

Codice: [Seleziona]
type
  tConstArray  = array of TVarRec;
 
[...]

var
  x: TConstArray;
  y: TConstArray =
  (
    (vtype : vtChar;    vchar : '1'),
    (vtype : vtInteger; vinteger : 1),
    (vtype : vtPointer; vpointer : nil)
  );
 


non so se funziona (oggi non riesco a provare in quanto sono in giro)
ma pensavo tu intendessi qualcosa del genere

Codice: [Seleziona]

x:= TConstArray.Create (
 
         (
            (vtype : vtChar;    vchar : '1'),
            (vtype : vtInteger; vinteger : 1),
            (vtype : vtPointer; vpointer : nil)
          )

);


84
Generale / Re:Ora durante il cambio legale / solare (DST)
« Ultimo post da bonmario il Marzo 10, 2025, 12:54:02 pm »
Grazie ... ci ho dovuto pensare almeno 5 minuti per ricordarmi di questa cosa !!!

85
Generale / Ora durante il cambio legale / solare (DST)
« Ultimo post da DragoRosso il Marzo 10, 2025, 12:28:27 pm »
@bonmario

Se non sbaglio (ho provato a cercare ma non ho trovato la discussione), avevi segnalato una anomalia sull'orario di salvataggio (o confronto) dei file sui server tramite una applicazione Lazarus. Ciò accadeva in concomitanza del cambio DST.

Hanno riportato qui una segnalazione di anomalia sulla funzione NOW nei programmi "Lazarus" che rimangono attivi durante il cambio ora: https://forum.lazarus.freepascal.org/index.php/topic,70477.0.html

In pratica l'ora generata dalla funzione NOW (usata dal programma) non viene aggiornata se il software stà girando durante il cambio ora. E' necessario ricaricare le impostazioni locali per poter aggiornare l'ora usata dal programma, oppure usare dei "trucchi" per usare l'ora aggiornata al posto di NOW (in pratica non viene usata la funzione NOW ma altre funzioni che calcolano l'ora in altro modo).

Non è dato sapere su quale SO sia stato rilevato ciò, in UNIX (e quindi anche in Linux ?) c'è una funzione specifica per allineare l'ora: "ReReadLocalTime()"

Penso sia utile sapere ciò per chi crea programmi Server che sono sempre attivi.

Ciao
86
Generale / Re:Inizializzazione array di record
« Ultimo post da cappe il Marzo 10, 2025, 11:39:31 am »
Forse non mi sono spiegato bene. Io un array di stringhe posso inizializzarlo così:
Codice: [Seleziona]
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Sysutils,
  Classes
  { you can add units after this };

var
  c : TStringArray;
begin
  c := TStringArray.Create('eee', 'rrr');
end.
                   

Però non riesco a farlo con un array di record

P.S. @nomorelogic  esempio interessante
87
Generale / Re:Inizializzazione array di record
« Ultimo post da nomorelogic il Marzo 10, 2025, 10:27:28 am »
forse vuoi usare la .Create con la sintassi che si usa per le costanti tipizzate?

https://forum.lazarus.freepascal.org/index.php/topic,61986.msg468094.html#msg468094
88
Generale / Re:Inizializzazione array di record
« Ultimo post da cappe il Marzo 09, 2025, 04:08:58 pm »
Ti ringrazio della risposta, ma non è quello che cercavo. Cercherò e se trovo Vi saprò dire.
Capisco i tuoi esempi, es è come ho fatto fin'ora, ma volevo fare come nell'esempio scritto sopra , ripeto con TStringArray funziona e non so come fare (o non mi ricordo) con gli array di record.

Grazie a tutti.
89
Generale / Re:Inizializzazione array di record
« Ultimo post da DragoRosso il Marzo 09, 2025, 03:00:14 pm »
Ma scusa se fosse un TStringArray io posso fare così
begin
arr := TStringArray.create('eee','rrr');
end;
e funziona, ma con un array di record?

Se vuoi creare un array di stringhe costanti puoi farlo anche così:

Codice: [Seleziona]
var
 strarr: array of string = ['uno', 'due', 'tre'];

Per un array l'indicazione che pensavo di fornirti è creare una procedura di inizializzazione, ovviamente da chiamare per ciascun elemento. Non ho conoscenza di una procedura che consente di inizializzare a dei valori voluti un array di record.
Perchè farlo a differenza di quanto suggerito da @Narciso (fermo restando che và comunque bene anche la sua soluzione): perchè nel caso tu cambi la struttura puoi sfruttare la procedura per fare si che la compilazione non avvenga se non aggiorni l'inizializzazione. Io sui record uso molto spesso le procedure per inserire i dati, non inserisco i dati direttamente nei campi del record perchè se cambio qualcosa (refactoring) con le procedure ho una segnalazione di errore e ciò mi consente di modificare il codice a "colpo sicuro".

Esempio:

Codice: [Seleziona]
type
  RProva = record
    private
      fNome: string;
      fCognome: string;
    public
      procedure Init(const Nome: string; const Cognome: string);
  end;

....
....

procedure RProva.Init(const Nome, Cognome: string);
begin
  fNome := Nome;
  fCognome := Cognome;
end;

...
...

var
  Prova: array of RProva;
  //EDIT2: al posto della definizione di Prova in modalità classica, puoi usare anche i generici se ti piace di più, non cambia il codice:
  //Prova: TArray<RProva>;
  i: RProva;
begin
  SetLength(Prova, 10);
  for i in Prova do
     i.Init('Non usato', 'Non usato');
end;

Se aggiorno il record con ad esempio l'aggiunta di una data:
Codice: [Seleziona]
type
  RProva = record
    private
      fNome: string;
      fCognome: string;
      fDataNascita: TDate;
    public
      procedure Init(const Nome: string; const Cognome: string; DataNascita: TDate);
  end;

La compilazione mi genererebbe un errore ovunque usi la procedura Init, e così via ove usi le funzioni o procedure per inserire i dati (o anche per leggerli se fosse importante).
EDIT: per spiegare meglio, se uso direttamente i campi potrei dimenticare da qualche parte nel sorgente di settare la data di nascita senza che me ne accorga, e ciò non è bello ...

E' leggermente differente che usare i campi direttamente, ma questo è un mio modo di programmare, non deve essere preso assolutamente come campione.

Ciao
90
Generale / Re:Inizializzazione array di record
« Ultimo post da cappe il Marzo 09, 2025, 02:01:05 pm »
Ma scusa se fosse un TStringArray io posso fare così

begin
arr := TStringArray.create('eee','rrr');
end;

e funziona, ma con un array di record?
Pagine: 1 ... 7 8 [9] 10

Recenti

How To

Utenti
Stats
  • Post in totale: 19646
  • Topic in totale: 2356
  • Online Today: 183
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 176
Total: 176

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.