<!DOCTYPE html><html><head>
<style type="text/css">body { font-family:'DejaVu Sans Mono'; font-size:13px}</style>
</head>
<body>On Sat, 20 Aug 2016 12:19:50 -0500, Rafael Bidegain <r.bidegain@gmail.com> wrote:<br><br><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div dir="ltr"><div><div><div>hola a todos.<br><br>Tengo que hacer una utilidad para hacer búsquedas sobre archivos de texto.<br></div>El problema es que el usuario necesita buscar algunas veces con 1 condición otras con dos o tres condiciones. y no siempre sobre el mismo campo.<br><br></div>La solución con TFPExpressionParser no me desagrada, pero estoy buscando eficiencia ya que intuyo que en no mucho tiempo el usuario me va a pedir que el proceso se haga automáticamente sobre un grupo de archivos.(ahora abre un archivo con un TOpendialog, los parámetros de búsqueda se cargan en un TStringGrid)<br><br></div>cada archivo tiene 40.000 registros.<br clear="all"><div><div><div><div><div><div><div><div><div><br></div><div>por el momento los conectores lógicos son todos and y lo resuelvo así<br> fparser := TFPExpressionParser.Create(nil);<br> identifier1 := fparser.Identifiers.AddIntegerVariable('x1',0);<br> identifier1 := fparser.Identifiers.AddIntegerVariable('x2',0);<br> fparser.Expression := '';<br> if trim(StringGrid1.Cells[1,1]) <> '' then //ctacte<br> begin<br> fparser.Expression := '(x1=0)';<br> end;<br><br> if length(fparser.Expression) > 0 then<br> fparser.Expression := fparser.Expression + ' and (x2=0)'<br> else<br> fparser.Expression := '(x2=0)';<br><br></div><div>gracias!<br></div><div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Rafael Bidegain<br><br>Ya que los cuerdos no hablan, hablará el loco.<br>(The Fool, Padraic Pearse)<br><br># yo quiero educación libre. ¡YA!<br><br></div>
</div></div></div></div></div></div></div></div></div></div>
</blockquote><div><br></div><div>No entiendo bien si tu pregunta es con respecto de la manera de crear una expresión de una manera mas eficiente o si de un método de hacer la búsqueda en si mas eficiente.</div><div><br></div><div>Opto por lo segundo, y aunque parece que tus búsquedas son mas especializadas, en este enlace hablan al respecto de busquedas de texto utilizando el algoritmo Boyer-Moore, fue el primer resultado que encontré quizás existan mas. http://forum.lazarus.freepascal.org/index.php/topic,23136.0.html</div><div><br></div><div>Jesus Reyes A.</div></body></html>