Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Uso de AnsiString (https://www.clubdelphi.com/foros/showthread.php?t=61211)

11_8_88 30-10-2008 12:26:40

Uso de AnsiString
 
Hola a todos, mi duda esta , en q un amigo me comento q se puede usar un AnsiString como un array dinamico de string, pero he estado intentandolo y no lo he conseguido y la verdad es q no se si sera posible.

Alguien sabe algo de esto??

Muchas gracias, un asludo

Neftali [Germán.Estévez] 30-10-2008 14:19:16

Cita:

Empezado por 11_8_88 (Mensaje 323252)
en q un amigo me comento q se puede usar un AnsiString como un array dinamico de string, pero he estado intentandolo y no lo he conseguido y la verdad es q no se si sera posible.

Primero deberías explicar de forma un poco más detallada qué significa eso.
Por otro lado no veo porqué utilizar AnsiString para crear un array dinámico si en Delphi ya existen arrays dinámicos. :confused::confused::confused:

Es como decir, "voy a utilizar una cuchara como si fuera un cuchillo". Sabiendo que en la otra mano ya tienes un cuchillo. ¿Qué necesidad hay?

11_8_88 30-10-2008 17:28:10

La verdad es q me he explicado bastante mal xxDD, a ver si lo hago un poco mejor.

Necesito ir introduciendo en una estructura, cadenas de caracteres diferentes e indepedientes entre si, por ejemplo :

AnsiString cadenas;
cadenas[0] = "hola";
cadenas[1] = "adios";

pero no se si esto se hace asi.

Un saludo

escafandra 30-10-2008 17:52:25

Pues parece que no es asi. Puedes usar las clases VCL, como te comentó Neftali o implementar un array dinámico en C++, mas laborioso. No se que es lo que pretendes.

Con las VCL en Builder C++:
Código:

// Para crear y llenar el array:
TStringList *Cadenas = new TStringList;
Cadenas->Add("Hola");
Cadenas->Add("Adios");

// Para extraer o leer las cadenas:
Cadenas->Strings[0]; // Hola
Cadenas->Strings[1]; // Adios

Con C++ puro y duro: Visita esto

Saludos.

11_8_88 30-10-2008 18:40:22

Muchisimas gracisa, era justo lo q andaba buscando, (objeto TStringList)

¿es posible cargar el objeo entero del tiron en un archivo?, Estoy probando esto, pero de momento no va bien:

TFileStream *archivo = new TFileStream("archivo.txt",fmCreate);
archivo->Write(cadenas,sizeof(cadenas));

¿O habria q crear un blucle e ir añadiendo una a una las string de la estructura cadenas?

Muchas gracias un saludo

escafandra 30-10-2008 19:14:17

Mírate la ayuda del Builder TSrings::SaveToFile (TStrigList es clase derivada de TSrings).

Saludos.

11_8_88 30-10-2008 20:11:09

Muchas gracias, solucionado, sois unos makinas xxDD

delphi 14-08-2010 16:48:34

exactamente para que sirve un ansistring, donde y como se puede utilizar? cuál es su función? gracias por la respuesta

escafandra 14-08-2010 20:53:47

Como estamos en el foro de C++ Builder, acostumbrate a escribir correctamente los nombres, AnsiString y no ansistring. Recuerda que C es sensible a las Mayúsculas/Minúsculas. ;)

Un AnsiString en Builder es una clase equivalente al tipo String para el uso de cadenas de caracteres en alto nivel. Las cadenas en c son arrays de tipo char[], también definidos por un char*.

La clase AnsiString nos permite usar cadenas sin necesidad de manejar a bajo nivel los arrays y nos permite sumarlas directamente, por ejemplo.

En C para sumar dos cadenas haríamos esto:

Código:

char *Cad1 = "¿Hola";
char *Cad2 = "como estás?"

char CadSuma[256];
strcpy(CadSuma, Cad1);
strcat(CadSuma, " ");
strcat(CadSuma, Cad2);

Otra forma mas avanzada sería así:
Código:

char CadSuma[256];
wsprintf(CadSuma, "%s %S", ¿Hola",
"como estás?");

Con AnsiString:
Código:

AnsiString CadSuma = "¿Hola" + " " + "como estás?"
Como ves, es bastante mas intuitivo, pero el ejecutable será mas pesado.
Para convertir un AnsiString a un char* usamos su función miembro c_str()

Esto son unas pinceladas de lo que encontrarás en la ayuda del Builder.

Saludos.


La franja horaria es GMT +2. Ahora son las 19:35:45.

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