Alguna forma de optimizar el codigo?

Iniciado por demoniox12, 3 Febrero 2008, 06:07 AM

0 Miembros y 1 Visitante están viendo este tema.

demoniox12

Wenas.. estuve intentando hacer un pekeño programa para que responder rapidamente las trivias... pero lo que sucede es que al buscar las preguntas tarda muchisimo al ser tan grande donde busca (11mb)

CitarPrivate Sub Command1_Click()
Dim buskeda As Integer
If pregunta = "" Then
buskeda = InStr(1, RichTextBox1.Text, Text1.Text)
If buskeda > 0 Then
pregunta = Mid(RichTextBox1.Text, buskeda)
terminarespuesta = InStr(1, pregunta, vbCrLf) - 1
respuesta = Left(pregunta, terminarespuesta)
empiezarespuesta = InStr(1, respuesta, "*") + 1
respuesta = Mid(respuesta, empiezarespuesta)
Text2.Text = respuesta
End If
Else
buskeda = InStr(1, pregunta, Text1.Text)
If buskeda > 0 Then
pregunta = Mid(pregunta, buskeda)
terminarespuesta = InStr(1, pregunta, vbCrLf)
respuesta = Left(pregunta, terminarespuesta)
empiezarespuesta = InStr(1, respuesta, "*")
respuesta = Mid(respuesta, empiezarespuesta)
Text2.Text = respuesta
End If
End If
End Sub

Private Sub Command2_Click()
respuesta = ""
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub Form_Load()
Path = App.Path & "\preguntas.txt"
Dim Extraido As String
Open (Path) For Binary As #1
Extraido = Space(LOF(1))
Get #1, , Extraido
Close #1
RichTextBox1.Text = Extraido
End Sub

ahi esta el code.. pero el instr es lo que hace que tarde muchisimo... alguna solucion para que sea rapido??

salu2!
By Demoniox

Chefito

Para eso utiliza base de datos que contengan las preguntas y respuestas....y si quieres mas campos, y sentecias sql. Es enormemente mas rapido.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

demoniox12

Cita de: Chefito en  4 Febrero 2008, 13:52 PM
Para eso utiliza base de datos que contengan las preguntas y respuestas....y si quieres mas campos, y sentecias sql. Es enormemente mas rapido.
Saludos.

gracias, muy buena solucion ^^ pero hmm entonces tendria que crear la tabla y agregarle todos los valores.. y no me veo haciendolo a 80.000 lineas a menos que me ponga a reemplazar las cosas haciendo un programa rapido que lo haga...

alguna otra solucion??

salu2!
By Demoniox

byebye

hay otra solucion pero te va a dar el mismo trabajo que hacer la tabla (aunque puedes automatizar todo con un programa). por ejemplo cada linea:

pregunta*respuesta

tu lanzas la pregunta pero ya tienes tb la respuesta asi que no vas a tardar en buscarla. esto te lo digo si es para un trivial de esos tipo los del irc.

demoniox12

exacto.. si asi esta.. pero lo como ya dije tarda muchisimo al buskar la pregunta osea yo lo que hago es copiar del irc la pregunta y pegarla en el programa y que el programa me devuelva la respuesta.. esta hecho.. funciona.. PERO el instr tarda muchisimo para cuando me da la respuesta ya termino la pregunta y hasta 3 preguntas mas xDD nose xq es tan lento...  si kieren les dejo el archivo .txt asi si kieren hacen pruebas :)

salu2!

PD: un ejemplo de como estan las preguntas:

Biologia©-«"Al nacer las crías de tigre son ciegas, a qué edad abren los ojos: a los 3, 7, 14, 25, ó 30 días.*14
Biologia©-«"La Mantis Religiosa hembra inicia el acto sexual arrancando la...".*cabeza del macho
Biologia©-«"Pterigotos": Subclase de insectos que característicamente tienen...*alas
By Demoniox

Chefito

Haber haber y no seamos animales :).Si yo fuese tu, lo que haria es cogeria el notepad o cualquier procesador de texto y cargaría tu txt. Luego reemplazaría los ©-« por comas(,)....poniendo claro reemplazar todo....no los reemplaces uno a uno que con tu respuesta de antes te veo capaz  :P. Despues reemplazaría los * por comas también (,). Así tienes todos tus campos diferenciados por comas, ok? Vale...pues te vas al Access por ejem, y carga ese fichero creado .txt, y seguramente te saldrá un asistenten que te indicara que si quieres crear los campos por las comas separadas....le dices que sí. Luego te los separara en tu caso en 3 campos...y te dirá que como quieres llamarlos.....por ejem. 1º Tema, 2º Pregunta,3º Respuesta.....y siges con el asistente hasta crear la bbdd. Ya teniendo la bbdd pues la atacas en vb y velocidad solucionada. Espero haberte ayudado.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

byebye

yo recuerdo que existian scripts para contestar las preguntas automaticamente, y lo que tenian era las respuestas separadas en ficheros por temas, de la misma forma que las tiene el programa que las lanza. de esta forma es mas rapido buscar.

Chefito

Si haber, hay formas de acelerar las busqueda. Un ejem. sería cargar por temas y preguntas por ejem en un array de dos dimensiones.......la primera para los temas, y la segunda para la pregunta y respuesta juntas, separandolas luego con el instr. Esa sería otra solución. Pero sigo pensando que donde esté una base de datos que se quite todo, y más en situaciones de tantos datos :)
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

demoniox12

Cita de: Chefito en  4 Febrero 2008, 21:43 PM
Haber haber y no seamos animales :).Si yo fuese tu, lo que haria es cogeria el notepad o cualquier procesador de texto y cargaría tu txt. Luego reemplazaría los ©-« por comas(,)....poniendo claro reemplazar todo....no los reemplaces uno a uno que con tu respuesta de antes te veo capaz  :P. Despues reemplazaría los * por comas también (,). Así tienes todos tus campos diferenciados por comas, ok? Vale...pues te vas al Access por ejem, y carga ese fichero creado .txt, y seguramente te saldrá un asistenten que te indicara que si quieres crear los campos por las comas separadas....le dices que sí. Luego te los separara en tu caso en 3 campos...y te dirá que como quieres llamarlos.....por ejem. 1º Tema, 2º Pregunta,3º Respuesta.....y siges con el asistente hasta crear la bbdd. Ya teniendo la bbdd pues la atacas en vb y velocidad solucionada. Espero haberte ayudado.
Saludos.


muchisimas gracias a todos... la respuesta que me sirvio fue esta..

salu2!!
By Demoniox