Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error: Array type required??? (https://www.clubdelphi.com/foros/showthread.php?t=67969)

Jhonjhon_123 17-05-2010 01:56:21

Error: Array type required???
 
Hola!

Soy un novato en esto, pero bueno, me explicare lo mejor ke pueda.

miren, tengo una funcion Split que simula el Split de VB, la cual usa esto:

Código Delphi [-]
type
        TStringArray=array of string;

ahora, tengo ke esos datos llegan y se agregan a un ListView:

Código Delphi [-]
                with LV_Servers.Items.Add do
                begin
                Caption := Data[1];
                 SubItems.Add(Socket.RemoteAddress);
                 SubItems.Add(Data[2]);
                end;

La cosa es ke cuando le intento correr me salta error 'Array type required' en todas los lineas donde ponga 'Data[X]' como en 'Caption := Data[1]'.

Sabiendo ke Data es:

Código Delphi [-]
var
        Data: TStringArray;

Como soluciono esto?

Lord Delfos 17-05-2010 05:40:13

Eso es porque "Data" es un miembro de TListItem. Al estar dentro del bloque "with", el compilador busca el identificador "más cercano", que en este caso es la porpiedad Data de TListItem (que es lo que devuelve el LV_Servers.Items.Add) y no la variable Data que vos declaraste.

De más está decir, el TListItem.Data no es un arreglo, de ahí que el compilador te diga que requiere un arreglo.

Para solucionarlo, pues simple, hacé algo como esto:

Código Delphi [-]
with LV_Servers.Items.Add do
  begin
  Caption:= Unit1.Data[1]; //<-- Donde, lógicamente, unit1 es el nombre de la unidad actual.
  SubItems.Add(Socket.RemoteAddress);
  SubItems.Add(Data[2]);
  end;

Jhonjhon_123 17-05-2010 22:07:52

pero cuando la variable Data esta en un procedimiento, como se llamaria?

Lord Delfos 17-05-2010 23:54:55

Ahí creo que estás frito... Tendrás que cambiar el nombre de la variable Data o no usar el "with" o dejar esa linea afuera del with... No le veo otra solución.

Jhonjhon_123 18-05-2010 00:07:54

Perfecto, me funcionono, gracias!


La franja horaria es GMT +2. Ahora son las 00:17:59.

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