Error Visual basic 6 Runtime error 7 por culpa de “Microsoft Forms 2.0 Object library” (FM20.DLL)

Una aplicacion de vb 6 que funcionaba correctamente, me toca reinstalar el windows por uno original y pumm.  La aplicación al iniciar lanza un error 7, memoria insuficiente (Error 7, Memoria insuficiente) o en ingles: "Out of Memory, runtime error 7".

Me he puesto a registar los dll's necesarios para el programa y todos bien.  mediante el comando regsrv32, en este caso:

  • regsvr32 C:\mdu\VBMySQLDirect.dll -> Myslq conector
  • regsvr32 C:\mdu\Mscomctl.ocx
  • regsvr32 C:\mdu\COMCTL32.OCX
  • regsvr32 C:\mdu\FM20.DLL  -> menu desplegables con autocompletado -> EL PROBLEMA!
  • regsvr32 C:\mdu\ImageWeb.ocx -> gif animados

El error seguia... El problema en mi caso, venia por usar un componente en el proyecto del tipo: Microsoft Forms 2.0 Object library", este component contenido en su dll FM20.DLL correctamente en la carpeta del programa y registrado sin problemas, resulta que no es capaz de funcionar sin el OFFICE... Así que el causante de todo esto es un bug de este componente que no es capaz decir nada mas que : "RUNTIME ERROR 7: Out of Memory".

El programa en cuestion usaba este componente para hacer una imitación a un suggest en un combobox. Que ahora he sustituido por una función de autoCompletado sin usar nada mas que cuatro porciones de código:

Visual Basic:
  1. ' Una variable en las declaraciones del formulario que contiene el combo:
  2.  
  3. Private Backspaced as As Boolean
  4.  
  5. 'una funcion que puedes poner en un modulo, o en las declaraciones del form , es la encargada de autocompletar
  6.  
  7. Public Function AutoCompletadoCombo(ctlComboBox As Control)
  8. '--------- <<Called from the _Change event of cboComboBox>> ----------------
  9. ' -- autor: http://vbasic.astalaweb.com/C_ComboBox/1_Combobox.asp -------
  10.  
  11. Dim i%, intSel%  ' % is a "shorthand" for Integers
  12.  
  13. 'If this fires in response to a Backspace or Delete, then
  14. 'Exit the function because then you wouldn't be able to backup:
  15. Select Case (Backspaced Or Len(ctlComboBox .Text) = 0)
  16. Case True: Backspaced = False: Exit Function
  17. End Select
  18.  
  19. With ctlComboBox
  20. 'Run through the available items in a For...Loop and grab
  21. 'the first one that matches the selection:
  22. For i = 0 To .ListCount - 1
  23. If InStr(1, .List(i), .Text, vbTextCompare) = 1 Then
  24. intSel = .SelStart
  25. .Text = .List(i)
  26. .SelStart = intSel
  27. .SelLength = Len(.Text) - intSel
  28. Exit For
  29.  
  30. End If
  31. Next i
  32. End With
  33.  
  34. End Function
  35.  
  36. ' Y en el evento KEYDOWN del control combo_box
  37. Select Case KeyCode
  38. Case vbKeyBack, vbKeyDelete 'if the Backspace or Delete key is pressed...
  39. Select Case Len(NOMBRE_DEL_COMBOBOX.Text)
  40. Case Is <> 0 '...and if the cboComboBox has text, then
  41. Backspaced = True  'set this to True
  42.  
  43. End Select
  44. End Select
  45.  
  46. ' para activarlo en el evento Change del <strong>combobox </strong>es necesario llamar a la funciona de autocompletado:
  47.  
  48. AutoCompletadoCombo nombreDelComboBox

un ejemplo sencillo para descargar

Al ejemplo le faltaba que fuera correctamente la propiedad listindex del combo, la que yo utilizaba, asi que tuve que modificar unas lineas para conseguirlo. Si alquien lo pide lo posteare...

Con este sencillo codigo tenemos un control combo box normal convertido en un suggest con el contenido de el. Adios al componente  Microsoft Forms 2.0 object Library y a las dependencias del programa a tener instalado Microsfot office! Todo por instalar OpenOfice :P  vaya dia!

Etiquetas: , , , , , , , , , , ,

5 comentarios para “Error Visual basic 6 Runtime error 7 por culpa de “Microsoft Forms 2.0 Object library” (FM20.DLL)”

  1. Iñigo Panera dice:

    Muy interesante el post. Gracias.

    He tenido el mismo error al instalar Open Office 3.0
    La solución a la que he llegado sin tener que tocar una línea de código ha sido:

    1- Copiar una versión anterior de la fm20.dll por ejemplo v11.0.5709.0
    en c:\windows\system32\ que es su ubicación correcta.

    2- Desregistrar la librería: 'Widows + R' y regsvr32 /u fm20.dll

    3- Volver a registrar la librería correcta: 'Widows + R' y regsvr32 c:\windows\system32\fm20.dll

    Nota: Las versiones v12 de la fm20.dll y posteriores producen el 'Error 7 en timpo de ejecución. Sin memoria' cuando son usadas con Visuall Basic 5 y 6. Microsoft directamente recomienda eliminar la fm20.dll del proyecto.

  2. harold andres orduz valencia dice:

    tengo un problema con una libreria me sale FTD2XX.dll como hago ayudame mi correo es orduzandres02( A r r o b a) hotmail punto com

  3. cristian dice:

    Si nos explicas cual es el problema intentamos ayudarte. Para que usas esa librería? Que version de Visual basic usas?

    que mensaje de error te lanza el compilador al ejecutar el programa?

  4. Alfa dice:

    Al instalar programas hechos en VB 6 sale este mensaje : la actualización de ficheros ha fallado, debe reiniciar el sistema para instalar.

    ¿Sabéis la solución para que no dé este error y se puedan instalar? Gracias.

  5. cristian dice:

    Necesitaria saber el programa que estas instalando.

    Y que sistema operativo usas? XP, vista?

Deja un comentario

CAPTCHA Image Audio Version
Reload Image