Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Estudante Corrupto

Access Violation

Recommended Posts

Estou mexendo com socket e preciso gravar um nome no tipo que eu criei, mas está dando access violation, qual é o problema?? Valeu galera

 

type
TUser = record
id: integer;
nick: string;
end;

type PUser = ^TUser;

###### PUser(s.Socket.Data)^.nick := 'Teste'; #### Essa é a linha problemática

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então meu amigo, é o seguinte... esse seu tipo TUser você converteu ele para ponteiro, você deverá instanciar ele antes de usar...

 

procedure SeuMetodo();

var

Variavel : PUser;

begin

Variavel := New(PUser);

Variavel^.nick := 'Teste';

s.Socket.Data := Variavel;

end;

 

Atenciosamente,

Everson Novka

http://www.eversonnovka.com

 

Estou mexendo com socket e preciso gravar um nome no tipo que eu criei, mas está dando access violation, qual é o problema?? Valeu galera

 

type
TUser = record
id: integer;
nick: string;
end;

type PUser = ^TUser;

###### PUser(s.Socket.Data)^.nick := 'Teste'; #### Essa é a linha problemática

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Everson, consegui.

 

Agora estou com outra dúvida...

 

No meu chat tenho um listbox que vai listar todos os usuários que estão online, mas como que eu faço para que o usuário que entrar no Mensageiro naquele momento receba todos os nomes/dados dos usuários que já estão conectados? Tentei fazer um loop e não consegui...

 

No meu servidor eu uso esse record pra gravar os dados de cada um..

type

PUser = ^TUser;

TUser = record

login: string;

id: integer;

end;

 

Quando o usuário se conecta:

Socket.Data := New(PUser);

TUser(Socket.Data^).login := argumento[1]; // cadastrando login

TUser(Socket.Data^).id := StrToInt(argumento[2]); // cadastrando id

 

...

 

Só que no cliente, cada usuário também precisa ter uma identificação idêntica a que tá servidor, pois quando o cara clicar duas vezes sobre o nick na ListBox vai abrir um novo form pra comunicação entre somente aqueles dois usuários.

 

Como que eu faço pra que os dados de todos os usuários tanto no servidor quanto nos clientes conectados sejam iguais?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais componentes de socket você está utilizando???

 

[]'s

Everson Novka

http://www.eversonnovka.com

 

Valeu Everson, consegui.

 

Agora estou com outra dúvida...

 

No meu chat tenho um listbox que vai listar todos os usuários que estão online, mas como que eu faço para que o usuário que entrar no Mensageiro naquele momento receba todos os nomes/dados dos usuários que já estão conectados? Tentei fazer um loop e não consegui...

 

No meu servidor eu uso esse record pra gravar os dados de cada um..

type

PUser = ^TUser;

TUser = record

login: string;

id: integer;

end;

 

Quando o usuário se conecta:

Socket.Data := New(PUser);

TUser(Socket.Data^).login := argumento[1]; // cadastrando login

TUser(Socket.Data^).id := StrToInt(argumento[2]); // cadastrando id

 

...

 

Só que no cliente, cada usuário também precisa ter uma identificação idêntica a que tá servidor, pois quando o cara clicar duas vezes sobre o nick na ListBox vai abrir um novo form pra comunicação entre somente aqueles dois usuários.

 

Como que eu faço pra que os dados de todos os usuários tanto no servidor quanto nos clientes conectados sejam iguais?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, como vocês podem perceber estou montando um sistema de chat no estilo do Msn...

 

Consegui fazer a comunicação entre os integrantes.

 

Só que agora estou com uma dúvida.

 

Cada cliente tem uma listbox com a lista de usuários on-line, se eu quiser conversar com o "João", clico duas vezes para abrir a janela.

 

Mas aí começam minhas dúvidas:

 

1. Como que faço para criar uma janela quando clicar duas vezes no nick da pessoa? Lembrando que não posso criar uma janela caso já exista uma, ou seja, como verifico antes se já tem uma janela criada para aquele usuário?

2. Quando o cliente receber um socket, como que eu faço para que a mensagem seja adicionada no Memo1 daquele formulário específico, que está interligando entre aquele usuário?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.