Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Principal";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

Para baixo

atribuição de um manipulador dentro de uma classe Encontre agências semelhantes


Ken   (2004-11-25 12:03) [0]

Caros mestres, quero colocar um soquete na minha classe e descrever todos os manipuladores dentro da classe! Quando necessário, o soquete dos soquetes da classe não deve estar visível!

Eu estou escrevendo:
usa Windows, Mensagens, SysUtils, Variantes, Classes, Gráficos, Controles, Formulários, Diálogos, StdCtrls, ScktComp; tipo TForm1 = classe (TForm) ListBox1: TListBox; Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Button4: TButton; procedimento Button4Click (Sender: TObject); particular {Declarações particulares} público {Declarações públicas} fim; tipo TMyClass = classe particular pOnConnect: procedure; ti: inteiro; MySocket: TClientSocket; público construtor Create; destruidor Destruir; fim; var Form1: TForm1; MyClass: TMyClass; implementação {$ R * .dfm} construtor TMyClass.Create; começar MySocket: = TClientSocket.Create (nulo); MySocket.Host:="127.0.0.1 "; MySocket.Port: = 1234; MySocket.OnConnect: = pOnConnect; Criar herdado; fim; destruidor TMyClass.Destroy; começar MySocket.Close; Destruir herdado; fim;

O compilador jura no MySocket.OnConnect: = pOnConnect; Erro: procedimento e ponteiro de método incompatível

A questão é:
Como declará-lo corretamente e em que parte do código descrever o procedimento para que ele não fique visível fora da classe?



TUser ©   (2004-11-25 12:11) [1]

procedimentos de objeto



Ken   (2004-11-25 12:13) [2]


> TUser

agora juro na lista Parametr diferem! Mesma linha



TUser ©   (2004-11-25 12:15) [3]

OnEvent: TNotifyEvent;

TNotifyEvent = procedure (Remetente: TObject) de objeto;



Ken   (2004-11-25 12:15) [4]

Escreveu pOnConnect: procedure (Remetente: TObject;
Soquete: TCustomWinSocket) do objeto; e funcionou.



Digitman ©   (2004-11-25 12:16) [5]

TMyClass = classe
particular
    procedimento DoConnect (Remetente: TObject; Soquete: TCustomWinSocket);
...
MySocket: TClientSocket;

público
construtor Create;
destruidor Destruir; substituir;
end;

construtor TMyClass.Create;
começar
// herdado Create; // opcional para um descendente direto do TObject
MySocket: = TClientSocket.Create (nulo);
MySocket.Host:="127.0.0.1 ";
MySocket.Port: = 1234;
MySocket.OnConnect: = DoConnect;
end;



Digitman ©   (2004-11-25 12:19) [6]


> Ken (25.11.04 12: 15) [4]
> Escreveu pOnConnect: procedure (Remetente: TObject;
> Soquete: TCustomWinSocket) do objeto; e funcionou.


não funcionou, e a compilação passou corretamente
а работать não será porque você tem apenas um ponteiro para um método, mas não o método real, que você ainda precisa declarar e implementar



Ken   (2004-11-25 12:25) [7]


> Digitman

Eu entendi. reescreveu e ganhou já como deveria! Obrigada

Eu tenho outra pergunta:
Como obter bytes 4 contendo meu ip?



Ken   (2004-11-25 12:37) [8]

Mestres, por favor, diga-me como obter bytes 4 contendo o meu endereço IP?



Digitman ©   (2004-11-25 12:49) [9]

Você pode obter uma representação de string desse endereço chamando MySocket.Socket.LocalAddress

Além disso, para obter os "bytes" 4 nesta página da apresentação, arranhe a coroa em si ... não é tão difícil ...



Страницы: 1 filial inteira

Fórum: "Principal";
Arquivo atual: 2004.12.12;
Download: [xml.tar.bz2];

em cima





Memória: 0.58 MB
Hora: 0.085 c
3-1100244981
lightix
2004-11-12 10:36
2004.12.12
Comprimir DBF


4-1098867565
GuestTM
2004-10-27 12:59
2004.12.12
Como capturar a VIOLAÇÃO DE ACESSO ...


3-1100430358
M. Saratoff
2004-11-14 14:05
2004.12.12
A implementação da operação de interseção


1-1101469896
cão de guarda
2004-11-26 14:51
2004.12.12
Ordem de tabulação


14-1100903958
123
2004-11-20 01:39
2004.12.12
C#





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese Romeno Russa sérvio Slovak esloveno Espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol