Página 1 de 1

Prblema con (SetLength) DELPHI - Ayuda

Publicado: 06 Abr 2013, 22:05
por Nemesis
Hola mundo queria consultarles una duda :
Este code funciona bien muestra como mensaje 1234

procedure TForm1.Button1Click(Sender: TObject);
var
texto: string;
begin
texto := '123456789';
SetLength(texto,4);
showmessage(texto);
end;
end.

Pero lo que quiero es meter el resultado de SetLength(texto,4) en una variable y mostralo en una mensaje pero me tira error

Alguien me ayuda.

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 06 Abr 2013, 22:33
por Fakedo0r
SetLength es un método y no una función para que te devuelva algo, sin embargo la variable que le pasas es por referencia y por lo tanto no te hará falta ningún retorno. En todo caso, no se si es lo que querias:
Var
  texto: String;
  texto2: String;
Begin
  texto := '123456789';
  SetLength(texto, 4);
  texto2 := texto;

  showmessage(texto2);

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 06 Abr 2013, 23:40
por Nemesis
Fakedo0r escribió:SetLength es un método y no una función para que te devuelva algo, sin embargo la variable que le pasas es por referencia y por lo tanto no te hará falta ningún retorno. En todo caso, no se si es lo que querias:
Var
  texto: String;
  texto2: String;
Begin
  texto := '123456789';
  SetLength(texto, 4);
  texto2 := texto;

  showmessage(texto2);

Lo que tu hicistes es lo mismo lo que yo hice en el post hermano .Lo que quiero hacer es lo siguiente pero me da error :


procedure TForm1.Button1Click(Sender: TObject);
Var
texto: String;
texto2: String;
begin
texto := '123456789';
texto2:= SetLength(texto, 4);

showmessage(texto2);

end;

end.

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 06 Abr 2013, 23:47
por Fakedo0r
Nemesis escribió:
Fakedo0r escribió:SetLength es un método y no una función para que te devuelva algo, sin embargo la variable que le pasas es por referencia y por lo tanto no te hará falta ningún retorno. En todo caso, no se si es lo que querias:
Var
  texto: String;
  texto2: String;
Begin
  texto := '123456789';
  SetLength(texto, 4);
  texto2 := texto;

  showmessage(texto2);

Lo que tu hicistes es lo mismo lo que yo hice en el post hermano .Lo que quiero hacer es lo siguiente pero me da error :


procedure TForm1.Button1Click(Sender: TObject);
Var
texto: String;
texto2: String;
begin
texto := '123456789';
texto2:= SetLength(texto, 4);

showmessage(texto2);

end;

end.
Te repito amigo, el SetLength es un método y no tiene retorno, no puedes hacerlo así, pero como acepta el argumento como referencia, ya no te hace falta guardar en ningún lado, en todo caso te lo había dejado la única forma de hacerlo.

Saludos.

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 07 Abr 2013, 00:06
por Nemesis
Ya lo pude hacer lo que no queria era no tocar el string original osea texto := '123456789'

procedure TForm1.Button1Click(Sender: TObject);
Var
recorte:string;
texto: String;
texto2: String;
Begin
texto := '123456789';
recorte:=texto;
SetLength(recorte, 4);
texto2 := texto;

showmessage(recorte);
end;

end.

Gracias por tu colaboracion

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 07 Abr 2013, 00:11
por Fakedo0r
Nemesis escribió:Ya lo pude hacer lo que no queria era no tocar el string original osea texto := '123456789'

procedure TForm1.Button1Click(Sender: TObject);
Var
recorte:string;
texto: String;
texto2: String;
Begin
texto := '123456789';
recorte:=texto;
SetLength(recorte, 4);
texto2 := texto;

showmessage(recorte);
end;

end.

Gracias por tu colaboracion
Vaya, pues te habías explicado mal. En fin. Saludos.

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 07 Abr 2013, 00:13
por orlando9427
Usa la función Copy
Parametros
1. Array o string
2. Index de inicio
3. Numero de caracteres a copiar

Tu código sería
Texto2 := Copy(Texto, 1, 4)
SetLength es solo para inicializar array o string cuando deseas copiar algo a ellas por medio de direcciones de memoria.
Saludos!

Re: Prblema con (SetLength) DELPHI - Ayuda

Publicado: 07 Abr 2013, 01:25
por Nemesis
orlando9427 escribió:Usa la función Copy
Parametros
1. Array o string
2. Index de inicio
3. Numero de caracteres a copiar

Tu código sería
Texto2 := Copy(Texto, 1, 4)
SetLength es solo para inicializar array o string cuando deseas copiar algo a ellas por medio de direcciones de memoria.
Saludos!

Gracias Orlando Copy me Facilita la cosa