<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Yo lo haría armando una linea de comando para el utilitario "grep" y parseando el resultado.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-25 14:15 GMT-03:00 Jesus Reyes A. <span dir="ltr"><<a href="mailto:jesusrmx@gmail.com" target="_blank">jesusrmx@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>


<div><div><div class="h5">On Sat, 20 Aug 2016 12:19:50 -0500, Rafael Bidegain <<a href="mailto:r.bidegain@gmail.com" target="_blank">r.bidegain@gmail.com</a>> 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(<wbr>nil);<br>     identifier1 := fparser.Identifiers.<wbr>AddIntegerVariable('x1',0);<br>     identifier1 := fparser.Identifiers.<wbr>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 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></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. <a href="http://forum.lazarus.freepascal.org/index.php/topic,23136.0.html" target="_blank">http://forum.lazarus.<wbr>freepascal.org/index.php/<wbr>topic,23136.0.html</a></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Jesus Reyes A.</div></font></span></div><br>______________________________<wbr>_________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus-ide.org">Lazarus-es@lists.lazarus-ide.<wbr>org</a><br>
<a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" rel="noreferrer" target="_blank">http://lists.lazarus-ide.org/<wbr>listinfo/lazarus-es</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="font-size:small;font-family:tahoma,sans-serif"><div style="display:inline">​</div></span><font face="tahoma, sans-serif" style="font-size:small">Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.<div style="display:inline">​ ​</div></font><i style="font-size:small;font-family:tahoma,sans-serif">Linus Torvalds</i><br></div></div>
</div>