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 07-08-2007
Stevenmn Stevenmn is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Stevenmn Va por buen camino
Llamar una fución(parametros)

Buenas, lo que pasa es que tengo un problema desde ayer, hice una función para buscar en un memo, esta bien y todo, pero no se como llamarla, hace muy poco empece en delphi y pues estoy buscando a ver....


Esta es la funcion:

Cita:
function buscar(s:string;posicion:longint;o:boolean):string;
begin

o := InputQuery('Buscar..','Escriba la palabra a buscar',s);
posicion := Pos(s,form1.Memo1.Text)-1;

form1.Memo1.SelStart := posicion;
form1.Memo1.SelLength := Length(s);
form1.Memo1.SetFocus;

end;
y esta es la llamada:


Cita:
procedure TForm1.Buscar1Click(Sender: TObject);
begin
buscar('no se que poner aqui);
end;
El error es:


Cita:
value assigned o never used
Es con la variable o

Última edición por Stevenmn fecha: 07-08-2007 a las 22:11:32.
Responder Con Cita
  #2  
Antiguo 07-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Pues estan mal declaradas las variables para comenzar, seria bueno si nos contaras que tipo de resultado debe devolver la funcion, booleano??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 07-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
algo así

Código Delphi [-]
  buscar('no se que poner aqui',1,true);


Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 07-08-2007
Stevenmn Stevenmn is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Stevenmn Va por buen camino
Cita:
Pues estan mal declaradas las variables para comenzar, seria bueno si nos contaras que tipo de resultado debe devolver la funcion, booleano??
Bueno pues no soy muy experto en funciones, pero el inputquery por lo que he visto se usa una variable booleana y el resultado como string

Cita:
buscar('no se que poner aqui',1,true);
Gracias man era justo eso, pero una cosa porque se le da el valor de 1 a posicion ?

No puede estar en cero o que ?

1 es para inicializarla ?
Responder Con Cita
  #5  
Antiguo 07-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Te explico cuando trabajas con funciones y procedimientos debes separar los parametros de las variables, en tu caso tienes tres variables y ningun parametro por lo que deberia quedar algo asi

Código Delphi [-]
function buscar:string;
var
   s:string;
   posicion:longint;
   o:boolean

ahora te puedo ayudar a estructurar mejor tu funcion pero dime que esperas de resultado de ella, que te devuelva el string que consiguio o un simple verdadero en caso de haberlo encontrado, porq segun tu codigo no se devuelve nada, en ese caso te convendria un procedimiento

pero todos son conjeturas hasta que nos explique mejor loq ue necesitas
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 07-08-2007
Stevenmn Stevenmn is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Stevenmn Va por buen camino
Bueno lo que quiero hacer es un tipo de busqueda estilo bloc de notas, osea la string que le de en el inputquery la busque en el memo, si la encuentra empiece desde el valor de posicion, obtenga la longitud de la cadena y luego le de el focus a ella, para asi quedar señalada la palabra encontrada.

Fuciona bien.

Ahora estoy es tratando de hacer la "busqueda siguiente", pero como esto ya lo habia hecho en vb, pues ya se como podria, el problema en si era lo de los parametros dela funcion.


------

aaa y por lo de la funcion la hice asi por este documento del guille

http://www.elguille.info/delphi/apun...ntesDelphi.htm

Cita:
ROCEDIMIENTOS Y FUNCIONES



Delphi, es un lenguaje estructurado, lo cual indica que los programas escritos en este lenguaje, pueden descomponerse en pequeños módulos que pueden ser llamados cuando los necesitemos. Estos módulos en Pascal se llaman funciones y se identifican mediante un nombre. Se declaran del siguiente modo:



function nombre (argumento1: tipo; argumento2: tipo;...) : tipo;

Begin

<Acciones a realizar>

End;



Donde nombre es el nombre que se asignará a la función, argumento1 y argumento2 son valores que pasan a la función y tipo es el tipo de valor que retornará como resultado. Por ejemplo, si queremos implementar en Pascal la función matemática: f(x, y) = (x * x + y) / x siendo x e y números enteros, se realizaría de este modo:



Function f (x: integer; y: integer) : integer;

Begin

F = (x * x + y) / x;

End;

Última edición por Stevenmn fecha: 07-08-2007 a las 22:52:27.
Responder Con Cita
  #7  
Antiguo 07-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Stevenmn Ver Mensaje
Bueno pues no soy muy experto en funciones, pero el inputquery por lo que he visto se usa una variable booleana y el resultado como string



Gracias man era justo eso, pero una cosa porque se le da el valor de 1 a posicion ?

No puede estar en cero o que ?

1 es para inicializarla ?
Pues asigne 1 porque se me pego la gana, , vamos, que puede ser el valor que sea o necesites. fue solo un ejemplo.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 08-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Pues esta muy bien que te hayas documentado es bueno aprender las cosas por esfuerzo propio, pero lo que te decia es una forma mas adecuada de realizar las cosas, y te explicaba cosas que quizas no has visto, pues tienes las dos opciones tu escojes cual se adapte mas a tus necesidades

me alegra qe hayas podido resolver el problema
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #9  
Antiguo 08-08-2007
Stevenmn Stevenmn is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Stevenmn Va por buen camino
a listo gracias,

lo que no he podido hacer la busqueda siguiente intento pornerle +1 al llamarla, pero nada.


-------------------------------

Otra cosa en que evento se encargar de el texto seleccionado por ejemplo:

Tengo en un mainmenu el boto copiar, pero cuando no este nada seleccionado quiero que dessactivado, al igual queel bloc de notas de win, en algun onmouse o el onchage o ke.... voy viendo....

Última edición por Stevenmn fecha: 08-08-2007 a las 00:22:40.
Responder Con Cita
  #10  
Antiguo 08-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
aclareme algo, la busqueda funciono o no??

si no funciona prueba esto:

Código Delphi [-]
procedure buscar;
var
   cPalabra: String;
   nPos: Integer;
begin
   if InputQuery('Buscar...', 'Escriba la palabra a buscar', cPalabra) then
   begin
      nPos := Pos(cPalabra, Memo1.Text) - 1;
      Memo1.SetFocus;
      Memo1.SelStart := nPos;
      Memo1.SelLength := Length(cPalabra);
   end;
end;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #11  
Antiguo 08-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
No habia visto bien lo que habias escrito,
Cita:
Empezado por Stevenmn Ver Mensaje
lo que no he podido hacer la busqueda siguiente intento pornerle +1 al llamarla, pero nada.
pues para realizar la busqueda siguiente no veo como adaptar lo qeu tienes a lo que necesitas, asi que te propongo dos bloques de codigo nuevos

Para buscar

Código Delphi [-]
if InputQuery('Buscar...', 'Escriba la palabra a buscar', cPalabra) then
   begin
      nPos := -1;
      nPos := Pos(cPalabra, Memo1.Text) - 1;
      if nPos =  -1 then
      begin
         ShowMessage('Palabra no encontrada');
         exit;
      end;
      cSinBuscar := Copy(Memo1.Text, nPos + 1 + Length(cPalabra), Length(Memo1.Text));
      nLength := Length(Copy(Memo1.Text, 1, nPos)) + Length(cPalabra);
      Memo1.SetFocus;
      Memo1.SelStart := nPos;
      Memo1.SelLength := Length(cPalabra);
   end;

Para buscar el siguiente

Código Delphi [-]
nPos := -1;
   nPos := Pos(cPalabra, cSinBuscar) - 1;
   if nPos =  -1 then
   begin
      ShowMessage('Palabra no encontrada');
      exit;
   end;
   cSinBuscar := Copy(cSinBuscar, nPos + 1 + Length(cPalabra), Length(cSinBuscar));
   Memo1.SetFocus;
   Memo1.SelStart := nPos + nLength;
   Memo1.SelLength := Length(cPalabra);
   nLength := nLength + Length(Copy(cSinBuscar, 1, nPos)) + Length(cPalabra);

Cabe destacar que debes tener esta variables en las globales

Código Delphi [-]
cPalabra, cSinBuscar: String;
   nPos, nLength: Integer;

cualquier duda avisas
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #12  
Antiguo 08-08-2007
Stevenmn Stevenmn is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Stevenmn Va por buen camino
muchas gracias por el code, sino consigo hacerla como quiero pues usare esa forma, lo que pasa es que lo quiero hacer de esta forma

http://www.recursosvisualbasic.com.a...ico5.htm#instr

Código:
Option Explicit

Private m_Pos As Integer


Sub buscar_cadena(ByVal Posicion As Integer)

Dim p As Integer, Frase As String

    Frase = txt_Buscar
    
    p = InStr(Posicion, Text1, Frase)
    
    If p > 0 Then
        m_Pos = p
        
        With Text1
            .SelStart = m_Pos - 1
            .SelLength = Len(Frase)
            .SetFocus
        End With
    Else
        MsgBox "No se encontró la frase", vbInformation
        Text1.SetFocus
    End If
End Sub

Private Sub Command1_Click()
Call buscar_cadena(1)
End Sub

Private Sub Command2_Click()
Call buscar_cadena(m_Pos + 1)
End Sub
Este mismo codigo lo he hecho en delphi, lo unico que varia es ala funcion isntr por pos.
El problema que creo que es, es que la funcion POS de delphi no requiere una posicion, en cambio la instr si, no habra otra ??


^^

Última edición por Stevenmn fecha: 08-08-2007 a las 19:07:24.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Llamar a un .exe msdos con parametros lroblesco Varios 5 29-05-2011 05:53:27
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 15:18:42
Llamar exe de fox kvtm Varios 2 14-08-2006 01:34:08
Llamar Dll mcarazas Varios 0 06-07-2006 01:18:28
Llamar un flash con parámetros Alexander Varios 0 13-06-2005 22:44:10


La franja horaria es GMT +2. Ahora son las 15:20:37.


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