Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TMatch o TMatchCollection (https://www.clubdelphi.com/foros/showthread.php?t=83680)

avechuche 14-07-2013 04:58:56

TMatch o TMatchCollection
 
Gente alguien me puede explicar, lo mas detallado posible, cuales son las diferencias entre TMatch y TMatchCollection, porque no se cual usar y en que circunstancias. Gracias!

Casimiro Notevi 14-07-2013 10:11:42

Lo mismo digo una tontería, pero se puede comparar con: TMoto, TMotoCollection. En el primer caso tienes una moto, en el segundo tienes una colección de motos y puedes elegir una de ellas, ordenarlas por color, precio, cilindrada, etc.
Aunque lo mismo estás preguntando para qué sirven, no ha quedado muy clara tu duda.

avechuche 15-07-2013 00:12:49

Si no me explique bien porque no puse un ejemplo. Seria asi ...
Código Delphi [-]
      // HTML es un string con código HTML.
      aHotfixWebName := TRegEx.Match(HTML, codeStringRegExpHotfix);

      if aWebFolderName.Success then
        begin
          // Codigo que se inicializa una vez si se encuentra al menos una coincidencia.
          while aWebFolderName.Success do
            begin
            // Codigo por aquí
            ...
            aHotfixWebName := aHotfixWebName.NextMatch;
            end;
        end;

Bueno de esa forma obtengo todas las coincidencias, pero no entiendo que hace el .NextMatch.
1) ¿Cada vez que lo llamo busca en la cadena la siguiente coincidencia?
1a) ¿Desde el principio de la cadena o desde la posicion donde encontro la anterior coincidencia?
1b) Si es asi, ¿seria más lento que usar TMatchCollection?
2) ¿Ó cuando se llama por primera vez a la ER crea un "array" y el .NextMatch lo recorre?

Lo que puede observar es que TMatchCollection devuelve una coleccion que puede ser recorrida de forma iterativa y obtener los resultados mediante un indice, cosa que con TMatch no se puede.

No se si habra algo mas por lo cual me convenga usar uno u otro.

Otra cosa, se puede pasar un TMatchCollection a un array de forma directa? O no es necesario, el uso que le tengo que dar es solo de lectura, no tengo que reemplazar nada, por eso no si me conviene usar directamente el TMatchCollection o pasarlo a un array.

Lepe 15-07-2013 13:26:39

TMatchCollection es una lista de objetos, cada objeto es un TMatch, ni más ni menos. No le des más vueltas o acabarás mareado ;).

El TMatchCollection es ya "un array". De hecho, los arrays es lo que se usaba antes, hoy día son todo Listas de objetos (TObjectList) y Colecciones (TCollection).

Vaaaale, los arrays puedes seguir usándolos, pero intenta ordenar un array (casi de locos) cuando un derivado de TCollection/TObjectList ya lo tienes todo hecho (solo implementa una función y se la pasas al método Sort).


La franja horaria es GMT +2. Ahora son las 09:42:08.

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