Italian community of Lazarus and Free Pascal

Presentazioni => Presentazioni nuovi utenti => Topic aperto da: petrusic - Dicembre 23, 2020, 12:32:52 pm

Titolo: ciclo repeat non mi funziona
Inserito da: petrusic - Dicembre 23, 2020, 12:32:52 pm
Qualcuno mi aiuta a capire percè il seguente gruppo di istruzioni mi da errore in compilazione?:
Codice: [Seleziona]
procedure TForm411.LavvisoClick(Sender: TObject);
var
  indx: TComponent;

  k: Integer;

  xSel: String;

begin                     
for k:= 0 to 8 do
  begin
   if (k = Lavviso.Tag - 1) then
   begin
    EdigNum.Enabled:= True;
    writeln('EdigNum.Text = |' + EdigNum.Text + '|  prima della modifica');
    EdigNum.Text:= (tbIndCompo[k] as TEdit).Text;
    writeln('EdigNum.Text = |' + EdigNum.Text + '|  dopo la modifica');
     if (k < 8) then
     begin

      repeat
        (tbIndCompo[k] as TEdit).Text := (tbIndCompo[k + 1] as TEdit).Text;
        writeln('EmioNum[' + IntToStr(k) + ']-> |' + (tbIndCompo[k] as TEdit).Text + '|');
        k:= k + 1;
      until(k >= 7);

     end;
     (tbIndCompo[8] as TEdit).Text:= '';
   end;
  end;           
L'errore prodotto è
Citazione
carnumgioca.pas(238,9) Error: Illegal assignment to for-loop variable "k"
-----------
l'istruzione (238) è "k:= k + 1;"


Francamente non capisco perchè. Ho riscontrato lo stesso procedimento anche in diversi esempi  letti sul web, fra cui questo (http://www.lazaruspascal.it/index.php?page=15)
 ??? ::) :-[

Titolo: Re:ciclo repeat non mi funziona
Inserito da: bonmario - Dicembre 23, 2020, 12:55:12 pm
Ti da quell'errore, perché la variabile "k" la stai già usando per il ciclo for esterno. Questo non si può fare.

Ciao, Mario
Titolo: Re:ciclo repeat non mi funziona
Inserito da: petrusic - Dicembre 23, 2020, 05:33:08 pm
 :o
Grazie, non ci avevo proprio fatto caso.
Infatti, dopo avere cambiato variabile, funziona.
 :-[