Jump to content

[vb6] MSGBOX como apagar


Cypher

Recommended Posts

Bem o problema é o seguinte no meio de um programa necessito de enviar dados para um servidor que neste caso será um utilizador ! este servidor está ligado a vários clientes por diferentes portas, apos estarem todos os clientes conectados ao servidor necessito que este me envie automáticamente para cada um dos clientes dados, o que não acontece...

    strsend = ""
    tsend = ""
    For ii = 1 To 7
        strsend = strsend & "&" & dados_send(ii)
    Next ii
    
    tsend = "dados_iniciais" & strsend
    WskS1.SendData tsend
    
    agora = Now
    lst_monitor_server.AddItem (agora + " - dados enviados")

    strsend = ""
    tsend = ""
    For ii = 7 To 15
        strsend = strsend & "&" & dados_send(ii)
    Next ii
    
    tsend = "dados_iniciais" & strsend
    WskS2.SendData tsend
    
    agora = Now
    lst_monitor_server.AddItem (agora + " - dados enviados")

deste modo só me vai enviar dados para o ultimo cliente!

agora se eu meter uma msgbox antes do

WskS1.SendData tsend
e do
WskS2.SendData tsend
ja me vai enviar para os dois só que assim irá ser necessário que o utilizador que fique de servidor tenha a aparecer no seu screen uma msgbox cada vez que envia algo!

O Grande problema é o seguinte só consigo enviar dados se tiver uma msgbox antes do SendData ou se tiver um botão para cada SendData! 

Só que eu não queria que mostra-se nada disto que simplesmente envia-se os dados automáticamente...

Uma solução um bocado "esquezita" era mostrar a msgbox e depois apaga-la automáticamente ! ? Será isto possivel ?!

Outras soluções são sempre bem vindas!

Link to comment
Share on other sites

Pois... estava a axar estranho essa historia da msgbox  😄

É assim sinceramente não sei o porque de issu te estar a acontecer uma vez que estas a utilizar portas e componentes(winsock1 e winsock2) diferentes... Mas pronto... O que esta a acontecer(baseadome no que explicaste) penso eu que seja o seguinte:

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...

Agora é assim, podes resolver issu de plomenos 2 formas. Se a informação a enviar for pouca entao podes trabalhar com o evento "SendComplete" do componente, e a ideia é a seguinte:

O evento "SendComplete" é chamado quando o envio de um pacote é comcluido, então cria-se uma uma variavel tipo boolean que ao ser o evento SendComlpete" chamado lhe mete o valor True. E quando  fazes WskS1.SendData tsend logo a seguir metes o valor da variavel a False, e depois metes issu num ciclo do tipo:

" Enquanto toda a informação nao for enviada faz

        Se varBoolean = true então

              winsockx.senddata varDados

        fim se

fim ciclo"

A ideia é +/- esta. Agora.... se a informação a enviar for muita istu assim não et vai servir porque como disse o evento "SendComplete" é chamado a quando o envio de um pacote é concluido, logo se a informação é muita vais precisar de enviar varios pacotes logo istu nao vai funcionar... a menos que faças as contas a informação que tens e chegues ao numero de paquites que vais enviar...

A outra forma é a seguinte:

Á linha WskS1.SendData tsend acrescentas p exemplo " & "fim" " que vai ficar algo do tipo -> WskS1.SendData tsend & "fim"

O que vai acontecer é que no fim da informação a enviar vais ter a palavra "fim". Istu serve para quando tens de enviar mais de um pacote saibas quando chegou ao fim caso nao queiras fazer contas.. Istu funciona assim:

Envias os dados -> WskS1.SendData tsend & "fim" e depois do "outro lado" vai funcionar assim:

"Se os ultimos 3 caracteres da informação recebida forem igual a "fim" então

        Recebeu a informação toda

        Se não, então

                vai juntando a informação recebida

fim se"

Ou seja, quando recebes a info enviada verificas se os ultimos 3 caracteres são "fim" se forem tudo bem, é porque ja enviou toda a info, se não forem, então vais juntando toda a info arecebida ate que chegue a palavra "fim".

Se estou enganado no meu racioncinio que me corrijam  😄

Espero ter ajudado 😉

P.S.

Ja que istu te esta a acontecer com componentes e portas diferentes porque não juntas tudo no mesmo componente e na mesma porta 😛

Cumps

Link to comment
Share on other sites

Mas tenho de fechar de qualquer das maneiras a porta para poder enviar para o outro cliente pois os ips são diferentes dos clientes...E ao fechar a porta para os outros clientes tem que se conectar outravez....que n vai dar grande geito, assim no servidor deixo uma porta diferente para cada cliente se conectar ao servidor!!! E para aquele cliente utilizo só aquela porta! Tenho que exprimentar a 1º opção que me deste !!!

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...
Link to comment
Share on other sites

Mas tenho de fechar de qualquer das maneiras a porta para poder enviar para o outro cliente pois os ips são diferentes dos clientes...E ao fechar a porta para os outros clientes tem que se conectar outravez

Tenho quase a certeza que não, podes estar conectado a varios pc's atrave da mesma porta. Eu ja fiz issu num servidor, tipo, criei um control array para o componente winsock e depois recebia varias conecções de computadores diferentes na mesma porta e conectados ao mesmo tempo.

Citar

Quando fazes "WskS1.SendData tsend" ele começa a enviar os dados da variavel tsend como deves saber, mas, quando ele chega a "WskS2.SendData tsend" ainda não enviou os dados da primira("WskS1.SendData tsend") e entao comessa a enviar os dados da segunda e os da primeira nao têm efeito e assim sucessivamente, dai só te enviar os dados para o ultimo...

Depois dá noticias 😉

Cumps

Link to comment
Share on other sites

Pois lá está o problema da msgbox 😛 era suposto que depois de enviar atravez do senddata fixese tudo bem, mas n 😛 e decidi por uma msgbox  no send complete e vejam ja deu ?!!?  ?

NuGuN podes me explicar a ideia mais ao promenor , pk n consegui fazer da maneria que tu dizias por o sendata dentro de uma estrutura de repetição!

Link to comment
Share on other sites

épa sinceramente n consegui fazer nada 😛 nao  tentei utilizar isto

" Enquanto toda a informação nao for enviada faz
        Se varBoolean = true então
               winsockx.senddata varDados
        fim se
fim ciclo"

mas n soube o que havia de por -> " Enquanto toda a informação nao for enviada faz... ?

mas meti a seguir ao senddata a verificar se tinha ido ao send complete e não!
épa sinceramente n consegui fazer nada  nao  tentei utilizar isto

" Enquanto toda a informação nao for enviada faz
        Se varBoolean = true então
               winsockx.senddata varDados
        fim se
fim ciclo"

mas n soube o que havia de por -> " Enquanto toda a informação nao for enviada faz... ?

mas meti a seguir ao senddata a verificar se tinha ido ao send complete e não!

varBoolean =false
sendDATA varDados
if varBoolean = true then msgbox ("enviou")

e no evento sendcomplet pus 
varBoolean = true

e não deu kal é a minha admiração quando ponho uma msgbox antes do senddata assim :

varBoolean =false
msgbox ("kalker coisa")
sendDATA varDados
if varBoolean = true then msgbox ("enviou")

podes me explicar melhor a tua ideia ou será que tb ja não dá???

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.