Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: alexarmato66 - Settembre 25, 2023, 07:59:29 am

Titolo: RISOLTO Compilazione e link
Inserito da: alexarmato66 - Settembre 25, 2023, 07:59:29 am
In un mio progetto ho notato che se uso i livelli di ottimizzazione 0 ed 1 il programma
restituisce valori non corretti in termini di calcolo ( numeri molto grandi).Se utilizzo dei livelli da 2 a 4 i risultati sono corretti.
Titolo: Re:RISOLTO Compilazione e link
Inserito da: alexarmato66 - Settembre 25, 2023, 08:51:50 am
Avevo banalmente dichiarato una variabile locale al posto di una globale. :-[
Titolo: Re:RISOLTO Compilazione e link
Inserito da: DragoRosso - Settembre 25, 2023, 09:21:29 am
Vai tranquillo, cose che succedono.

A me succede ogni tanto di usare classi non istanziate ....   ::) ;D

Sembra un pò stupida la cosa, ma provate a fare questo e vedrete che non vi accorgete dell'errore formale:
Codice: [Seleziona]
type
  TProva = class
    public
    nonusare: integer;
    procedure Metodo;
    procedure Calcola(a,b: integer);
  end;

var Prova: TProva;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Prova.Metodo;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Prova.Calcola(2,3);
end;               

procedure TProva.Metodo;
begin
  ShowMessage('Eccomi qua, anche se non sono istanziato ...');
end;

procedure TProva.Calcola(a,b: integer);
begin
  ShowMessage((a+b).ToString);
end;
In pratica create una nuova applicazione, inserite due pulsanti con i rispettivi eventi OnCLick, e copiate il codice qui sopra SENZA ISTANZIARE (cioè creare) la classe Prova.

Gira tutto, ed il motivo è che funzioni e procedure vengono allocate comunque anche se la classe non viene istanziata (diciamo che sono statiche). Invece, se cercate di usare le variabili interne (o anche altri dati della classe) senza avere istanziato la classe viene generata una eccezione, in quanto la memoria "di lavoro" non viene allocata senza istanza.

Ciao

P.S: ehmmm mancavano le implementazioni dei metodi  ::)
Titolo: Re:RISOLTO Compilazione e link
Inserito da: alexarmato66 - Settembre 26, 2023, 07:55:39 am
Molto interessante.Grazie DragoRosso.