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í
function CompareStr(const cEntrada,cCompare:String):String; var lEntrada,lCompare,lSaida:TStrings; i:Byte; begin lEntrada:=TStringList.create; try lCompare:=TStringList.create; try lSaida:=TStringList.create; try lEntrada.CommaText:= CapturarUpper(cEntrada); lCompare.CommaText:= cCompare; for I := 0 to lEntrada.Count - 1 do begin if lCompare.IndexOf(lEntrada.Strings[i]) < 0 then //lEntrada.CommaText := cEntrada; lSaida.Add('Item_Novo'+' '+lEntrada.Strings[i]); end; result:=lSaida.Text; finally lEntrada.Free; end; finally lCompare.Free; end; finally lSaida.Free; end; 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
function CapturarUpper(const AText: String): String; var i, vLength: Integer; vChar: Char; begin Result := ' '; //aqui tem que ficar com este espaço para não ocorrer erro vLength := Length(AText); for i := 1 to vLength do begin vChar := AText[i]; if (vChar in ['a'..'z', 'A'..'Z']) and (vChar = UpCase(vChar)) then begin Result := Result + vChar; end else begin if (Result[Length(Result)] <> ' ') then //aqui eu defino se vai haver espaço ou não entre os campos ' ' Result := Result + ' '; //aqui eu defino se vai haver espaço ou não entre os campos end; end; Result := Trim(Result); 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.