Ir al contenido


Foto

[RESUELTO] Trae un resultado de una función?


  • Por favor identifícate para responder
19 respuestas en este tema

#1 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 29 noviembre 2009 - 04:34

Buenas noches a todos, soy brasileño, lo siento si mi español no es bueno ... Sólo los hechos.
Tengo un problema ... tengo dos cadenas A y B, la necesidad de comparar lo que está en la cadena es en cadena B si no jugaba el resultado en la cadena de C en la forma en folowing:
A String tengo estos datos

PORTA MALAS (S),
AIR BAG (4),
AR CONDICIONADO (S),
BANCO DE COURO (N),
DVD (N),
CADEIRINHA até 5 anos (S),
BAGAGEIRO teto (N)


String B tengo estos datos
PORTA MALAS
AIR BAG
AR CONDICIONADO
BANCO DE COURO


Van a tener que comparar los dos, tenga en cuenta que el A ya está formateado con el texto y comas. En B sólo tienen el nombre del primer texto en mayúsculas, ok ... Así que voy a aplicar el COMPARESTR (es una función que se publicará más adelante) para comparar A y B, y lo que no tiene en B devuelve la cadena C con el fin de CFE a continuación.

C String Return

item_novo DVD (N),
item_novo CADEIRINHA até 5 anos (S),
item_novo BAGAGEIRO teto (N)


La función que a fin de comparar entre A y B está aquí


delphi
  1. function CompareStr(const cEntrada,cCompare:String):String;
  2. var
  3.   lEntrada,lCompare,lSaida:TStrings;
  4.   i:Byte;
  5. begin
  6.   lEntrada:=TStringList.create;
  7.   try
  8.     lCompare:=TStringList.create;
  9.     try
  10.       lSaida:=TStringList.create;
  11.       try
  12.         lEntrada.CommaText:= CapturarUpper(cEntrada);
  13.         lCompare.CommaText:= cCompare;
  14.         for I := 0 to lEntrada.Count - 1 do
  15.         begin
  16.           if lCompare.IndexOf(lEntrada.Strings[i]) < 0 then
  17.             //lEntrada.CommaText := cEntrada;
  18.             lSaida.Add('Item_Novo'+' '+lEntrada.Strings[i]);
  19.         end;
  20.         result:=lSaida.Text;
  21.       finally
  22.         lEntrada.Free;
  23.       end;
  24.     finally
  25.       lCompare.Free;
  26.     end;
  27.   finally
  28.     lSaida.Free;
  29.   end;
  30. end;



Así que me di cuenta de que no llevaba a cabo, así que decidí crear una nueva función llamada CAPTURAUPPER para extraer sólo la cadena mayúscula



delphi
  1. function CapturarUpper(const AText: String): String;
  2. var
  3.   i, vLength: Integer;
  4.   vChar: Char;
  5. begin
  6.   Result := ' '; //aqui tem que ficar com este espaço para não ocorrer erro
  7.   vLength := Length(AText);
  8.   for i := 1 to vLength do
  9.   begin
  10.     vChar := AText[i];
  11.  
  12.     if (vChar in ['a'..'z', 'A'..'Z']) and (vChar = UpCase(vChar)) then
  13.     begin
  14.       Result := Result + vChar;
  15.     end
  16.     else
  17.     begin
  18.       if (Result[Length(Result)] <> ' ') then //aqui eu defino se vai haver espaço ou não entre os campos ' '
  19.         Result :=  Result + ' '; //aqui eu defino se vai haver espaço ou não entre os campos
  20.     end;
  21.   end;
  22.  
  23.   Result := Trim(Result);
  24. end;



Funciona tanto en la función normal, pero el problema es el regreso de la cadena, que no es devolver este formulario.

String C de Retorno

item_novo DVD (N),
item_novo CADEIRINHA até 5 anos (S),
item_novo BAGAGEIRO teto (N)


Pido ayuda de los colegas a ver si puedo resolver este problema.

Gracias a todos.

Atenciosamente,
Adriano.
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 29 noviembre 2009 - 06:35


Hola, no termino de entender.  Podrias colocar un ejemplo de lo que esperas y de lo que recibes actualmente???
  • 0

#3 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 29 noviembre 2009 - 06:57

Ok, vou escrever em portugues mesmo:

Tenho uma string assim "XMC"

xmc := ' componente adicionais(    '+
              ' PORTA MALAS (S),          '+
              ' AIR BAG (4),              '+
              ' AR CONDICIONADO (S),      '+
              ' BANCO DE COURO (N),        '+
              ' DVD (N),                  '+
              ' CADEIRINHA até 5 anos (S), '+
              ' BAGAGEIRO teto (N)        '+
              ' )';


E outra assim "XTZ"

xtz :=    ' PORTA MALAS          '+
              ' AIR BAG              '+
              ' AR CONDICIONADO      '+
              ' BANCO DE COURO        ';


Preciso comparar as duas strings e retornar a diferença em outra string assim
Tengo que comparar dos cadenas y devuelva la diferencia en otra cadena para

item_novo DVD (S),
item_novo CADEIRINHA até 5 anos (S),
item_novo BAGAGEIRO teto (N)


Espero que tenham entendido.
Espero que entiendas.
Grato.




  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 29 noviembre 2009 - 07:09

lo que él necesita es sacar la diferencia entre dos cadenas.
  • 0

#5 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 29 noviembre 2009 - 07:15

Sim, e trazer o resultado em outra string, da forma mostrada acima

Sí, y llevar el resultado a otra cadena de la forma indicada anteriormente

Tem que ser exatamente desta forma aqui

Tiene que ser exactamente como esta aquí

item_novo DVD (S),
item_novo CADEIRINHA até 5 anos (S),
item_novo BAGAGEIRO teto (N)


  • 0

#6 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 29 noviembre 2009 - 08:43

Esqueci de mencionar que as strings tem quebra de linha



delphi
  1. function quebrarlinha( texto, caractere: string) : string;
  2. var
  3.   i : integer;
  4.   temp : string;
  5.   posicao  : string;
  6. begin
  7.   for i := 1 to length( texto ) do begin
  8.       posicao := Copy( texto, i, 1);
  9.       if posicao <> caractere then
  10.       begin
  11.         temp := temp + posicao;
  12.       end else
  13.       begin
  14.         //Delete( texto, i, 1 );
  15.         temp := temp + #13+#10;
  16.       end;
  17.   end;
  18.   result := temp + #13+#10;;
  19. end;






delphi
  1. xtz := quebrarlinha( xtz, ' ' ); 






delphi
  1. xmc := quebrarlinha( xmc, ' ' );



e esta função aqui para retirar esta parte aqui da TAG componente adicionais[...]


delphi
  1. function Formata(const sNome: String): string;
  2. var
  3.   i,posi,posf: byte;
  4.   lista: TStrings;
  5.   strTexto: String;
  6. begin
  7.   Result :=sNome;
  8.   result:='",'+StringReplace(result,',','","',[rfReplaceAll]);
  9.   lista:=TStringList.Create;
  10.   try
  11.     lista.Delimiter:=',';
  12.     lista.DelimitedText:=result;
  13.     strtexto:=Trim(lista.Strings[0]);
  14.     posi:=pos('(',StrTexto);
  15.     posf:=posEx('(',StrTexto,posi+1);
  16.     delete(StrTexto,1,posf-Posi+2);
  17.     Lista.Strings[0]:=trim(StrTexto);
  18.     for I := 0 to lista.Count - 2 do
  19.       lista.Strings[i]:=lista.Strings[i]+',';
  20.       result:=lista.Text;
  21.   finally
  22.     lista.Free;
  23.   end;
  24. end;




  • 0

#7 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 01:43

95% concluido...



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, StrUtils;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Button1: TButton;
  12.     procedure Button1Click(Sender: TObject);
  13.   private
  14.     { Private declarations }
  15.   public
  16.     { Public declarations }
  17.   end;
  18.  
  19. var
  20.   Form1: TForm1;
  21.  
  22. implementation
  23.  
  24. {$R *.dfm}
  25.  
  26. function CompareStr(const cEntrada,cCompare:String):String;
  27. const
  28.   cNullo=' ';
  29.   cUnderLine='_';
  30.   cVirgula=',';
  31. var
  32.   lEntrada,lCompare,lSaida:TStrings;
  33.   StrTexto:String;
  34.   i,j:Byte;
  35. begin
  36.   lEntrada:=TStringList.create;
  37.   lCompare:=TStringList.create;
  38.   lSaida:=TStringList.create;
  39.   try
  40.     lEntrada.CommaText:=cEntrada;
  41.     lCompare.CommaText:=cCompare;
  42.     for I := 0 to lEntrada.Count - 1 do
  43.     begin
  44.       strTexto:=trim(lEntrada.Strings[i]);
  45.       delete(StrTexto,length(StrTexto)-3,4);
  46.       if lCompare.IndexOf(StrTexto) < 0 then
  47.       begin
  48.         strTexto:=StringReplace(lEntrada.Strings[i],cUnderLine,cNullo,[rfReplaceAll]);
  49.         if I < lEntrada.Count-1 then
  50.           strTexto:=strTexto+cVirgula;
  51.           lSaida.Add('Novo_Item'+' '+strTexto);
  52.       end;
  53.     end;
  54.     result:=lSaida.Text;
  55.   finally
  56.     lEntrada.Free;
  57.     lCompare.Free;
  58.     lSaida.Free;
  59.   end;
  60. end;
  61.  
  62. function IncludeTrace(const strText:String):String;
  63. const
  64.   cnullo=' ';
  65. var
  66.   AuxText:String;
  67.   i,Cont:integer;
  68.   vazio:Boolean;
  69.   lista:TStrings;
  70. begin
  71.   vazio:=false;
  72.   Cont:=1;
  73.   result:=StrText;
  74.   for i:=1 to length(StrText) do
  75.     if (StrText[i] = cnullo)and(not vazio) then
  76.     begin
  77.       vazio:=true;
  78.       cont:=1;
  79.     end
  80.     else
  81.     if (StrText[i] = cnullo) then
  82.     begin
  83.       result[i]:='@';
  84.       Cont:=Cont+1;
  85.     end
  86.     else
  87.     begin
  88.     if cont > 1 then
  89.       result[i-1] := '$';
  90.       Cont:=0;
  91.       Vazio:=false;
  92.     end;
  93.     result:=StringReplace(result,'@','',[rfReplaceAll]);
  94.     result:=StringReplace(result,cNullo,'_',[rfReplaceAll]);
  95.     result:=StringReplace(result,'$',cNullo,[rfReplaceAll]);
  96.     lista:=TStringList.Create;
  97.     lista.CommaText:=result;
  98.     for I := 0 to Lista.Count - 1 do
  99.     begin
  100.       AuxText:=trim(Lista.Strings[i]);
  101.       if (AuxText[length(AuxText)] = '_') then
  102.         delete(AuxText,length(AuxText),1)
  103.     else
  104.       if (AuxText[1] = '_') then
  105.         delete(AuxText,1,1) ;
  106.         lista.Strings[i]:=AuxText;
  107.     end;
  108.     result:=lista.Text;
  109.     lista.Free;
  110. end;
  111.  
  112. function Formata(const sNome: String): string;
  113. var
  114.   i,posi,posf:byte;
  115.   lista:TStrings;
  116.   strTexto:String;
  117. begin
  118.   Result :=sNome;
  119.   result:='",'+StringReplace(result,',','","',[rfReplaceAll]);
  120.   lista:=TStringList.Create;
  121.   try
  122.     lista.Delimiter:=',';
  123.     lista.DelimitedText:=result;
  124.     strtexto:=trim(lista.Strings[0]);
  125.     posi:=pos('[',StrTexto);
  126.     posf:=posEx('[',StrTexto,posi+1);
  127.     delete(StrTexto,1,posf-Posi+2);
  128.     Lista.Strings[0]:=trim(StrTexto);
  129.     for I := 0 to lista.Count - 2 do
  130.     begin
  131.       strTexto:=Trim(lista.Strings[i]);
  132.       StrTexto:=IncludeTrace(strTexto);
  133.       lista.Strings[i]:=Trim(StrTexto)+',';
  134.     end;
  135.     strTexto:=Trim(lista.Strings[i]);
  136.     StrTexto:=IncludeTrace(strTexto);
  137.     lista.Strings[i]:=Trim(StrTexto);
  138.     result:=lista.Text;
  139.   finally
  140.     lista.Free;
  141.   end;
  142. end;
  143.  
  144. procedure TForm1.Button1Click(Sender: TObject);
  145. var
  146.   xmc,extraiCampos,xtz:String;
  147.   listaCompare,listaEntrada,ListaSaida:TStrings;
  148.   i:integer;
  149. begin
  150.  
  151.      
  152.  
  153.   xmc :=  '[componente adicionais [ '+
  154.           ' PORTA MALAS [S], '+
  155.           ' AIR BAG [4], '+
  156.           ' AR CONDICIONADO [S], '+
  157.           ' BANCO DE COURO [N], '+
  158.           ' DVD [N], '+
  159.           ' CADEIRINHA até 5 anos [S], '+
  160.           ' BAGAGEIRO teto [N] '+
  161.           ' ]';
  162.   extraicampos := xmc;
  163.   extraicampos := Formata(extraicampos);
  164.   Showmessage(extraicampos);
  165.  
  166.   xtz :=  ' PORTA MALAS '+
  167.           ' AIR BAG '+
  168.           ' AR CONDICIONADO '+
  169.           ' BANCO DE COURO '+
  170.           ' DVD '+
  171.           ' CADEIRINHA ';
  172.  
  173.   xtz:=IncludeTrace(trim(xtz));
  174.  
  175.   Showmessage(xtz);
  176.  
  177.  
  178.   showmessage('########### Resultado #########'+slineBreak+slineBreak+CompareStr(extraicampos,xtz));
  179.  
  180. end;
  181.  
  182. end.
  183.  



Só falta eu conseguir comparar quando tem letras munúsculas no meio

xmc :=  ' CADEIRINHA até 5 anos [S], ';

xtz :=  ' CADEIRINHA ';

Veirfiquei que este dois não estão funcionando
lo que él necesita es sacar la diferencia entre dos cadenas.

Também preciso de na cadena 1ª, ficar desta forma

xmc := 'TETO SOLAR opcional, '

sem a presença da [ ], tem como?

Gracias
Adriano

  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 30 noviembre 2009 - 02:55

Hola Adriano

Prueba con éste código:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   xmc,xtz: String;
  4.   ListaXMC, ListaXTZ: TStringList;
  5.   i : integer;
  6. begin
  7.   xmc :=  '[componente adicionais [ '+
  8.           ' PORTA MALAS [S], '+
  9.           ' AIR BAG [4], '+
  10.           ' AR CONDICIONADO [S], '+
  11.           ' BANCO DE COURO [N], '+
  12.           ' DVD [N], '+
  13.           ' CADEIRINHA até 5 anos [S], '+
  14.           ' BAGAGEIRO teto [N] '+
  15.           ' ]';
  16.   xtz :=  ' PORTA MALAS '+
  17.           ' AIR BAG '+
  18.           ' AR CONDICIONADO '+
  19.           ' BANCO DE COURO '+
  20.           ' DVD '+
  21.           ' CADEIRINHA ';
  22.  
  23.   xmc := StringReplace(xmc,',','',[rfReplaceAll]);
  24.   xmc := StringReplace(xmc,'  ',',',[rfReplaceAll]);
  25.   ListaXMC := TStringList.Create;
  26.   ListaXMC.Delimiter := ',';
  27.   ListaXMC.StrictDelimiter := true;
  28.   ListaXMC.CommaText := xmc;
  29.  
  30.   xtz := StringReplace(xtz,'  ',',',[rfReplaceAll]);
  31.   ListaXTZ := TStringList.Create;
  32.   ListaXTZ.Delimiter := ',';
  33.   ListaXTZ.StrictDelimiter := true;
  34.   ListaXTZ.CommaText := xtz;
  35.  
  36.   for I := 1 to ListaXMC.Count - 1 do begin
  37.       try
  38.         if not AnsiContainsText(Trim(ListaXMC[i]),Trim(ListaXTZ[i-1])) then
  39.           Memo1.lines.Add(ListaXMC[i]);
  40.       except
  41.           Memo1.lines.Add(ListaXMC[i]);
  42.       end;
  43.   end;
  44.   ListaXMC.Free;
  45.   ListaXTZ.Free;
  46. end;



Adjunto la imagen del resultado.

Saludos.

  • 0

#9 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 07:44

Hola egostar, tudo bien?

En qual version del Delphi se usas StrictDelimiter

Estoy usando Delphi 7

deves declarar algo no USES ?

Gracias
  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 30 noviembre 2009 - 07:46

StrUtils
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 30 noviembre 2009 - 08:04

Hola egostar, tudo bien?

En qual version del Delphi se usas StrictDelimiter

Estoy usando Delphi 7

deves declarar algo no USES ?

Gracias


Vaya, no se si Delphi7 cuenta con esta función, yo uso turbo delphi, voy a ver que podemos hacer para sustituirla.

Saludos
  • 0

#12 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 08:12

BDS 2006 ok

Delphi 7 no

Voy a trabajar con BDS 2006, de modo.

un cosa más amigo, es poner la palabra "ITEM_NOVO" al principio de la frase y la coma al final, justo donde se coma?
Ejemplo:

xmc :=  '[componente adicionais [ '+
          ' PORTA MALAS [S], '+
          ' AIR BAG [4], '+
          ' AR CONDICIONADO [S], '+
          ' BANCO DE COURO [N], '+
          ' DVD [N], '+
          ' CADEIRINHA até 5 anos [S], '+
          ' BAGAGEIRO teto [N] '+
          ' ]';
  xtz :=  ' PORTA MALAS '+
          ' AIR BAG '+
          ' AR CONDICIONADO '+
          ' BANCO DE COURO ';

Return en memo

ITEM_NOVO DVD [N],
ITEM_NOVO CADEIRINHA até 5 anos [S],
ITEM_NOVO BAGAGEIRO teto [N]


Debo devolver exactamente de esta manera, ya son las dos strings.



         
         
  • 0

#13 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 08:15


Hola egostar, tudo bien?

En qual version del Delphi se usas StrictDelimiter

Estoy usando Delphi 7

deves declarar algo no USES ?

Gracias


Vaya, no se si Delphi7 cuenta con esta función, yo uso turbo delphi, voy a ver que podemos hacer para sustituirla.

Saludos

Si usted tiene que reemplazar, incluso mejor, prefiero trabajar con Delphi 7
  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 30 noviembre 2009 - 08:16

Hola



delphi
  1.   for I := 1 to ListaXMC.Count - 1 do begin
  2.       try
  3.         if not AnsiContainsText(Trim(ListaXMC[i]),Trim(ListaXTZ[i-1])) then
  4.           Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',');
  5.       except
  6.           Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',');
  7.       end;
  8.   end;



Saludos
  • 0

#15 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 08:21

Hola



delphi
  1.   for I := 1 to ListaXMC.Count - 1 do begin
  2.       try
  3.         if not AnsiContainsText(Trim(ListaXMC[i]),Trim(ListaXTZ[i-1])) then
  4.           Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',');
  5.       except
  6.           Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',');
  7.       end;
  8.   end;



Saludos


casi funcionó en rojo y no debería volver

ITEM NOVO BAGAGEIRO teto (N) ,
ITEM NOVO ),


  • 0

#16 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 30 noviembre 2009 - 08:38

Hola



delphi
  1.   for I := 1 to ListaXMC.Count - 2 do begin
  2.       try
  3.         if not AnsiContainsText(Trim(ListaXMC[i]),Trim(ListaXTZ[i-1])) then
  4.           Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',');
  5.       except
  6.           if i = ListaXMC.Count - 2 then
  7.               Memo1.lines.Add('ITEM NOVO '+ListaXMC[i])
  8.           else
  9.               Memo1.lines.Add('ITEM NOVO '+ListaXMC[i]+',')
  10.       end;
  11.   end;



Salud OS
  • 0

#17 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 08:49

Amigo, no sé cómo darle las gracias ... Él salvó a mi proyecto, incluso en BDS 2006.

Pero si usted tiene una manera de hacerlo con Delphi 7, de la misma manera oh yeah cierra con llave de oro.

Me encantó este foro, el personal es de 10


Gracias

felicitar Egostar

Y lo siento por mi español
  • 0

#18 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 30 noviembre 2009 - 08:52

Bueno, ya que estamos en esto, para Delphi7 puedes usar lo siguiente :)



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   xmc,xtz: String;
  4.   ListaXMC, ListaXTZ: TStringList;
  5.   i : integer;
  6. begin
  7.   xmc :=  '[componente adicionais [ '+
  8.           ' PORTA MALAS [S], '+
  9.           ' AIR BAG [4], '+
  10.           ' AR CONDICIONADO [S], '+
  11.           ' BANCO DE COURO [N], '+
  12.           ' DVD [N], '+
  13.           ' CADEIRINHA até 5 anos [S], '+
  14.           ' BAGAGEIRO teto [N] '+
  15.           ' ]';
  16.   xtz :=  ' PORTA MALAS '+
  17.           ' AIR BAG '+
  18.           ' AR CONDICIONADO '+
  19.           ' BANCO DE COURO ';
  20.  
  21.   xmc := StringReplace(xmc,'  ','-',[rfReplaceAll]);
  22.   xmc := StringReplace(xmc,' ','_',[rfReplaceAll]);
  23.   xmc := StringReplace(xmc,',','',[rfReplaceAll]);
  24.   xmc := StringReplace(xmc,'-',' ',[rfReplaceAll]);
  25.   ListaXMC := TStringList.Create;
  26.   ListaXMC.CommaText := xmc;
  27.  
  28.   xtz := StringReplace(xtz,'  ','-',[rfReplaceAll]);
  29.   xtz := StringReplace(xtz,' ','_',[rfReplaceAll]);
  30.   xtz := StringReplace(xtz,'-',' ',[rfReplaceAll]);
  31.   ListaXTZ := TStringList.Create;
  32.   ListaXTZ.CommaText := xtz;
  33.  
  34.   for I := 1 to ListaXMC.Count - 2 do begin
  35.       try
  36.         xtz := StringReplace(ListaXTZ[i-1],'_',' ',[rfReplaceAll]);
  37.         xmc := StringReplace(ListaXMC[i],'_',' ',[rfReplaceAll]);
  38.         if not AnsiContainsText(TRIM(xmc),TRIM(xtz)) then
  39.           Memo1.lines.Add('ITEM NOVO '+xmc+',  ');
  40.       except
  41.           xmc := StringReplace(ListaXMC[i],'_',' ',[rfReplaceAll]);
  42.           if i = ListaXMC.Count - 2 then
  43.               Memo1.lines.Add('ITEM NOVO '+xmc)
  44.           else
  45.               Memo1.lines.Add('ITEM NOVO '+xmc+',')
  46.       end;
  47.   end;
  48.   ListaXMC.Free;
  49.   ListaXTZ.Free;
  50. end;



Salud OS

PD, Bem-vindo ao DelphiAccess, vamos colocar esse tópico como resolvido :)
  • 0

#19 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 30 noviembre 2009 - 09:01

Exceletne, show ... Funciona bien fuera del compilador.

Una vez más las gracias

Problema resuelto.
  • 0

#20 adriano_servitec

adriano_servitec

    Advanced Member

  • Miembros
  • PipPipPip
  • 91 mensajes
  • LocationCuritiba-Pr - Brasil

Escrito 01 diciembre 2009 - 06:40

Hola amigos, existe un pequeno problema nas unit

Si tien valor  [51,40]

los result apareçe assim [5140]

Preciso qui retorne assim [51,40]


  • 0