PDA

Ver la Versión Completa : Equivalente a la función Copy en C++ Builder


Luis Abraham
06-06-2005, 18:53:07
Hola Foro !!!!

Es primera vez que trabajo en C++ Builder por lo que no estoy muy familiarizado con el.

Mi duda es simple, necesito saber cual es el equivalente en C++ Builder del la función Copy de Delphi, si no mal recuerdo en la ayuda encontre una función llamada strcpy pero no pude hacer con ella lo que se hace con Copy en Delphi.

En realidad mi problema es muy sencillo, solo necesito extraer subcadenas de una cadena mayor pero no he encontrado como solucionarlo en C++ Builder.

Para ser mas especifico mi problema es el siguiente, tengo un archivo de texto con cadenas separadas por comas → "Abraham,Nuño,25,1980,México" y necesito extraer cada subcadena entre las comas para ingresarla a un StrinGrid, esto lo hacia de forma muy facil en Delphi con la función Copy pero en Builder no lo he podido resolver, por lo del manejo del StrinGrid no hay ningun problema sino solo por la extracción del las cadenas.

Espero me puedan ayudar con esto y muchas gracias de antemano !!!

Crandel
06-06-2005, 21:07:20
C++Builder utiliza la clase AnsiString para el manejo de cadenas.

Esta clase posee varios métodos, entre ellos SubString(pos, cant).

lo uilizas asi:


AnsiString Cad = "Abraham,Nuño,25,1980,México";
AnsiString Aux;

Aux = Cad.SubString(1, Cad.Pos(",")-1);

case
03-07-2005, 15:25:42
La forma más eficiente, sobre todo si la cadena está separada por comas, es utilizar un objeto TStringList. de la siguiente forma:

TStringList *SL = new TStringList;
SL->CommaText = tu_cadena;
int cantidad = SL->Count; // La cantidad de componentes
for (int fila=0; fila < cantidad; fila++) // Recorrer la lista de componentes
{
HacerAlgo (SL->Strings[fila]); // Hacer algo con cada componentes (1, 2, 3, ...)
}
delete SL;


Este truco se basa en la habilidad del StringList de descomponer las cadenas separadas por coma en sus partes, y colocar cada una de ellas en una fila de la lista.

Espero te sirva. Es uno de mis trucos favoritos !