Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   problema en for (https://www.clubdelphi.com/foros/showthread.php?t=69656)

julyus 31-08-2010 18:17:02

problema en for
 
no se que es este tipo de error ?? este codigo me produce el siguiente error e2081 FOR-loop variable i count :confused::confused::confused:


Código Delphi [-]
  for iCount := 0 to Length(aEventCode) - 1 do
        begin
          if aEventCode[iCount] = 1 then
          begin

            inc(iMessageId);
          end;
        end;

Casimiro Notevi 31-08-2010 18:27:51

¿Y qué es aEventCode y iMessageId?

ecfisa 31-08-2010 18:33:09

Hola julius.

e2081 FOR-loop variable i count: "Es ilegal para asignar un valor a la variable de bucle de control dentro del bucle for."
Pero evidentemente no es ese el problema...

¿ Podrías especificar de que tipo son las variables: aEventCode e iMessageId ?

Saludos.

julyus 31-08-2010 18:33:31

hola casimiro
 
aEventCode es un array dinamico

iMessageId es una varibale que debo auto incrementar
cuando aEventCode[iCount] = 1


for iCount := 0 to Length(aEventCode) - 1 do
begin
if aEventCode[iCount] = 1 then
begin

inc(iMessageId);
end;
end;

ecfisa 31-08-2010 18:41:50

Hola julyus

Algo así pensé que era, te pongo la prueba que hice a ver si te orienta.(No dá ningún error)
Código Delphi [-]
...
var
  iMessageId: Integer;
implementation

procedure Prueba(aEventCode:array of Integer);
var
  iCount: Integer;
begin
  for iCount := 0 to Length(aEventCode) - 1 do
  begin
    if aEventCode[iCount] = 1 then
    begin
      inc(iMessageId);
    end;
  end;
end;

llamada:
Código Delphi [-]
    iMessageId:= 0;
    Prueba([1,2,1,3]);
    ShowMessage(IntToStr(iMessageId));// ok, muestra 2

Seguramente hay algo más involucrado que está provocando el fallo.
Si es una funcion/procedimiento: ¿ que parámetro pasas al llamarla ?

Saludos.:)

Casimiro Notevi 31-08-2010 19:00:33

¿Y cuánto vale Length(aEventCode) ?

Si lo que quieres es el mayor valor de aEventCode entonces será mejor usar high.

High(aEventCode)

Lord Delfos 31-08-2010 19:28:44

Otra cosa más, que probablemente no sea... :)

¿La variable iCount está declarada en el mismo procedimiento que el for? No puede estar afuera, digamos ser global.

ecfisa 31-08-2010 20:05:50

Hola.

Mirando el código da la impresión que aEventCode es un parámetro de tipo arreglo, conteniendo códigos de algún evento.
Y que la intención es verificar aquellos que han generado un codigo '1' para obtener la sumatoria de ocurrencias de dichos eventos ...

No se me había ocurrido la posibilidad de que iCount fuese global, pero como bién ponés arriba, no genera error dentro del for.
Aunque es para tomarlo en cuenta, ya que el for altera su valor y podría generarlo después ...

Creo que tendremos que esperar la respuesta de Julyus. :)

Saludos.

Al González 31-08-2010 22:11:08

Veo que de algunas versiones de Delphi a la fecha los mensajes de error y de advertencia del compilador llevan una clave.

julyus no ha puesto el mensaje de error exacto (según veo RAD estudio facilita copiar estos mensajes usando un simple Ctrl+C) ni tampoco nos ha mostrado las suficientes líneas de su rutina, por ello resultó difícil ayudarle.

El código de error E2081, corresponde, según arroja una simple búsqueda en Google, al intento por asignar valor a la variable de control del For dentro del propio ciclo. Impedimento que existe en el compilador de Borland desde hace muchos años, dado por la optimización que éste hace de los ciclos For.

http://docs.embarcadero.com/products...p_var_xml.html

Un saludo.

Al González. :)


La franja horaria es GMT +2. Ahora son las 11:00:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi