PDA

Ver la Versión Completa : funcion arrays


fabian20s
18-07-2005, 23:53:34
quisiera saver cual es l afuncion de almacena en un arrays todos los datos de un tedit que esten seguidos de una coma o un espacio

por ejemplo

edit.text := '1,2,3,4,5'

y que la funcion debuelva

i1=1;
i2=2;
i3=3;
i4=4;
i5=5;

mamcx
19-07-2005, 01:53:41
Mira en TStringList la propiedad Delimiter (Creas el TStringList, le pones Delimiter = "," y luego asignas el texto)

dec
19-07-2005, 03:51:21
Hola,

Cabe añadir a lo dicho por mamcx que la clase "TStringList" cuenta con una propiedad "CommaText", la cual te valdrá perfectamente si los elementos en cuestión se separan por comas. Si se separan por espacios puedes tomar nota de lo dicho por mamcx.

Por otro lado, una función no puede devolver un "array of string" sin más, como podrás ver si lees el siguiente hilo (http://www.clubdelphi.com/foros/showthread.php?t=17872&highlight=devolver+array) de estos mismos foros. Sin embargo, según lo que puede leerse en el referido hilo y en función de lo dicho por mamcx podría hacerse algo así:


type
TArrayOfString = array of string;

function CommaTextToArrayOfString(commaText: string) : TArrayOfString;
var
i: integer;
t: TStrings;
begin
t := TStringList.Create;
try
t.CommaText := commaText;
SetLength(Result, t.Count);
for i := 0 to t.Count-1 do
Result[i] := t[i];
finally
t.Free;
end;
end;

// Ejemplo de llamada a la función
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: TArrayOfString;
begin
s := CommaTextToArrayOfString(Edit1.Text);
// Solo a efectos de prueba...
for i := 0 to High(s) do ShowMessage(s[i]);
end;

Empero, puede que te fuera suficiente algo así para utilizar los distintos elementos que separados por comas se encuentren en un "TEdit" por seguir con tu ejemplo:


procedure TForm1.Button2Click(Sender: TObject);
var
t: TStrings;
begin
t := TStringList.Create;
try
t.CommaText := Edit1.Text;
// En "t" tienes ahora todos
// los elementos de "Edit1"
{...}
finally
t.Free;
end;
end;

En fin, si lo inmediatamente anterior te fuera suficiente, te ahorrarías el enjendro que me salió antes. Creo que, en todo caso, ya tienes información para lograr tu objetivo. Si me equivoco hazlo saber.

fabian20s
19-07-2005, 17:06:34
grasias ya solucione mi problema