In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TStringList. Revision

Foro público de Xailer en español
Responder
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

TStringList. Revision

Mensaje por rafa »

Amigos, os dejo una clase sobre la que voy trabajando poco a poco , que
nos permite trabajar cadenas de texto cómodamente.
Ahora permite usar ordenación, case sensitive, si queremos que en la
lista existí­an o no elementos duplicados, etc..
A la espera de un problema con la sobrecarga del operador "[]",
( J.Gimenez, pol amol a Dioz! que me tienes abandonao! ;-) ) se accede
como si fuese un method normal.
Vamos lentos, si, pero es que la conversión delphi/Xailer a veces no
resulta del todo satisfactoria, a veces se les va la olla a estos de
Delphi y el tiempo es muy miserable.
Espero seguir portando más funcionalidad, hasta llevar a LoadFromTxt() y
SaveFromTxt(), que es en lo que principalmente me interesaba, pero
bueno, al final terminaré de hacerla casi casi el 100%.
La clase esta ahora mismo pensada en la funcionalidad, no en la
optimización.
Un ejemplo;
o := TStringList():Create()
o:lCaseSensitive := .f. // Se establece a UPPER.
o:lSorted := .T. // Se establece que se ordene.
o:Add( "Hola" ) // nIndex 1
o:Add( "1 Hola" ) // nIndex 1, porque es ordenado.
// TODO:Vamos a tratarlo como una función
MsgInfo( o:aStrings(1) ) // 1 Hola
// En listas ordenadas, por defecto no permite duplicados por lo tanto
// Si queremos duplicados en lista ordenadas tan fácil como
// o:Duplicates := dupAccept
o:Add( "Hola" )
// Aqui tendremos 2, no 3, porque no permite duplicados
MsgInfo( "Count:" + ToString( o:nCount ) )
// Ahora , vamos a quitar la ordenación
o:Clear()
o:lCaseSensitive := .T. // Se establece a UPPER.
o:lSorted := .F. // Se establece que se ordene.
o:Add( "Hola" ) // nIndex 1
o:Add( "1 Hola" ) // nIndex 1, porque es ordenado.
o:Add( "Hola" )
MsgInfo( o:aStrings(1) ) // Hola
// Aqui tendremos 3
MsgInfo( "Count:" + ToString( o:nCount ) )
// Ordenación al reves.
o:Clear()
o:lCaseSensitive := .T. // Se establece a UPPER.
o:lSorted := .T. // Se establece que se ordene.
o:bCustumSort := {|x,y| x > y }
o:Add( "1" )
o:Add( "5" )
o:Add( "3" )
o:Add( "2" )
o:Add( "4" )
MsgInfo( o:aStrings(1) ) // 5
Saludos
Rafa Carmona
--
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9259
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

TStringList. Revision

Mensaje por ignacio »

Rafa,
Para la sobrecarga del operador:
METHOD aStrings( nIndex, cString ) OPERATOR "[]"
Para su uso:
En vez de: MsgInfo( o:aStrings(1) )
Usar: msginfo( o[1] )
Un saludo
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"rafa" <thefull_quita@t-gtk.org> escribió en el mensaje
news:497df761$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Amigos, os dejo una clase sobre la que voy trabajando poco a poco , que
> nos permite trabajar cadenas de texto cómodamente.
>
> Ahora permite usar ordenación, case sensitive, si queremos que en la
> lista existían o no elementos duplicados, etc..
>
> A la espera de un problema con la sobrecarga del operador "[]",
> ( J.Gimenez, pol amol a Dioz! que me tienes abandonao! ;-) ) se accede
> como si fuese un method normal.
>
> Vamos lentos, si, pero es que la conversión delphi/Xailer a veces no
> resulta del todo satisfactoria, a veces se les va la olla a estos de
> Delphi y el tiempo es muy miserable.
>
> Espero seguir portando más funcionalidad, hasta llevar a LoadFromTxt() y
> SaveFromTxt(), que es en lo que principalmente me interesaba, pero
> bueno, al final terminaré de hacerla casi casi el 100%.
>
> La clase esta ahora mismo pensada en la funcionalidad, no en la
> optimización.
>
> Un ejemplo;
>
> o := TStringList():Create()
> o:lCaseSensitive := .f. // Se establece a UPPER.
> o:lSorted := .T. // Se establece que se ordene.
>
> o:Add( "Hola" ) // nIndex 1
> o:Add( "1 Hola" ) // nIndex 1, porque es ordenado.
>
> // TODO:Vamos a tratarlo como una función
> MsgInfo( o:aStrings(1) ) // 1 Hola
>
> // En listas ordenadas, por defecto no permite duplicados por lo tanto
> // Si queremos duplicados en lista ordenadas tan fácil como
> // o:Duplicates := dupAccept
>
> o:Add( "Hola" )
>
> // Aqui tendremos 2, no 3, porque no permite duplicados
> MsgInfo( "Count:" + ToString( o:nCount ) )
>
> // Ahora , vamos a quitar la ordenación
> o:Clear()
> o:lCaseSensitive := .T. // Se establece a UPPER.
> o:lSorted := .F. // Se establece que se ordene.
> o:Add( "Hola" ) // nIndex 1
> o:Add( "1 Hola" ) // nIndex 1, porque es ordenado.
> o:Add( "Hola" )
>
> MsgInfo( o:aStrings(1) ) // Hola
> // Aqui tendremos 3
> MsgInfo( "Count:" + ToString( o:nCount ) )
>
> // Ordenación al reves.
> o:Clear()
> o:lCaseSensitive := .T. // Se establece a UPPER.
> o:lSorted := .T. // Se establece que se ordene.
> o:bCustumSort := {|x,y| x > y }
> o:Add( "1" )
> o:Add( "5" )
> o:Add( "3" )
> o:Add( "2" )
> o:Add( "4" )
> MsgInfo( o:aStrings(1) ) // 5
>
> Saludos
> Rafa Carmona
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

TStringList. Revision

Mensaje por rafa »

"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> wrote:
>Rafa,
>
>Para la sobrecarga del operador:
>
> METHOD aStrings( nIndex, cString ) OPERATOR "[]"
>
>Para su uso:
>
>En vez de: MsgInfo( o:aStrings(1) )
>
>Usar: msginfo( o[1] )
>
Mamma mia! Que error más infantil que he cometido , jajaja.
El problema es que en Delphi se esta sobrecargando una property, que entiendo
no es posible en Xailer, y yo emperrao.
¿ Es posible sobrecargar una property/DATA ?
saludos
rafa Carmona
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

TStringList. Revision

Mensaje por rafa »

Me autorespondo, no es necesario sobrecargar una data.
En Delphi, por lo tanto nosotros lo haremos igual,
o[1] es igual a o.strings[1]
por lo tanto, sobrecargando el method ya lo tenemos.
Thanks Ignacio!
Rafa Carmona
Saludos
Responder