Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [Delphi] Ciclo For

  1. #1

    [Delphi] Ciclo For

    Salve
    ho la seguente procedura:

    procedure TForm1.Button1Click(Sender: TObject);
    var mo,scaled_i, scaled_h: real;
    begin
    for i:=0 to l do
    paintbox1.Refresh;
    PaintBox1.Canvas.MoveTo(0,0);

    x:=i;
    m:= (t * x) - (q * x * x) / 2;

    scaled_i :=round((l * 449) / 449);
    scaled_h :=round((m * 297) / 297);
    PaintBox1.Canvas.LineTo(round(scaled_i),round(scal ed_h));

    memo1.Lines.Clear;
    memo1.Lines.Add(formatfloat('0.00',m));
    end;
    end.

    solo che quando avvio il progr, mi da il seguente errore evidenziando il ciclo for:

    [Warning] Unit1.pas(58): For loop control variable must be simple local variable

    potreste dirmi dove sbaglio cortesemente?
    grazie mille
    carmelo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Re: [Delphi] Ciclo For

    Originariamente inviato da carmelo81
    [Warning] Unit1.pas(58): For loop control variable must be simple local variable
    potreste dirmi dove sbaglio cortesemente?
    E' preferibile che la variabile utilizzata per il ciclo for, quella che assume il valore incrementato ad ogni iterazione, sia una variabile locale alla procedura.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ciao Alka chissā se mi aiuteresti a risolvere il restante problema:
    Ho queste procedure:

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    q:=strtofloat(edit1.Text);
    t:=((q*l) / 2);
    end;

    procedure TForm1.Edit2Change(Sender: TObject);
    begin
    l:=StrTofloat(edit2.Text);
    t:=((q*l) / 2);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
    for i :=0 to round(l) do begin

    m:= (t * i) - (q * i * i) / 2;
    scaled_i :=round((l * image1.Width) / l);
    scaled_h :=round((m * image1.Height) / m);

    Image1.Refresh;
    Image1.Canvas.MoveTo(0,0);
    Image1.Canvas.LineTo(round(scaled_i),round(scaled_ h));
    memo1.Lines.Clear;
    memo1.Lines.Add(formatfloat('0.00',m));
    end;
    end;
    end.

    praticamente quando clicco il Button, la procedura dovrebbe calcolare il valore m per i che assume un valore variabile da 0 a l, ovvero tanti valori di m tanti quanti sono i valori di i.
    il valore di m assumerā valori da m=0 fino ad un massimo per i:=l/2, per poi riscendere a m=0.
    solo che quando avvio tale procedura il valore di m č sempre = 0 e successivamente quando con il comando canvas cerco di stampare il grafico parabolico di m, n mi visualizza nulla!!!
    Se sono stato abbastanza chiaro, mi aiuteresti a stampare tale grafico?
    inoltre, come posso visualizzare sul tmemo tutti i valori di m per sapere quanto valgono???
    ciao e grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da carmelo81
    ciao Alka chissā se mi aiuteresti a risolvere il restante problema [...]
    Scusami ma non ho il tempo materiale necessario di copiare il tuo codice (introducendo anche le parti mancanti) per verificare cosa non va.

    Originariamente inviato da carmelo81
    praticamente quando clicco il Button, la procedura dovrebbe calcolare il valore m per i che assume un valore variabile da 0 a l, ovvero tanti valori di m tanti quanti sono i valori di i.
    il valore di m assumerā valori da m=0 fino ad un massimo per i:=l/2, per poi riscendere a m=0.
    Supponendo che questo sia il comportamento che ti aspetti......

    Originariamente inviato da carmelo81
    solo che quando avvio tale procedura il valore di m č sempre = 0 e successivamente quando con il comando canvas cerco di stampare il grafico parabolico di m, n mi visualizza nulla!!!
    Metti dei punti di interruzione (breakpoint) sulla riga che genera il valore di m e soffermati con il mouse sulle variabili per verificare il valore che assumono ad ogni esecuzione del ciclo controllando che siano esattamente quelli che ti aspetti tenendo per buono l'algoritmo che mi hai descritto poco fa, che č ciō che ti aspetti di ottenere dal programma.

    Originariamente inviato da carmelo81
    inoltre, come posso visualizzare sul tmemo tutti i valori di m per sapere quanto valgono???
    Non l'hai giā fatto? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.