FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
busquedas
Buenas a todos :
La pregunta es un poco rara , Utilizo normalmente Delphi como lenguaje de programacion para mis cosas del taller , pero tambien utilizo microcontroladores para mis desarrollos, con distintos lenguajes , acostumbrado a utilizar funciones como locate a la hora de ubicar un registro en una tabla , no me di cuenta de lo laborioso que es buscar un registro en particular entre cientos o miles . ahora necesito hacer una especie de funcion parecida a locate de delphi pero con la salvedad de que es para micro , ya realize una pero no se si es eficiente por eso ando buscando algun fuente que me demuestre la manera mas eficiente de buscar , basicamente un conjunto de caracteres o string en una zona de memoria donde se han cargado varios strings , parecida al buscar de cualquier editor. tiene que ser lo mas basico posible porque tienen que ubicarse en el tipo de dispositivo que se trata no se dispone de funciones de manejo de strings , ni siquiera existe como tal el string , eso lo defino yo bueno gracias por la atencion y cualquier cosa me avisan Julio |
#2
|
||||
|
||||
Cita:
Código:
function StrPos(const Str1, Str2: PChar): PChar; assembler; asm PUSH EDI PUSH ESI PUSH EBX OR EAX,EAX JE @@2 OR EDX,EDX JE @@2 MOV EBX,EAX MOV EDI,EDX XOR AL,AL MOV ECX,0FFFFFFFFH REPNE SCASB NOT ECX DEC ECX JE @@2 MOV ESI,ECX MOV EDI,EBX MOV ECX,0FFFFFFFFH REPNE SCASB NOT ECX SUB ECX,ESI JBE @@2 MOV EDI,EBX LEA EBX,[ESI-1] @@1: MOV ESI,EDX LODSB REPNE SCASB JNE @@2 MOV EAX,ECX PUSH EDI MOV ECX,EBX REPE CMPSB POP EDI MOV ECX,EAX JNE @@1 LEA EAX,[EDI-1] JMP @@3 @@2: XOR EAX,EAX @@3: POP EBX POP ESI POP EDI end; Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. Última edición por delphi.com.ar fecha: 01-08-2003 a las 22:05:12. |
#3
|
|||
|
|||
Es cierto lo que decis pero es parte de lo justamente estaba buscando , lastima no esta documentada con que registros entra la busqueda , esta funcion esta en algun Pas de delphi ?
lo que pusistes es una gran ayuda gracias Julio |
#4
|
||||
|
||||
El código de esta función esta en la unit SysUtils, te recomiendo que veas _LStrPos de la unit System que tiene un poco mas de documentación.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
gracias muchas , hasta otro dia
Julio Argentina |
#6
|
||||
|
||||
Cita:
Saludos nuevamente!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
Esta barbaro , la funcion encontrada en System como dijistes , en realidad busca un str dentro de otro , pero de por si ya salta algo que yo no hago y ahorra tiempo , que es comparar los tamaños de el blanco con la busqueda para descartarlo en pocas instrucciones , ya estoy viendo como agregarla , en cuestion de micro esta ya es importante puede ahorrar tiempos de cpu de forma barbara .
lo que estoy haciendo es buscar un codigo de barra dentro de un monton en memoria con un pequeño recolector de datos que estoy construyendo y algunos formatos de codigos tienen diferente tamaño hasta luego y gracias otra vez |
|
|
|