Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Busqueda dentro de un array (https://www.clubdelphi.com/foros/showthread.php?t=61582)

Jose Manuel 13-11-2008 11:03:54

Busqueda dentro de un array
 
Tengo un array "ncod_trabajo :array[1..250] of String" y quisiera saber como puedo hacer una busqueda dentro del array para saber si existe un dato, algo parecido a un LOCATE pero no sé cual es la forma de hacerlo, sin tener que recorrer toda la tabla comparando un tedit.text con cada celda del array.

coso 13-11-2008 11:39:29

hola, creo que deberas hacer exactamente eso: crear una funcion que te recorra el array y te devuelva true o false segun lo encuentre. Tambien podrias copiar todo a un unico buffer y usar Pos(substr,str) para ver si esta, aunque segun como lo hicieses te daria problemas. saludos.

fjcg02 13-11-2008 12:13:20

Hola,
también podrías utilizar un TStringlist ( si sólo tienes una dimensión en el array ). Tiene función de busqueda, ordenación, ... y te hace todo el trabajo sucio.

Valóralo al menos.

Saludos

Jose Manuel 13-11-2008 12:29:22

Muchas gracias por la respuesta, el array es utilizado como un campo indice para llenar otros arrays, y una vez calculados los datos de ltodos os arrays pasan a varias tablas.

Con vuestras respuestas me habeis confirmado que la forma en que haga la busqueda es correcta, aunque veré si puedo utilizar el TStringlist.

Gracías de nuevo y un saludo.

Jose Manuel.

Caro 13-11-2008 13:08:54

Hola, sería mucho mejor que utilizaras un TStringList, como te dijo el amigo fjcg02.

Saluditos

Neftali [Germán.Estévez] 13-11-2008 13:56:23

Si estuviera ordenado el array podrías hacer búsqueda dicotómica, si el array no está ordenado sólo te queda secuencial.
Otra cosa, el TStringList como te han dicho ya posee búsqueda y ordenación, pero si el TStringList no está ordenado (a veces no se puede) acaba haciendo búsqueda secuencial, así que si es el caso, tal vez no merezca la pena cambiar.

coso 13-11-2008 19:27:32

concuerdo, aun haber puesto lo de la funcion de busqueda : un TStringList te ahorrara faena. saludos.

Cañones 15-11-2008 21:12:49

Hola. Si sigues con Arrays, tambien podes buscar algoritmos mejorados de busquedas dentro de arrays como puede ser el de la burbuja y otros mas.
Saludos.

Delphius 15-11-2008 23:01:41

Cita:

Empezado por Cañones (Mensaje 326349)
Hola. Si sigues con Arrays, tambien podes buscar algoritmos mejorados de busquedas dentro de arrays como puede ser el de la burbuja y otros mas.
Saludos.

En realidad Burbuja es de ordenamiento. Yo sólo conozco dos modos de hacer una búsqueda: lineal, y binaria.;)
El primero se emplea cuando los elementos no están ordenados, mientras que el segundo cuando está ordenado.

Saludos,

Khronos 16-11-2008 00:13:09

Una busqueda secuencial con ese array sería muy muy rápida. Algo como esto:

Código Delphi [-]
type
  Tncod_trabajo = array [1..250] of string;


function ExisteRegistro(const Reg: TNcod_trabajo; const Registro: string): boolean;
var
i: integer;
begin
result:= false;
for i:= 1 to 250 do begin
If Registro = Reg[i] then
begin
result:= true;
break;
end;
end;
end;

Salu2

Cañones 16-11-2008 03:21:42

Tal cual dice Delphius.
Disculpas por el dato erroneo, pero alguna vez lo vi y nunca mas lo toque.
Saludos.


La franja horaria es GMT +2. Ahora son las 21:54:22.

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