Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: DragoRosso - Dicembre 02, 2024, 12:17:48 pm

Titolo: Nuova direttiva Pascal
Inserito da: DragoRosso - Dicembre 02, 2024, 12:17:48 pm
Ciao a tutti,
oggi mi sono imbattuto in una nuova (almeno per me) direttiva del Pascal (implementata sia in FPC che in Delphi).

Si usa così:

Codice: [Seleziona]
procedure Non(t: integer);  experimental;
var Prova: integer experimental;

Questa direttiva"experimental" fà si che venga emesso un Warning in fase di compilazione, riportando l'attenzione sul fatto che quei metodo / variabile sono "sperimentali" ossia non stabili.

E' interessante, perchè io ora usavo solo commenti nel codice (quindi per cercare qualcosa di simile dovevo andare a cercare una stringa standardizzata nel codice ...) mentre così vieni avvertito ad ogni compilazione che c'è qualcosa da sistemare.

Come riferimento, premete F1 dal vostro IDE sulla parola "experimental" ... non sono riuscito a trovare in rete un riferimento.

E' incredibile come non si finisca mai di imparare.
Titolo: Re:Nuova direttiva Pascal
Inserito da: quack - Dicembre 02, 2024, 07:47:25 pm
Avvista per la prima volta sul forum internazionale qualche tempo fa

https://forum.lazarus.freepascal.org/index.php/topic,67563.msg520280.html?PHPSESSID=n3q4ukjtlrpbb5cjo8ncjh25r1#msg520280 (https://forum.lazarus.freepascal.org/index.php/topic,67563.msg520280.html?PHPSESSID=n3q4ukjtlrpbb5cjo8ncjh25r1#msg520280)

Nella documentazione di FPC si trova qualcosa ma non ho approfondito

http://downloads.freepascal.org/fpc/docs-pdf/ref.pdf (http://downloads.freepascal.org/fpc/docs-pdf/ref.pdf)

Saluti
Titolo: Re:Nuova direttiva Pascal
Inserito da: nomorelogic - Dicembre 03, 2024, 09:19:42 am
non la conoscevo assolutamente

ho trovato anche questi link

https://www.freepascal.org/docs-html/current/ref/refsu3.html (https://www.freepascal.org/docs-html/current/ref/refsu3.html)
https://wiki.freepascal.org/modifier (https://wiki.freepascal.org/modifier)
https://wiki.freepascal.org/Hint_Directives (https://wiki.freepascal.org/Hint_Directives)

che di fatto sono le stesse informazioni del pdf segnalato da quack
Titolo: Re:Nuova direttiva Pascal
Inserito da: DragoRosso - Dicembre 03, 2024, 09:43:47 am
Nella documentazione di FPC si trova qualcosa ma non ho approfondito

E' esattamente ciò che propone l'help di Lazarus premendo F1.

Inoltre si possono osservare anche altre direttive, alcune note (come "deprecated", "platform") altre altrettanto sconosciute ("unimplemented").

Visto che siamo a livello di direttive, consiglio di inserire nel Vs. codice questa direttiva:

Codice: [Seleziona]
//Per Delphi
{$WARN BOUNDS_ERROR ERROR}

//Per Lazarus
{$WARN 4110 ERROR}

Ciò consente di trattare le operazioni miste tra UINT e INT come errori a livello di compilazione.

Qualcuno dirà che ci si và a complicare la vita ... non è così in realtà.

Provate a usare Int($8000_0000) e DWord($8000_0000) e vedrete la differenza.

Fate girare questo codice, e vedrete il risultato ... i matematici inorridiranno per ciò (e non solo loro):

Codice: [Seleziona]
const
  A = Integer($80000000);
  B = DWORD($80000000);
  C = $80000000;
  //D = MINLONG;

procedure HandleInteger(Value:Integer);
begin
  Writeln(Value);
end;

procedure HandleDWORD(Value:DWORD);
begin
  Writeln(Value);
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  HandleInteger(A);
  HandleInteger(B);
  HandleInteger(C);
  //HandleInteger(D);
  HandleDWORD(A);
  HandleDWORD(B);
  HandleDWORD(C);
  //HandleDWORD(D);
end;

P.S. questo è il risultato:

Citazione
-2147483648
-2147483648
-2147483648
2147483648
2147483648
2147483648

Come vedete, lasciando al compilatore la scelta accade che un numero negativo diventa positivo .... e non dico altro.
Certo, il compilatore avverte che stà facendo di testa sua, ma sia in Lazarus che in Delphi molte volte gli avvisi e i suggerimenti sono MOLTEPLICI (anche a causa dei pacchetti di terze parti)  e non si ha la pazienza di verificarli tutti sempre.

Inserendo il $WARN sopra indicato evitiamo che il compilatore faccia di testa sua in questi casi.

Ciao
Titolo: Re:Nuova direttiva Pascal
Inserito da: xinyiman - Dicembre 03, 2024, 09:59:07 am
Figo, non la conoscevo. Molto utile.