Usar DLL en Visual Basic 6

662 views
Skip to first unread message

Jarley Vargas Damian

unread,
Jan 18, 2010, 5:15:48 PM1/18/10
to qt-es...@googlegroups.com

Hola, he creado una DLL y puse el código que supuestamente sirve para exportar las funciones y poder usarlas desde VB6 pero no me funciona: el código es:

 

Koocivb6.pro

#-------------------------------------------------

#

# Project created by QtCreator 2010-01-18T14:33:14

#

#-------------------------------------------------

 

QT       += network sql

 

QT       += gui

 

TARGET = koocivb6

TEMPLATE = lib

 

DEFINES += KOOCIVB6_LIBRARY

 

SOURCES += koocivb6.cpp

 

HEADERS += koocivb6.h\

        koocivb6_global.h

 

 

Koocivb6.h

 

#ifndef KOOCIVB6_H

#define KOOCIVB6_H

 

#include "koocivb6_global.h"

 

class KOOCIVB6SHARED_EXPORT Koocivb6 {

public:

    Koocivb6();

};

 

#endif // KOOCIVB6_H

 

 

koocivb6_global.h

 

#ifndef KOOCIVB6_GLOBAL_H

#define KOOCIVB6_GLOBAL_H

 

#include <QtCore/qglobal.h>

 

#if defined(KOOCIVB6_LIBRARY)

#  define KOOCIVB6SHARED_EXPORT Q_DECL_EXPORT

#else

#  define KOOCIVB6SHARED_EXPORT Q_DECL_IMPORT

#endif

 

#ifdef Q_WS_WIN

#define MY_EXPORT __declspec(dllexport)

#else

#define MY_EXPORT

#endif

 

#endif // KOOCIVB6_GLOBAL_H

 

koocivb6.cpp

 

#include "koocivb6.h"

 

#include <QMessageBox>

 

Koocivb6::Koocivb6()

{

}

 

extern "C" MY_EXPORT int avg(QString msg)

 {

     QMessageBox omsg;

     omsg.setText(msg);

     omsg.exec();

     return 1;

 }

 

 

Por favor si alguien sabe algo al respecto le agradezco su ayuda. El objetivo es usar la DLL desde Visual Basic 6.

Lisandro Damián Nicanor Pérez Meyer

unread,
Jan 18, 2010, 6:15:17 PM1/18/10
to qt-es...@googlegroups.com
On Monday 18 January 2010 19:15:48 Jarley Vargas Damian wrote:
> Hola, he creado una DLL y puse el código que supuestamente sirve para
> exportar las funciones y poder usarlas desde VB6 pero no me funciona: el
> código es:

¿Que versión de Qt estás usando? Estimo que la open source, de ser así, creo
que no hay soporte para VB. La dll ¿con qué compilador la creaste?

¡Saludos!

--
http://www.phdcomics.com/comics/archive.php?comicid=56

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/

signature.asc

Jarley Vargas Damian

unread,
Jan 18, 2010, 8:42:28 PM1/18/10
to qt-es...@googlegroups.com
Hola Lisandro, la version de qt es la ultima y es la open source, el
compilador es mingw32. Que me recomiendas? Gracias.

El 18/01/10, Lisandro Damián Nicanor Pérez Meyer
<perez...@gmail.com> escribió:

--
Enviado desde mi dispositivo móvil

Lisandro Damián Nicanor Pérez Meyer

unread,
Jan 18, 2010, 8:47:42 PM1/18/10
to qt-es...@googlegroups.com
On Monday 18 January 2010 22:42:28 Jarley Vargas Damian wrote:
> Hola Lisandro, la version de qt es la ultima y es la open source, el
> compilador es mingw32. Que me recomiendas? Gracias.

No usar VB :-)

Si no, vas a tener que buscar en la web como han hecho para compilar Qt con
VB...

¡saludos!

--
Un viejo proverbio de El.Machi dice que la memoria es como las
papas fritas... ¡nunca sobran!

signature.asc

Jorge Eastman

unread,
Jan 18, 2010, 8:50:38 PM1/18/10
to qt-es...@googlegroups.com
Hola Jarley

Por que no pruebas con la versión compilada con VC, en http://qt.nokia.com/downloads  puedes descargar el framework pre-compilado para VS-2008.

Ahora, si no tienes el Visual Studio .NET, puedes descargar la versión Express, yo hasta ahora solo estoy aprendiendo, pero he podido compilar sin problemas.


Sería bueno conocer como te ha ido.

Saludos a todos.


--
Has recibido este mensaje porque estás suscrito al grupo "Qt-español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a qt-es...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a qt-espanol+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/qt-espanol?hl=es.






--
     Jorge Eastman
Consultoría y Sistemas

Jarley Vargas Damian

unread,
Jan 18, 2010, 10:03:50 PM1/18/10
to qt-es...@googlegroups.com
Gracias por sus respuestas, por ahora mi objetivo es usar QOCI para
mejorar el tiempo de respuesta ya que mi bd esta en españa y las
aplicaciones en peru en vb6. Ya compile OCI y la respuesta es acetable
ya que una consulta con ADO en vb6 toma de 7 a 8 segundos y con OCI en
qt toma 0.59 segundos. Quiero crear una dll en qt para usar OCI y esta
dll usarla en vb6 pero del modo en que se genera con qt no es
compatible con vb6, se que hay una forma de hacerlo compatible con vb6
pero no recuerdo como.

El 18/01/10, Jorge Eastman <jeast...@gmail.com> escribió:

>> qt-espanol+...@googlegroups.com<qt-espanol%2Bunsu...@googlegroups.com>


>> Para tener acceso a más opciones, visita el grupo en
>> http://groups.google.com/group/qt-espanol?hl=es.
>>
>>
>>
>>
>
>
> --
> Jorge Eastman
> Consultoría y Sistemas
>

--

Jorge Eastman

unread,
Jan 18, 2010, 10:14:35 PM1/18/10
to qt-es...@googlegroups.com
Mi hermano.

No se si el grupo lo permita, yo tengo algo de experiencia con VB6 con base de datos remotos, específicamente M$SQL-Server y una vez que me conecté con una DB de Sybase, si me muestras la consulta e indicas alguna información como la cantidad de registros y el tamaño de cada registro podría ayudarte a averiguar el porque el retardo, en mi caso, la base de datos estaba en Venezuela y  la aplicación en estados unidos (creo que Houston) y no se reportó problemas de tiempo, claro eso depende de muchos factores.

Jesús Fernández Prieto

unread,
Jan 19, 2010, 2:36:53 AM1/19/10
to qt-es...@googlegroups.com
Supongo que llamar a LoadLibrary y GetProcAddress del Api de Windows ya lo habrás probado sin éxito, no?

Un saludo

2010/1/19 Jorge Eastman <jeast...@gmail.com>

Jarley Vargas Damian

unread,
Jan 19, 2010, 8:47:09 AM1/19/10
to qt-es...@googlegroups.com

Hola Jorge, gracias, pero lamentablemente las políticas de la empresa no me permiten mostrarte dicha información, el problema de la red es la latencia que existe entre Perú y España, ahora hay mas de 60 aplicaciones en VB6 lo ideal seria pasar todas estas a QT, pero por el tiempo del proyecto es imposible, así que como alternativa lo mas factible es solo modificar la forma de obtención de data para las aplicaciones VB6, por eso quiero crear una DLL y solo modificar en VB6 la forma que obtiene la data.



Jesús, aun no e probado LoadLibrary y GetProcAddress, si tuvieses algún ejemplo con QT te lo agradecería mucho.


Saludos

Jesús Fernández Prieto

unread,
Jan 19, 2010, 9:46:14 AM1/19/10
to qt-es...@googlegroups.com
Ahora mismo no tengo ninguna máquina con Qt instalado en Windows, por lo tanto no podría probarlo. Sin embargo con una búsqueda rápida he encontrado esto. Echale un vistazo:

http://edll.sourceforge.net/

2010/1/19 Jarley Vargas Damian <jarl...@gmail.com>

martin ribelotta

unread,
Jan 19, 2010, 3:21:43 PM1/19/10
to qt-es...@googlegroups.com
Lo que a mi se me ocurriria es comunicar un proceso Qt con VB6
mediante un socket local (TCP por ejemplo con WinSock en VB y
QTcpSocket en Qt) y hacer una infraestructura cliente servidor...

El día 19 de enero de 2010 12:46, Jesús Fernández Prieto
<jsf...@gmail.com> escribió:

Jarley Vargas Damian

unread,
Jan 19, 2010, 3:25:04 PM1/19/10
to qt-es...@googlegroups.com
Martin lograste hacerlo, yo aun sigo con el problema, ya instale es sdk de QT para VS .net 2008 logre que la dll se agregue como referencia a VB6 pero al momento de utilizarla es decir:

Dim oDll = New DllQt

me sale un error de automatización.

ChIIph

unread,
Jan 19, 2010, 5:25:05 PM1/19/10
to qt-es...@googlegroups.com
On 01/19/10 17:25, Jarley Vargas Damian wrote:
> Martin lograste hacerlo, yo aun sigo con el problema, ya instale es
> sdk de QT para VS .net 2008 logre que la dll se agregue como
> referencia a VB6 pero al momento de utilizarla es decir:
>
> Dim oDll = New DllQt
>
> me sale un error de automatización.
Lo que el ruso quiso decir (corregime ruso, si me equivoco) es que por
un lado haces un app en C++ y Qt y por otro una en VB6 y las comunicas a
traves de un socket, o alguna otra tecnica de IPC. De esta forma usas Qt
dentro de VB sin tener Qt dentro de VB :) ...

Lo cual lleva a la pregunta: con que objetivo queres realizar todo esto?
(Perdonen si esto ya se dijo, pero no vengo siguiendo el hilo con lujo
de detalles)... Lo pregunto, porque por lo que parece es bastante mas
trabajoso hacer la conexion entre Qt y VB, que hacer las cosas
directamente en C++ o Python y usar Qt de formas mas nativa.

Saludos,
Tomas


>
>
>
> El 19 de enero de 2010 15:21, martin ribelotta

> <martinr...@gmail.com <mailto:martinr...@gmail.com>> escribió:


>
> Lo que a mi se me ocurriria es comunicar un proceso Qt con VB6
> mediante un socket local (TCP por ejemplo con WinSock en VB y
> QTcpSocket en Qt) y hacer una infraestructura cliente servidor...
>
> El día 19 de enero de 2010 12:46, Jesús Fernández Prieto

> <jsf...@gmail.com <mailto:jsf...@gmail.com>> escribió:


> > Ahora mismo no tengo ninguna máquina con Qt instalado en
> Windows, por lo
> > tanto no podría probarlo. Sin embargo con una búsqueda rápida he
> encontrado
> > esto. Echale un vistazo:
> >
> > http://edll.sourceforge.net/
> >
> > 2010/1/19 Jarley Vargas Damian <jarl...@gmail.com

> <mailto:jarl...@gmail.com>>


> >>
> >> Hola Jorge, gracias, pero lamentablemente las políticas de la
> empresa no
> >> me permiten mostrarte dicha información, el problema de la red
> es la
> >> latencia que existe entre Perú y España, ahora hay mas de 60
> aplicaciones en
> >> VB6 lo ideal seria pasar todas estas a QT, pero por el tiempo
> del proyecto
> >> es imposible, así que como alternativa lo mas factible es solo
> modificar la
> >> forma de obtención de data para las aplicaciones VB6, por eso
> quiero crear
> >> una DLL y solo modificar en VB6 la forma que obtiene la data.
> >>
> >> Jesús, aun no e probado LoadLibrary y GetProcAddress, si
> tuvieses algún
> >> ejemplo con QT te lo agradecería mucho.
> >>
> >> Saludos
> >>
> >>
> >> El 18 de enero de 2010 22:14, Jorge Eastman

> <jeast...@gmail.com <mailto:jeast...@gmail.com>>


> >> escribió:
> >>>
> >>> Mi hermano.
> >>> No se si el grupo lo permita, yo tengo algo de experiencia con
> VB6 con
> >>> base de datos remotos, específicamente M$SQL-Server y una vez
> que me conecté
> >>> con una DB de Sybase, si me muestras la consulta e indicas alguna
> >>> información como la cantidad de registros y el tamaño de cada
> registro
> >>> podría ayudarte a averiguar el porque el retardo, en mi caso,
> la base de
> >>> datos estaba en Venezuela y la aplicación en estados unidos
> (creo que
> >>> Houston) y no se reportó problemas de tiempo, claro eso
> depende de muchos
> >>> factores.
> >>>
> >>> El 18 de enero de 2010 22:33, Jarley Vargas Damian

> <jarl...@gmail.com <mailto:jarl...@gmail.com>>


> >>> escribió:
> >>>>
> >>>> Gracias por sus respuestas, por ahora mi objetivo es usar
> QOCI para
> >>>> mejorar el tiempo de respuesta ya que mi bd esta en españa y las
> >>>> aplicaciones en peru en vb6. Ya compile OCI y la respuesta es
> acetable
> >>>> ya que una consulta con ADO en vb6 toma de 7 a 8 segundos y
> con OCI en
> >>>> qt toma 0.59 segundos. Quiero crear una dll en qt para usar
> OCI y esta
> >>>> dll usarla en vb6 pero del modo en que se genera con qt no es
> >>>> compatible con vb6, se que hay una forma de hacerlo
> compatible con vb6
> >>>> pero no recuerdo como.
> >>>>
> >>>> El 18/01/10, Jorge Eastman <jeast...@gmail.com

> <mailto:jeast...@gmail.com>> escribió:


> >>>> > Hola Jarley
> >>>> >
> >>>> > Por que no pruebas con la versión compilada con VC, en
> >>>> > http://qt.nokia.com/downloads puedes descargar el framework
> >>>> > pre-compilado
> >>>> > para VS-2008.
> >>>> >
> >>>> > Ahora, si no tienes el Visual Studio .NET, puedes descargar
> la versión
> >>>> > Express, yo hasta ahora solo estoy aprendiendo, pero he podido
> >>>> > compilar sin
> >>>> > problemas.
> >>>> >
> >>>> >
> >>>> > Descargar el framework:
> >>>> > http://qt.nokia.com/downloads/windows-cpp-vs2008
> >>>> > Descar VS Express:
> >>>> > http://www.microsoft.com/express/Downloads/#2008-Visual-CPP
> >>>> >
> >>>> > Sería bueno conocer como te ha ido.
> >>>> >
> >>>> > Saludos a todos.
> >>>> >
> >>>> >
> >>>> > El 18 de enero de 2010 21:12, Jarley Vargas Damian

> >>>> > <jarl...@gmail.com <mailto:jarl...@gmail.com>>escribió:


> >>>> >
> >>>> >> Hola Lisandro, la version de qt es la ultima y es la open
> source, el
> >>>> >> compilador es mingw32. Que me recomiendas? Gracias.
> >>>> >>
> >>>> >> El 18/01/10, Lisandro Damián Nicanor Pérez Meyer

> >>>> >> <perez...@gmail.com <mailto:perez...@gmail.com>> escribió:

> <mailto:qt-es...@googlegroups.com>.


> >>>> >> Para anular tu suscripción a este grupo, envía un correo
> electrónico
> >>>> >> a
> >>>> >>
> >>>> >> qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com><qt-espanol%2Bunsu...@googlegroups.com
> <mailto:qt-espanol%252Buns...@googlegroups.com>>


> >>>> >> Para tener acceso a más opciones, visita el grupo en
> >>>> >> http://groups.google.com/group/qt-espanol?hl=es.
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >
> >>>> >
> >>>> > --
> >>>> > Jorge Eastman
> >>>> > Consultoría y Sistemas
> >>>> >
> >>>>
> >>>> --
> >>>> Enviado desde mi dispositivo móvil
> >>>>
> >>>> --
> >>>> Has recibido este mensaje porque estás suscrito al grupo
> "Qt-español" de
> >>>> Grupos de Google.
> >>>> Para publicar una entrada en este grupo, envía un correo
> electrónico a

> >>>> qt-es...@googlegroups.com <mailto:qt-es...@googlegroups.com>.


> >>>> Para anular tu suscripción a este grupo, envía un correo
> electrónico a
> >>>> qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com>


> >>>> Para tener acceso a más opciones, visita el grupo en
> >>>> http://groups.google.com/group/qt-espanol?hl=es.
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Jorge Eastman
> >>> Consultoría y Sistemas
> >>>
> >>>
> >>> --

> >>> Has recibido este mensaje porque estás suscrito al grupo
> "Qt-español" de
> >>> Grupos de Google.
> >>> Para publicar una entrada en este grupo, envía un correo
> electrónico a

> >>> qt-es...@googlegroups.com <mailto:qt-es...@googlegroups.com>.


> >>> Para anular tu suscripción a este grupo, envía un correo
> electrónico a
> >>> qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com>


> >>> Para tener acceso a más opciones, visita el grupo en
> >>> http://groups.google.com/group/qt-espanol?hl=es.
> >>>
> >>
> >>
> >> --

> >> Has recibido este mensaje porque estás suscrito al grupo
> "Qt-español" de
> >> Grupos de Google.
> >> Para publicar una entrada en este grupo, envía un correo
> electrónico a

> >> qt-es...@googlegroups.com <mailto:qt-es...@googlegroups.com>.


> >> Para anular tu suscripción a este grupo, envía un correo
> electrónico a
> >> qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com>


> >> Para tener acceso a más opciones, visita el grupo en
> >> http://groups.google.com/group/qt-espanol?hl=es.
> >>
> >
> >
> > --

> > Has recibido este mensaje porque estás suscrito al grupo
> "Qt-español" de
> > Grupos de Google.
> > Para publicar una entrada en este grupo, envía un correo
> electrónico a

> > qt-es...@googlegroups.com <mailto:qt-es...@googlegroups.com>.


> > Para anular tu suscripción a este grupo, envía un correo
> electrónico a
> > qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com>


> > Para tener acceso a más opciones, visita el grupo en
> > http://groups.google.com/group/qt-espanol?hl=es.
> >
> >
>
> --

> Has recibido este mensaje porque estás suscrito al grupo
> "Qt-español" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo
> electrónico a qt-es...@googlegroups.com

> <mailto:qt-es...@googlegroups.com>.


> Para anular tu suscripción a este grupo, envía un correo
> electrónico a qt-espanol+...@googlegroups.com

> <mailto:qt-espanol%2Bunsu...@googlegroups.com>


> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/qt-espanol?hl=es.
>
>
>
>
>
>
> --

signature.asc

Jarley Vargas Damian

unread,
Jan 19, 2010, 4:33:56 PM1/19/10
to qt-es...@googlegroups.com
Hola ChIIph, el objetivo es llevar las BD Oracle a España, las aplicaciones VB6 se quedan en Perú y son mas de 60 las cuales usan ADO y RDO, por mi parte compile QOCI e hice una prueba con una consulta que en VB6 toma de 7 a 8 segundos y en QT con OCI toma 0.60 segundos, lo ideal es pasar todas las aplicaciones a Qt, pero como el tiempo del proyecto no nos permite hacerlo ya que nos quedaria muy corto, quiero crear una dll en QT la cual se encargara de traerme los datos, los cuales pasare a las aplicaiones VB6 para que sigan su curso normalmente. El problema es que las dll que genera QT no son compatibles con VB6.

Gracias.

ChIIph

unread,
Jan 19, 2010, 5:36:42 PM1/19/10
to qt-es...@googlegroups.com
On 01/19/10 18:33, Jarley Vargas Damian wrote:
> Hola ChIIph, el objetivo es llevar las BD Oracle a España, las
> aplicaciones VB6 se quedan en Perú y son mas de 60 las cuales usan ADO
> y RDO, por mi parte compile QOCI e hice una prueba con una consulta
> que en VB6 toma de 7 a 8 segundos y en QT con OCI toma 0.60 segundos,
> lo ideal es pasar todas las aplicaciones a Qt, pero como el tiempo del
> proyecto no nos permite hacerlo ya que nos quedaria muy corto, quiero
> crear una dll en QT la cual se encargara de traerme los datos, los
> cuales pasare a las aplicaiones VB6 para que sigan su curso
> normalmente. El problema es que las dll que genera QT no son
> compatibles con VB6.
Claro, suena razonable...

Y si haces una app de consola y parseas el output? le pasas la consulta
como parametro, y te devuelve el resultado en algun formato que te
convenga, tal vez json o xml... Y despues llamas a esa app desde VB6...


>
> Gracias.
>
> El 19 de enero de 2010 17:25, ChIIph <chi...@gmail.com

> <mailto:chi...@gmail.com>> escribió:


>
> On 01/19/10 17:25, Jarley Vargas Damian wrote:
> > Martin lograste hacerlo, yo aun sigo con el problema, ya instale es
> > sdk de QT para VS .net 2008 logre que la dll se agregue como
> > referencia a VB6 pero al momento de utilizarla es decir:
> >
> > Dim oDll = New DllQt
> >
> > me sale un error de automatización.
> Lo que el ruso quiso decir (corregime ruso, si me equivoco) es que por
> un lado haces un app en C++ y Qt y por otro una en VB6 y las
> comunicas a
> traves de un socket, o alguna otra tecnica de IPC. De esta forma
> usas Qt
> dentro de VB sin tener Qt dentro de VB :) ...
>
> Lo cual lleva a la pregunta: con que objetivo queres realizar todo
> esto?
> (Perdonen si esto ya se dijo, pero no vengo siguiendo el hilo con lujo
> de detalles)... Lo pregunto, porque por lo que parece es bastante mas
> trabajoso hacer la conexion entre Qt y VB, que hacer las cosas
> directamente en C++ o Python y usar Qt de formas mas nativa.
>
> Saludos,
> Tomas
> >
> >
> >
> > El 19 de enero de 2010 15:21, martin ribelotta
> > <martinr...@gmail.com <mailto:martinr...@gmail.com>

> <mailto:martinr...@gmail.com


> <mailto:martinr...@gmail.com>>> escribió:
> >
> > Lo que a mi se me ocurriria es comunicar un proceso Qt con VB6
> > mediante un socket local (TCP por ejemplo con WinSock en VB y
> > QTcpSocket en Qt) y hacer una infraestructura cliente
> servidor...
> >
> > El día 19 de enero de 2010 12:46, Jesús Fernández Prieto
> > <jsf...@gmail.com <mailto:jsf...@gmail.com>

> <mailto:jsf...@gmail.com <mailto:jsf...@gmail.com>>> escribió:


> > > Ahora mismo no tengo ninguna máquina con Qt instalado en
> > Windows, por lo
> > > tanto no podría probarlo. Sin embargo con una búsqueda
> rápida he
> > encontrado
> > > esto. Echale un vistazo:
> > >
> > > http://edll.sourceforge.net/
> > >
> > > 2010/1/19 Jarley Vargas Damian <jarl...@gmail.com
> <mailto:jarl...@gmail.com>

> > <mailto:jarl...@gmail.com <mailto:jarl...@gmail.com>>>


> > >>
> > >> Hola Jorge, gracias, pero lamentablemente las políticas de la
> > empresa no
> > >> me permiten mostrarte dicha información, el problema de
> la red
> > es la
> > >> latencia que existe entre Perú y España, ahora hay mas de 60
> > aplicaciones en
> > >> VB6 lo ideal seria pasar todas estas a QT, pero por el tiempo
> > del proyecto
> > >> es imposible, así que como alternativa lo mas factible es
> solo
> > modificar la
> > >> forma de obtención de data para las aplicaciones VB6, por eso
> > quiero crear
> > >> una DLL y solo modificar en VB6 la forma que obtiene la data.
> > >>
> > >> Jesús, aun no e probado LoadLibrary y GetProcAddress, si
> > tuvieses algún
> > >> ejemplo con QT te lo agradecería mucho.
> > >>
> > >> Saludos
> > >>
> > >>
> > >> El 18 de enero de 2010 22:14, Jorge Eastman
> > <jeast...@gmail.com <mailto:jeast...@gmail.com>

> <mailto:jeast...@gmail.com <mailto:jeast...@gmail.com>>>


> > >> escribió:
> > >>>
> > >>> Mi hermano.
> > >>> No se si el grupo lo permita, yo tengo algo de
> experiencia con
> > VB6 con
> > >>> base de datos remotos, específicamente M$SQL-Server y
> una vez
> > que me conecté
> > >>> con una DB de Sybase, si me muestras la consulta e
> indicas alguna
> > >>> información como la cantidad de registros y el tamaño de
> cada
> > registro
> > >>> podría ayudarte a averiguar el porque el retardo, en mi
> caso,
> > la base de
> > >>> datos estaba en Venezuela y la aplicación en estados unidos
> > (creo que
> > >>> Houston) y no se reportó problemas de tiempo, claro eso
> > depende de muchos
> > >>> factores.
> > >>>
> > >>> El 18 de enero de 2010 22:33, Jarley Vargas Damian
> > <jarl...@gmail.com <mailto:jarl...@gmail.com>

> <mailto:jarl...@gmail.com <mailto:jarl...@gmail.com>>>


> > >>> escribió:
> > >>>>
> > >>>> Gracias por sus respuestas, por ahora mi objetivo es usar
> > QOCI para
> > >>>> mejorar el tiempo de respuesta ya que mi bd esta en
> españa y las
> > >>>> aplicaciones en peru en vb6. Ya compile OCI y la
> respuesta es
> > acetable
> > >>>> ya que una consulta con ADO en vb6 toma de 7 a 8 segundos y
> > con OCI en
> > >>>> qt toma 0.59 segundos. Quiero crear una dll en qt para usar
> > OCI y esta
> > >>>> dll usarla en vb6 pero del modo en que se genera con qt
> no es
> > >>>> compatible con vb6, se que hay una forma de hacerlo
> > compatible con vb6
> > >>>> pero no recuerdo como.
> > >>>>
> > >>>> El 18/01/10, Jorge Eastman <jeast...@gmail.com
> <mailto:jeast...@gmail.com>

> > <mailto:jeast...@gmail.com <mailto:jeast...@gmail.com>>>


> escribió:
> > >>>> > Hola Jarley
> > >>>> >
> > >>>> > Por que no pruebas con la versión compilada con VC, en
> > >>>> > http://qt.nokia.com/downloads puedes descargar el
> framework
> > >>>> > pre-compilado
> > >>>> > para VS-2008.
> > >>>> >
> > >>>> > Ahora, si no tienes el Visual Studio .NET, puedes
> descargar
> > la versión
> > >>>> > Express, yo hasta ahora solo estoy aprendiendo, pero
> he podido
> > >>>> > compilar sin
> > >>>> > problemas.
> > >>>> >
> > >>>> >
> > >>>> > Descargar el framework:
> > >>>> > http://qt.nokia.com/downloads/windows-cpp-vs2008
> > >>>> > Descar VS Express:
> > >>>> >
> http://www.microsoft.com/express/Downloads/#2008-Visual-CPP
> > >>>> >
> > >>>> > Sería bueno conocer como te ha ido.
> > >>>> >
> > >>>> > Saludos a todos.
> > >>>> >
> > >>>> >
> > >>>> > El 18 de enero de 2010 21:12, Jarley Vargas Damian
> > >>>> > <jarl...@gmail.com <mailto:jarl...@gmail.com>

> <mailto:jarl...@gmail.com <mailto:jarl...@gmail.com>>>escribió:


> > >>>> >
> > >>>> >> Hola Lisandro, la version de qt es la ultima y es la
> open
> > source, el
> > >>>> >> compilador es mingw32. Que me recomiendas? Gracias.
> > >>>> >>
> > >>>> >> El 18/01/10, Lisandro Damián Nicanor Pérez Meyer
> > >>>> >> <perez...@gmail.com <mailto:perez...@gmail.com>

> <mailto:perez...@gmail.com <mailto:perez...@gmail.com>>> escribió:

> > <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > >>>> >> Para anular tu suscripción a este grupo, envía un correo
> > electrónico
> > >>>> >> a
> > >>>> >>
> > >>>> >> qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com
> <mailto:qt-espanol%252Buns...@googlegroups.com>><qt-espanol%2Bunsu...@googlegroups.com
> <mailto:qt-espanol%252Buns...@googlegroups.com>
> > <mailto:qt-espanol%252Buns...@googlegroups.com
> <mailto:qt-espanol%25252Bun...@googlegroups.com>>>


> > >>>> >> Para tener acceso a más opciones, visita el grupo en
> > >>>> >> http://groups.google.com/group/qt-espanol?hl=es.
> > >>>> >>
> > >>>> >>
> > >>>> >>
> > >>>> >>
> > >>>> >
> > >>>> >
> > >>>> > --
> > >>>> > Jorge Eastman
> > >>>> > Consultoría y Sistemas
> > >>>> >
> > >>>>
> > >>>> --
> > >>>> Enviado desde mi dispositivo móvil
> > >>>>
> > >>>> --
> > >>>> Has recibido este mensaje porque estás suscrito al grupo
> > "Qt-español" de
> > >>>> Grupos de Google.
> > >>>> Para publicar una entrada en este grupo, envía un correo
> > electrónico a
> > >>>> qt-es...@googlegroups.com
> <mailto:qt-es...@googlegroups.com>

> <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > >>>> Para anular tu suscripción a este grupo, envía un correo
> > electrónico a
> > >>>> qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com


> <mailto:qt-espanol%252Buns...@googlegroups.com>>
> > >>>> Para tener acceso a más opciones, visita el grupo en
> > >>>> http://groups.google.com/group/qt-espanol?hl=es.
> > >>>>
> > >>>>
> > >>>>
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> Jorge Eastman
> > >>> Consultoría y Sistemas
> > >>>
> > >>>
> > >>> --

> > >>> Has recibido este mensaje porque estás suscrito al grupo
> > "Qt-español" de
> > >>> Grupos de Google.
> > >>> Para publicar una entrada en este grupo, envía un correo
> > electrónico a
> > >>> qt-es...@googlegroups.com
> <mailto:qt-es...@googlegroups.com>

> <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > >>> Para anular tu suscripción a este grupo, envía un correo
> > electrónico a
> > >>> qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com


> <mailto:qt-espanol%252Buns...@googlegroups.com>>
> > >>> Para tener acceso a más opciones, visita el grupo en
> > >>> http://groups.google.com/group/qt-espanol?hl=es.
> > >>>
> > >>
> > >>
> > >> --

> > >> Has recibido este mensaje porque estás suscrito al grupo
> > "Qt-español" de
> > >> Grupos de Google.
> > >> Para publicar una entrada en este grupo, envía un correo
> > electrónico a
> > >> qt-es...@googlegroups.com
> <mailto:qt-es...@googlegroups.com>

> <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > >> Para anular tu suscripción a este grupo, envía un correo
> > electrónico a
> > >> qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com


> <mailto:qt-espanol%252Buns...@googlegroups.com>>
> > >> Para tener acceso a más opciones, visita el grupo en
> > >> http://groups.google.com/group/qt-espanol?hl=es.
> > >>
> > >
> > >
> > > --

> > > Has recibido este mensaje porque estás suscrito al grupo
> > "Qt-español" de
> > > Grupos de Google.
> > > Para publicar una entrada en este grupo, envía un correo
> > electrónico a
> > > qt-es...@googlegroups.com
> <mailto:qt-es...@googlegroups.com>

> <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > > Para anular tu suscripción a este grupo, envía un correo
> > electrónico a
> > > qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com


> <mailto:qt-espanol%252Buns...@googlegroups.com>>
> > > Para tener acceso a más opciones, visita el grupo en
> > > http://groups.google.com/group/qt-espanol?hl=es.
> > >
> > >
> >
> > --

> > Has recibido este mensaje porque estás suscrito al grupo
> > "Qt-español" de Grupos de Google.
> > Para publicar una entrada en este grupo, envía un correo
> > electrónico a qt-es...@googlegroups.com
> <mailto:qt-es...@googlegroups.com>

> > <mailto:qt-es...@googlegroups.com


> <mailto:qt-es...@googlegroups.com>>.
> > Para anular tu suscripción a este grupo, envía un correo
> > electrónico a qt-espanol+...@googlegroups.com
> <mailto:qt-espanol%2Bunsu...@googlegroups.com>

> > <mailto:qt-espanol%2Bunsu...@googlegroups.com


> <mailto:qt-espanol%252Buns...@googlegroups.com>>
> > Para tener acceso a más opciones, visita el grupo en
> > http://groups.google.com/group/qt-espanol?hl=es.
> >
> >
> >
> >
> >
> >
> > --

signature.asc

Jarley Vargas Damian

unread,
Jan 19, 2010, 4:46:09 PM1/19/10
to qt-es...@googlegroups.com

Eso también pensé, pero el problema es que el usuario se llenara de archivos y se trata de no mostrar la información al usuario solo resultados, te digo esto porque en las aplicaciones VB6 después de obtener los datos aun lo procesan para mostrársela al usuario, no hay forma de usar oci con VB6 directamente? O alguien que haya logrado compilar una DLL para VB6 totalmente compatible? Saben algo sobre LoadLibrary? Estoy probando con ActiveQt, con este ultimo ya logre que VB6 lo tome como referencia me muestra las funcines que he creado, pero al momento de ejecutar me sale error de automatización.

Lisandro Damián Nicanor Pérez Meyer

unread,
Jan 19, 2010, 5:15:39 PM1/19/10
to qt-es...@googlegroups.com
On Tuesday 19 January 2010 18:46:09 Jarley Vargas Damian wrote:
> Eso también pensé, pero el problema es que el usuario se llenara de
> archivos y se trata de no mostrar la información al usuario solo
> resultados,

¿No podés usar un único archivo temporal y borrarlo cuando no lo necesitás?
Si eso no te sirve, me sumo a la propuesta del socket.


--
Simulations are like miniskirts, they show a lot and hide the essentials.
Hubert Kirrman

signature.asc

Jarley Vargas Damian

unread,
Jan 19, 2010, 5:17:13 PM1/19/10
to qt-es...@googlegroups.com
Ok, gracias, algun ejemplo de socket?

Jarley Vargas Damian

unread,
Jan 19, 2010, 5:24:30 PM1/19/10
to qt-es...@googlegroups.com
Perdon por la molestia, pero en este caso como pasaria la información a VB6 desde QT, como Array?

Martin Ribelotta

unread,
Jan 19, 2010, 6:01:52 PM1/19/10
to qt-es...@googlegroups.com
Hola, recien llego del trabajo y por eso no postee mas nada desde hace
un buen rato...

Hay varias alternativas a tu problema:

1) Hacer bindings de VB6 a funciones C planas (que de ahí trabajarian
con las librerias Qt en un ambiente mas Coso...)
En este link hay mucha información para crear DLLs con mingw (supongo
que usaras esto para Qt, o visual C pero yo de eso na' de na')
http://www.emmestech.com/moron_guides/moron2.html
Lo que se me ocurriria es crear una función tipo:
int __declspec(dllexport) sql_query(LPSTR sql_str) {
QString qsql_str = QString::fromLocal8Bit(sql_str);
return database.exec(qsql_str)? 255:0;
}

Y en VB6 importarlo como:
Declare Function sql_query Lib "myqlib.dll" Alias "sql_query" (ByVal
sql_str as String) As Integer
Por logica deberias tener en el path myqlib.dll, mingw*.dll y todas las
librerias Qt necesarias para ejecutar el codigo (QtCore.dll, QtSql.dll,
etc.)

2) Hacer pipes con las entradas y salidas estandares del programa (en
windows???? huajajajajajaj ^_^) eso solamente es en entornos donde
tengamos entrada y salida estandar que valgan la pena... no pienso hacer
un PIPE en windows por mas que digan que se puede sabiendo lo malo que
es el kernel NT en el manejo de la redireccion y mas si necesito tiempos
de respuesta aceptables...

3) Hacer una aplicación servidor en Qt:
http://doc.trolltech.com/4.6/network-threadedfortuneserver.html
y una aplicacion cliente en VB6:
http://www.osix.net/modules/article/?id=25
Y comunicarlo todo como Strings (es decir, cadenas de bytes terminados
en cero o en su defecto como la serializacion de QString:
[4 bytes long. del string][byte 0]....[byte N-1])
Un buen amigo para estas cosas es QDataStream en Qt y en VB6... errr...
bueno, s = $Chr(...)+$Chr(...)+$Chr(...)+....datos... :-(

La 3 te permitiría tener un solo programa puente entre la conexión Qt y
las aplicaciones VB6 incluso en maquinas diferentes sobre la misma
ethernet...

Bueno, espero haber aclarado algunas dudas, cualquier cosa no dudes en
preguntar...

Un saludo, El Ruso (console powereado con QDE)

Jarley Vargas Damian

unread,
Jan 19, 2010, 6:14:13 PM1/19/10
to qt-es...@googlegroups.com
Hola muchas gracias por tu respuesta, aun no etoy muy avanzado en qt como tu, una consulta el __declspec(dllexport) lo antecedes ante todas funciones que quieres usar en VB6, yo puse esto:



#ifndef KOOCIVB6_GLOBAL_H
#define KOOCIVB6_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(KOOCIVB6_LIBRARY)
#  define KOOCIVB6SHARED_EXPORT Q_DECL_EXPORT
#else
#  define KOOCIVB6SHARED_EXPORT Q_DECL_IMPORT
#endif

#ifdef Q_WS_WIN
#define MY_EXPORT __declspec(dllexport)
#else
#define MY_EXPORT
#endif

#endif // KOOCIVB6_GLOBAL_H


Podemos hablar por G talk?

Jarley Vargas Damian

unread,
Jan 19, 2010, 8:06:38 PM1/19/10
to qt-es...@googlegroups.com
Hola Martin, disculpa la molestia, serias tan amable de enviarme un
ejemplo de una dll en qt osea la fuente que se pueda utilizar en vb6
asi como lo mencionas en el punto nro 1. Te lo agradesco.

El 19/01/10, Martin Ribelotta <martinr...@gmail.com> escribió:

--

MAbeeTT

unread,
Jan 20, 2010, 7:26:33 AM1/20/10
to qt-es...@googlegroups.com
2010/1/19 Jarley Vargas Damian <jarl...@gmail.com>:

> Eso también pensé, pero el problema es que el usuario se llenara de archivos
> y se trata de no mostrar la información al usuario solo resultados, te digo
> esto porque en las aplicaciones VB6 después de obtener los datos aun lo
> procesan para mostrársela al usuario, no hay forma de usar oci con VB6
> directamente? O alguien que haya logrado compilar una DLL para VB6
> totalmente compatible? Saben algo sobre LoadLibrary? Estoy probando con
> ActiveQt, con este ultimo ya logre que VB6 lo tome como referencia me
> muestra las funcines que he creado, pero al momento de ejecutar me sale
> error de automatización.

archivos? a stdout, no podés usar stdout en windows?

--
.::MAbeeTT::.

mabeett [at] gmail [ dot] com
some time ago:


mtspcchaiaeia [at] gmail [dot] com

Jarley Vargas Damian

unread,
Jan 20, 2010, 12:51:28 PM1/20/10
to qt-es...@googlegroups.com

Hola, opte por el punto número 3 que me indico El Ruso:

 

Hacer una aplicación servidor en Qt:
http://doc.trolltech.com/4.6/network-threadedfortuneserver.html
y una aplicacion cliente en VB6:
http://www.osix.net/modules/article/?id=25
Y comunicarlo todo como Strings (es decir, cadenas de bytes terminados
en cero o en su defecto como la serializacion de QString:
[4 bytes long. del string][byte 0]....[byte N-1])
Un buen amigo para estas cosas es QDataStream en Qt y en VB6... errr...
bueno, s = $Chr(...)+$Chr(...)+$Chr(...)+....datos... :-(

 

 

Ya logre la conexión de VB6 con Qt con winsock, pero tengo unas dudas:

 

Tengo que enviar los siguientes parámetros desde VB6 a Qt:

-         Cadena de conexión (BD, user, passw…) ya que cada aplicación utiliza distintos usuarios y roles

-         Consulta SQL

 

Como recibo estos parámetros en Qt?

 

Y por favor Ruso si me puedes explicar mejor de cómo enviar los datos y como recibirlos en VB6 que no me quedo muy claro.

 

Por ultimo cuanta información podré enviar mediante Winsokc, ose si existe límite de datos al momento de enviar ya que algunas consultas devuelven muchos registros por no decir miles.

 

Gracias, espero su gentil ayuda.

Martin Ribelotta

unread,
Jan 20, 2010, 7:20:36 PM1/20/10
to qt-es...@googlegroups.com
El mié, 20-01-2010 a las 12:51 -0500, Jarley Vargas Damian escribió:
> Hola, opte por el punto número 3 que me indico El Ruso:
>
>
>
> Hacer una aplicación servidor en Qt:
> http://doc.trolltech.com/4.6/network-threadedfortuneserver.html
> y una aplicacion cliente en VB6:
> http://www.osix.net/modules/article/?id=25
> Y comunicarlo todo como Strings (es decir, cadenas de bytes terminados
> en cero o en su defecto como la serializacion de QString:
> [4 bytes long. del string][byte 0]....[byte N-1])
> Un buen amigo para estas cosas es QDataStream en Qt y en VB6...
> errr...
> bueno, s = $Chr(...)+$Chr(...)+$Chr(...)+....datos... :-(
>
>
>
>
>
> Ya logre la conexión de VB6 con Qt con winsock, pero tengo unas dudas:
>
>
>
> Tengo que enviar los siguientes parámetros desde VB6 a Qt:
>
> - Cadena de conexión (BD, user, passw…) ya que cada aplicación
> utiliza distintos usuarios y roles
En estos casos, normalmente se crea un heredero de QThread o un
QRunnable para handlear el protocolo en modo bloqueante (se puede hacer
con eventos que es mas elegante pero el modo bloqueante es una buena
aproximación)

class MyProtocolHandler: public QThread {
Q_OBJECT
public:
MyProtocolHandler(int sockDesc, QObject *parent=0l):
QThread(parent)
{
desc = sockDesc;
}

virtual void run() {
// Una coneccion database por cada thread
QString th_name = QVariant(currentThreadId())
.toString();
// MySQL o cualquier otro driver...
QSqlDatabase db = QSqlDatabase
.addConnection("QMYSQL", th_name);
// Parametros de la coneccion
db.setHostName("localhost.localdomain");
db.setDatabaseName("mydatabase");
// Tambien el socket debe ser local al thread
QTcpSocket sock;
QDataStream data(&sock, QIODevice::ReadWrite);
sock.setSocketDescriptor(sock);
// Hacer hasta perder la coneccion
while(sock.state()==QTcpSocket::ConnectedState) {
// Esperar a que se escrivan datos para un int
while (sock.bytesAvailabes()<sizeof(quint32))
sock.waitForReadyRead(-1);
quint32 size;
data >> size; // Leer el int a travez del stream
QByteArray received;
int i=0;
// Leer la cantidad de bytes especificados...
while (i<size) {
sock.waitForReadyRead(-1);
i+= sock.bytesAvailabes();
received.append(sock.readAll());
}
// El formato es un ejemplo
// Se puede usar cualquier formato que se quiera
// Valores eparados por un fin de carro
QStringList parameters = received.split('\n');
QString user = parameters[0];
QString pass = parameters[1];
QString consulta = parameters[2];
// Abrimos la DB con el usuario y pass dado
db.open(user,pass);
// Y ejecutamos la consulta
QSqlRecord r = db.exec(consulta).record();
QString response;
// Armamos la respuesta cono un
// Comma separated value
for(i=0; i<r.count(); i++)
response += r.field(i)
.value().toString()+',';
// Lo escrivimos al stream
data << response;
db.close();
}
}
private:
int desc;
}

Este ejemplo mínimo debería tomarse como eso, un ejemplo.
Realmente debería implementarse un protocolo con CRC (función buena para
eso es qChecksum(QByteArray) pero solo esta del lado de Qt)

Luego, el otro problema es que este ejemplo es bloqueante, con lo cual,
si el protocolo falla o se pierde la conexión la única manera de matar
la QThread es con un terminate (desaconsejado por los gurúes de la
multitarea) Realmente debería usar eventos con signal/slot pero eso
requiere un desarrollo un poco mas elaborado...

Otro punto a tener en cuenta es que no hacemos ningún handling de
errores, por ejemplo para verificar que el paquete tenga el formato
deseado podríamos usar QRegExp lo que nos daría al vuelo la comprobación
de forma del mensaje...

Con respecto a tu pregunta de la capacidad de TCP/IP, yo he probado
transmitir mas de 16Mb de una sola vez y aunque tarda un poco se
transmite sin errores ni problemas (el CRC y el manejo de paquetes se lo
deja todo al sistema operativo)

Con respecto a VB6... err... hace mil años que no toco nada de eso...
pero seguramente seguirá el mismo principio que del lado Qt, abrir
conexión, enviar paquete, esperar conexión... ^_^

Bueno, espero que esto te sirva como punto de partida, hay que
elaborarlo un poco mas pero en principio seria mas o menos así, lamento
no poder darte mas datos sobre sockets en VB6 pero de los que estamos
aquí no conozco a nadie que use activamente algo en ese lenguaje y
cuando lo toque (si, soy viejo y que!!!!) me espanto tanto que volví a
mi Deplhi/C++Builder

Desgraciadamente el mantenimiento de las aplicaciones legacy tiene estos
dolores de cabeza pero con ingenio y una buena documentación pueden ser
mas fáciles de lo que aparentan...

Otra vez, cuando logres algo, mantenos al tanto de tus progresos con
esto...

Un saludo. El Ruso

> +unsub...@googlegroups.com
> >> > <mailto:qt-espanol%2Bunsu...@googlegroups.com>
> >> > > <mailto:qt-espanol%

Jarley Vargas Damian

unread,
Jan 20, 2010, 9:03:10 PM1/20/10
to qt-es...@googlegroups.com
Hola Ruso, por mi parte prefiero el open source pero lamentablemente
las empresas en su mayoria utiliza windows. Por otro lado gracias x
los consejos y ejemplos. Te comento que ya logre enviar datos tanto de
qt a vb6 y de vb6 a qt. Ante esto salen otras dudas como los
parametros que ya tengo una idea de como recibirlos en qt pero aun no
se como enviarlos desde vb6. Sobre los signals son interesantes ya que
estoy utilizando el readyread para responder a vb6, esto me causa otra
duda como manejo la concurrencia de peticiones de las aplicaciones
vb6, teniendo en cunta que son varias y sobre todo algunas consultas o
transcciones son pesadas. Sera posible que te envie el codigo para que
veas si estoy por buen camino?

Gracias.

El 20/01/10, Martin Ribelotta <martinr...@gmail.com> escribió:

Jarley Vargas Damian

unread,
Jan 26, 2010, 5:30:48 PM1/26/10
to qt-es...@googlegroups.com

Hola ChIIph, tendrás algún ejemplo de como pasarle parámetros a una aplicación de consola y como devolver de la misma un String.

Es decir de una app VB6 enviarle una cadena (XML) a la app de consola (QT), y esta última que devuelva una cadena (XML) a la app VB6.

Agradezco tu ayuda.

Reply all
Reply to author
Forward
0 new messages