Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   problemas con format y array!!! (https://www.clubdelphi.com/foros/showthread.php?t=3142)

adfa 23-08-2003 21:59:36

problemas con format y array!!!
 
Hola a todos:
Deseo formatear un cadena pero añadiendole los parmametros desde codigo y no me a salido.
Estoy intentando hacer algo por el estilo y no me da resultado, como seria la manera correcta.

var
palabra : string;
valores : string;
i : integer
begin
for i := 0 to 100 do
begin
palabra := palabra + ' %s '; //agrego los %s para sustituir
valores := valores + listbox1.items[i]; //armo la cadena con los
if i < 100 then valores := valores + ','; //valores
end;
showmessage(format(palabra,[valores]));
end;

No se si me explique bien.
Espero que alguien me pueda ayudar.
Desde ya gracias.

sanxpue 23-08-2003 23:02:25

Holas lo que pasa es que en tu codigo

Código:

  valores := valores + listbox1.items[i]; //armo la cadena con los
  if i < 100 then valores := valores + ','; //valores

showmessage(format(palabra,[valores]));

Estas regresando en valores un String
y que te pide es un array de const

que no es lo mismo

'A','B','C',....'X' a 'A,B,C,D....,X'

hagamos una funcion que se llame

Código:

Function RegCadena(Palabra,Clave : String); String;
Var
  I : Integer;
  Ctemp : String;
Begin
  Result := '';
  While Pos('%s',Palabra) <> 0 Do
  Begin
    I := Pos('%s',Palabra);
    Delete(Palabra,I,2);
    CTem := Copy(Valores,1,Pos(',',Valores)-1);
    Delete(Valores,1,Pos(',',Valores));
    Insert(Ctem,Palabra,I);
  End;
  Result := Palabra;
End;

Ahora en tu codigo quedaria asi

var
  palabra : string;
  valores : String;
  i : integer;
begin
  //aqui te recomiendo que uses el listbox1.items.Count-1
  // por que sabras cuantos Items tiene tu listbox
  //por que si usas 100 puede ser que listbox1.items[100] no exista y te marque error
  for i := 0 to listbox1.items.Count-1 do
  Begin
    palabra := palabra + '%s'; //agrego los %s para sustituir
    valores  := Valores + listbox1.items[i]+','; //armo la cadena con los
  End;
  showmessage(RegLaCadena(palabra,Valores));
  //format(palabra,[Valores])
end;

esperando que sea de tu utilidad
Saludos desde Puebla MExico
asanxt@hotmail.com

jachguate 30-08-2003 03:18:29

pero si vas armando asi la cosa... no te daria lo mismo hacer:

Código:

Begin
  s := 'La cadena ' + NombreCadena +
        ' sera la misma, pero al Sr. ' + NombreProgramador +
        ' le costara mucho menos entender este ' + NombrePrograma;

nooo????

hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 13:00:38.

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