Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2004
Raptor Raptor is offline
No confirmado
 
Registrado: jul 2003
Ubicación: Santo Domingo R.D.
Posts: 105
Poder: 0
Raptor Va por buen camino
Talking Como puedo desordenar un archivo ??

hola a todos los delphiano..

Mi pregunta como se ve es que necesito leer un archivo de text, este archivo contiene numeros de telefono, pero vienen de forma ordenada pero yo necesito estos archivos de forma desordenada.

ejem. mi archivo viene

5904310
5904311
5914380
5926010

y yo lo quiero
5904311
5926010
5926010
5901310


o sea que no tengan un orden

me pueden dar una manito.

gracias de antemano...
Responder Con Cita
  #2  
Antiguo 14-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno si el archivo no es muy rande puedes hacer una "rutinilla" que fácilmente te los desordene utilizando 2 TStrings;

(1) Carga el fichero en TStrings1
(2) Utilizando Randomize y Random (en la ayuda de delphi hay un ejemplo) con la limitación de TStrings1.Count obtienes un número aleatorio X.
(3) Eliminas la línea X del TStrings1 y la pasas a TStrings2.
(4) Repite el (2) mientras queden líneas en TStrings1.

Espero haberme explicado decentemente.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-09-2004
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola, no se si he entendido bien la cuestión:

¿el fichero lo quieres desordenado (aleatoriamente) o lo quieres en otro orden, es decir "TU" orden concreto?

[s]1er caso[/s]
Puedes cargar ese fichero en un TStringList (ignoro el tamaño que tiene) e implementar un algoritmo que intercambie 2 posiciones de los elementos del TStringList de forma aleatoria, usando el método Exchange del TStringList.

NOTA: Este proceso de "desorden" debe terminar alguna vez...

[s]2º caso[/s]
Debe haber un orden dentro del desorden... el orden que TU quieres que tenga el fichero, y dicho orden debe poder implementarse mediante un algoritmo...

Salu2.
Responder Con Cita
  #4  
Antiguo 14-09-2004
Raptor Raptor is offline
No confirmado
 
Registrado: jul 2003
Ubicación: Santo Domingo R.D.
Posts: 105
Poder: 0
Raptor Va por buen camino
Muchas gracias a los 2 probare con la ideas que me dieron.

ah, el archivo realmente no se de que tamano sera porque tiene muchos # de telefono.

Otra cosa el orden final realmente no me importa, lo unico que necesito es que esten desordenado.

Esto es para realizar un pequeno sistema de loteria.

si alguien tiene una mejor idea, pleasse se lo agradeceria
Responder Con Cita
  #5  
Antiguo 14-09-2004
maruenda maruenda is offline
Miembro
 
Registrado: oct 2003
Ubicación: elche
Posts: 173
Poder: 21
maruenda Va por buen camino
y en vez de desordenar el fichero, porque no eliges un numero al azar, y vas a la linea que te indica ese numero. y marcas los numeros que sacas, de manera que si los vuelves a sacar, repites la tirada.
__________________
frenadol
Responder Con Cita
  #6  
Antiguo 15-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por maruenda
y en vez de desordenar el fichero, porque no eliges un numero al azar, y vas a la linea que te indica ese numero. y marcas los numeros que sacas, de manera que si los vuelves a sacar, repites la tirada.
Eso prodría ser problemático si hay que completar toda la lista de números, ya que si la lista tiene 5000 números (por ejemplo), a medida que se vayan acabando (cuando queden 5 números, por ejemplo) el número de veces que puedes tener que repetir la tirada puede ser muy grande .
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 15-09-2004
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
!Hola!

Si el fichero tiene más de un campo, ordenalo por otro campo y, prácticamente seguro, que no te quedará ordenado por el campo principal.

Si el número de teléfono es el único campo, entonces añádele otro con un número aleatorio y lo ordenas por este último campo. Además, puedes aprovechar para añadir un tercer campo donde marques si el número ha sido marcado o no (como solución a lo que te dice Neftalí).

Saludos.
__________________
Rafita.
Responder Con Cita
  #8  
Antiguo 16-09-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Si es para una loteria y no son muchisimos telefonos (no mas de unos cuantos miles), seria mejor elegirlos al azar como explica Neftali o maruenda, e ir eliminadolos de la lista, para que no se vuelvan a usar, ej:

Código:
var
 List : TStringList;
 Index: integer;
begin
  List:= TStringList.Create;
  try
    List.LoadFromFile('mistelefonos.txt');
    while List.Count>0 do begin
        Index:= random(List.Count); 
        Memo1.Lines.Add(List[Index]);
        List.Delete(Index);
    end{while};
  finally
    List.Free;
  end;
end;
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:44:11.


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
Copyright 1996-2007 Club Delphi