Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   error en funcion (https://www.clubdelphi.com/foros/showthread.php?t=66573)

diego007 26-02-2010 21:55:16

error en funcion
 
Hola Amigos, tengo la siguiente funcion que me da error, no se cual es el problema, asi que si podrian ayudarme:
Código Delphi [-]
procedure compara(Lista1:TStringList; Lista2: TStringList; var comparacion:TStringList);
var
K,L,M,Long,I,J:Integer;
Str, Str1:String;
begin
I:=0;
  while (I<=Lista1.Count-1) do begin
    Str:=Lista1.Strings[i];
    J:=0;
    while (J<=Lista1.Count-1) and (Lista1.Strings[i]<>Lista2.Strings[J]) do begin
      Str:=Lista2.Strings[J];
      J:=J+1;
    end;
    if (J<=Lista2.Count-1) then begin
      Lista2.Delete(J);
      Lista1.Delete(I);
    end
    else
      I:=I+1;
  end;
  //***********
  try
    comparacion.Destroy;
  finally
    comparacion.Create;
  end;
  Long:=Lista1.Count-1;
  for K := 0 to Long do begin
    Str1:='[deleted]: '+Lista1.Strings[K];
    comparacion.Append(Str1);
  end;
  Long:=Lista2.Count-1;
  for L := 0 to Long do begin
    Str1:='[new]: '+Lista2.Strings[L];
    //MatarProcesos(Lista2.Strings[L]);
    comparacion.Append(Str1);
  end;
  //***********
  Long:=comparacion.Count-1;
  Form1.ListBox1.Items.Clear;
  for M := 0 to Long do
    Form1.ListBox1.Items.Append(comparacion.Strings[M]);
  end;
  //************
end;
En el ultimo end me sale: ´.´ expected but ´;´ found
please, help me

delphi.com.ar 26-02-2010 21:59:16

Cita:

Empezado por diego007 (Mensaje 355270)
En el ultimo end me sale: ´.´ expected but ´;´ found

Simplemente te esta diciendo que esta esperando un "end." (fin de unidad) pero encontró un "end;" (fin de bloque). En tu caso en particular el problema lo tienes en el último for donde has puesto un end; supongo que queriendo cerrar el bloque del for pero no lo has abierto. Entonces el compilador entiende que ese end; es marca el fin del la función y luego encuentra otro end; que no espera.

Saludos!

diego007 26-02-2010 22:22:28

Si, eso mismo era, ya lo compile; pero cuando tiene que mostrar la informacion se suelga el programa y poniendo paso a paso la ejecucion me señana este sitio en azul:
for M := 0 to Long do
Que es el for que me comentaste antes
El error que sale es: access violation at address 00003133. Read of address 00003133
Cual sera el problema? yo creo que el codigo esta bien escrito

Neftali [Germán.Estévez] 02-03-2010 09:14:40

Es raro porque la línea del for no parece que deba fallar.

Este bloque es un poco raro y deberías corregirlo:

Código Delphi [-]
  try
    comparacion.Destroy;
  finally
    comparacion.Create;
  end;

Posiblemente te bastaría hacer un

Código Delphi [-]
  comparacion.Clear;

Si continuas con el inicial, al menos deberías hacer la creación correctamente:

Código Delphi [-]
  comparacion := TStringList.Create();

BrunoBsso 03-03-2010 01:25:29

Ya me mandó el código por MP y se lo arreglé.
El problema no era en ese trozo de código.
Si mal no recuerdo, era en la creación de otras 2 listas para compararlas y en la detección de los procesos.
Ya no se preocupen.
Igual estoy esperando a que me responda el MP a ver si le sirvió.

EDIT: Sí, le sirvió.


La franja horaria es GMT +2. Ahora son las 06:23:56.

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