BotonMenu
BotonIndice

Visita : http://www.conoce3000.com
Paypal : https://www.paypal.me/conoce3000/1

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL


14. LISTA DE CADENAS TSTRINGLIST.
14.2. CREANDO Y MANEJANDO TSTRINGLIST.
14. LISTA DE CADENAS TSTRINGLIST.
14.2. CREANDO Y MANEJANDO TSTRINGLIST.
14. LISTA DE CADENAS TSTRINGLIST.
14.2. CREANDO Y MANEJANDO TSTRINGLIST.

SIGUIENTE

SIGUIENTE

SIGUIENTE


‒ Creando y manejando TStringList.

TStringList tiene algunos métodos y propiedades para manejar la listas de cadenas como el añadir, borrar, insertar elementos a la lista de cadenas. En la siguiente tabla se explica brevemente algunos de ellos.


Método Descripción
Add Permite añadir una cadena de caracteres, al final de la lista.
Insert(i,cad) Permite insertar una cadena de caracteres a la lista indicado por cad, en la posición indicada por i.
Delete(i) Borra una cadena de caracteres de la lista.
Exchange(i,j) Permite intercambiar dos cadenas de caracteres de la lista indicados por i y j.
Move(i,j) Permite mover un cadena de caracteres de la posición i a la posición indicada por j, en la lista.
Clear Borra todas las cadenas de caracteres de la lista.
Strings[i] Es una atributo que nos permite acceder a una cadena de caracteres de la lista indicado por el indice i. La listas se enumeran empezando con 0. Es decir el primer elemento de la lista es Strings[0].
Capacity Es un atributo que nos indica la cantidad de cadena de caracteres que puede usar la lista de cadenas.
Count Es un atributo que nos indica la cantidad de cadenas de caracteres que tiene la lista de cadenas.

El siguiente ejemplo muestra como usar los métodos anteriormente explicados. Ejemplo:


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Var ListaCadenas:TStringList;
    cad:UnicodeString;
    i:integer;

Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.Add('UNO');
  ListaCadenas.Add('DOS');
  ListaCadenas.Add('TRES');

  for cad in ListaCadenas do Writeln(cad);
  Writeln;

  for i:=0 to ListaCadenas.Count-1 do
     ListaCadenas[i]:=IntToStr(i+1)+'='+ListaCadenas[i];

  for cad in ListaCadenas do Writeln(cad);
  Writeln;

  ListaCadenas.Add('5=CINCO');
  ListaCadenas.insert(3,'4=CUATRO');

  for cad in ListaCadenas do Writeln(cad);
  Writeln;

  Writeln(ListaCadenas.Capacity);
  Writeln(ListaCadenas.Count);
  ListaCadenas.clear;
  Writeln(ListaCadenas.Capacity);
  Writeln(ListaCadenas.Count)
End.
Código fuente 1: Creando y manejando un lista de cadenas.
Descargar

TStringList esta diseñado para manejar listas de cadenas de caracteres basadas en ansistring o string, es decir sólo admite codificación de caracteres ANSI o ASCII, no admite UTF8 y menos UTF16. En Linux podemos usar el administrador de caracteres, es decir la unidad cwstring, para que TStringList, almacena en memoria las cadenas de caracteres expandidas en UTF8. Ejemplo:


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes,cwstring;

Var ListaCadenas:TStringList;
    cad:ansistring;
Begin

  ListaCadenas:=TStringList.create;
  ListaCadenas.Add('Один');
  ListaCadenas.Add('Два');
  ListaCadenas.Add('Три');
  ListaCadenas.Add('Четыре');
  ListaCadenas.Add('Пять');

  for cad in ListaCadenas do Writeln(cad);

  ListaCadenas.SaveToFile('Ejemplo.txt')
End.
Código fuente 2: Lista de cadena de caracteres con cwstring, sólo para Linux.
Descargar

Si no usamos la unidad cwstring, se almacenarán sólo signos de interrogación. La unidad cwstring, es la que se encargará de colocar en TstringList, las cadenas expandidas en UTF8.

En Windows, en cambio si queremos que nuestro StrignList almacene nuestros textos o la lista de cadena de caracteres en UTF8, tendremos que usar UTF8Encode.

UTF8Encode es una función que nos permite codificar una cadena de caracteres a UTF8, es decir nos permite almacenar en memoria cadenas de caracteres expandidas en UTF8.

UTF8Encode es una función que se encuentra en la unidad sysutils, por lo cual este debe ser incluido en nuestro programa. Ejemplo:


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Vas ListaCadenas:TStringList;
    cad:ansistring;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.Add(UTF8Encode('Один'));
  ListaCadenas.Add(UTF8Encode('Два'));
  ListaCadenas.Add(UTF8Encode('Три'));
  ListaCadenas.Add(UTF8Encode('Четыре'));
  ListaCadenas.Add(UTF8Encode('Пять'));

  For cad in ListaCadenas do Writeln(cad)
End.
Código fuente 3: Lista de cadena de caracters con UTF8Encode.
Descargar

Obviamente el echo de estar colocando linea por linea, todo un texto resulta a veces tedioso. Lo que se puede hacer es usar la propiedad Text, la propiedad text, permite colocar todo un texto en un TStringList, pero nuestro texto debe tener saltos de línea para que TStringList, los añada línea por línea. Un salto de línea se puede indicar con el carácter #10. Ejemplo:


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Var ListaCadenas:TStringList;
    cad:ansistring;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.text:=UTF8Encode('Esto será la primera línea'+#10+'Esto será la segunda línea');
  For cad in ListaCadenas do Writeln(cad)
End.
Código fuente 4: Uso de la propiedad Text.
Descargar

En el caso de Windows si queremos que TStringList almacene caracteres UTF8, entonces debemos usar UTF8Encode, con la propiedad Text.


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Var ListaCadenas:TStringList;
    cad:ansistring;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.text:=UTF8Encode('Esto será la primera línea'+#10+'Esto será la segunda línea'); 
  For cad in ListaCadenas do Writeln(cad); 
End.
Código fuente 5: Uso de la propiedad Text y UTF8Encode.
Descargar

La propiedad Text es una propiedad que también se puede usar para obtener todas las cadenas de caracteres de TStringList en una sóla cadena de caracteres. La cadena de caracteres que se obtiene con Text, usa el caracter #10 para separar las cadenas de lista de cadenas de caracteres. Es decir usar algo como Writeln(Lista.text) es casi igual a usar un for que recorre toda la lista.


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Var ListaCadenas:TStringList;
    cad:ansistring;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.text:=UTF8Encode('Esto será la primera línea'+#10+'Esto será la segunda línea');
  //Esto muestra toda la lista con for
  For cad in ListaCadenas do Writeln(cad);
  //Hace lo mismo pero sólo se usa la propiedad Text
  Writeln;
  Writeln(ListaCadenas.Text)
End.
Código fuente 6: Uso de la propiedad Text para mostrar la lista.
Descargar

Existe un método AddText, que hace lo mismo que la propiedad Text, pero con la diferencia de que la propiedad Text, reemplaza todo el contenido de TStringList, el método AddText, no hace eso y añade más textos al final de la lista.


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;

Var ListaCadenas:TStringList;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.text:=UTF8Encode('Esto será la primera línea'+#10+'Esto será la segunda línea');
  ListaCadenas.AddText(UTF8Encode('Esto será la tercera línea'+#10+'Esto será la cuarta línea'));
  Writeln;
  Writeln(ListaCadenas.Text)
End.
Código fuente 7: Uso del método AddText.
Descargar

Si deseamos hacer una búsqueda de una cadena de caracteres en una lista no ordenada se puede usar el método indexOf, este método devolverá un -1 si la cadena de caracteres no se encuentra en la lista en caso contrario devolverá la posición en donde se encontró.


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;//, cwstring;

Var ListaCadenas:TStringList;
    pos:integer;
Begin
  ListaCadenas:=TStringList.create;
  ListaCadenas.Add('Zoila');
  ListaCadenas.Add('Rosa');
  ListaCadenas.Add('Sara');
  ListaCadenas.Add('Andrea');  
  ListaCadenas.Add('Miguel');  
  ListaCadenas.Add('Felipe');
  Writeln; 
  Writeln(ListaCadenas.Text);  
  
  pos:=ListaCadenas.IndexOf('Felipe');
  if pos>0 
  then Writeln('Felipe se encuentra en la posicion ',pos)
  else Writeln('Felipe no se encuentra en la lista');
  
  pos:=ListaCadenas.IndexOf('Carla');
  if pos>0 
  then Writeln('Carla se encuentra en la posicion ',pos)  
  else Writeln('Carla no se encuentra en la lista'); 
  
End.
Código fuente 8: Uso del método IndexOf.
Descargar

Otra tarea muy común es la unión o adición de una lista de cadena de caracteres con otra, esto se puede hacer con el uso del método AddStrings, el método sólo admite un parámetro que es la otra lista que deseamos añadir a la nuestra.


Descargar
{$codepage utf8}
{$mode objfpc}
Uses sysutils, classes;
Var Lista1,Lista2,Lista3:TStringlist;
Begin
 Lista1:=TStringList.create; 
 Lista2:=TStringList.create; 
 Lista3:=TStringList.create; 
 Lista1.add('Opcion 1');
 Lista1.add('Opcion 2');
 Lista1.add('Opcion 3');
 Lista1.add('Opcion 4');
 Lista2.add('Opcion 5');
 Lista2.add('Opcion 6');
 Lista2.add('Opcion 7');
 Lista3.Addstrings(Lista1);
 Lista3.Addstrings(Lista2);
 Writeln(Lista3.text)
End.
Código fuente 9: Uso del método AddStrings.
Descargar




SIGUIENTE
SIGUIENTE
SIGUIENTE



 
‒ Comentarios y sugerencias.

Agradezco de antemano, todo comentario, sugerencia, y donativo (a través de Paypal me), que ayude a mejorar los contenidos educativos de Conoce 3000. Además, cualquier pregunta o duda que tengas lo puedes hacer por este medio. Pero, todo contenido que pueda resultar ofensivo, malicioso, racista, sexista, discriminatorio, obsceno, vulgar será eliminado.


Comments System WIDGET PACK






PORTADA |  INTERESANTE |  APUNTES |  LIBROS |  GALERIA


Creative Commons License


Todos los textos, imágenes y videos de Conoce3000 estan colocados bajo una licencia : Creative Commons Reconocimiento-NoComercial 3.0 Unported License.