![]() |
![]() |
| Paypal | 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 |
![]() |
|
|
|