DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008
-
15 sept. 2008 à 12:32
DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008
-
17 sept. 2008 à 15:17
Bonjour à toutes et à tous,
J'aimerais réaliser un chat sous delphi, mais je m'impose une programmation en objet histoire de faire un code propre et modulaire.
Mais j'ai un soucis au niveau d'une classe qui utilise un TWebBrowser. Voici ce que j'ai fait histoire de ne pas paraitre trop flou :
Tweb = class(TComponent) // Pas sur de l'utilité à mettre TComponent
private
WebBrowser: TWebBrowser;
ip :string;
public
constructor Init();
destructor Destroy();
function getIp():string;
end;
constructor Tweb.Init;
begin
WebBrowser.Create(self); // J'ai un doute pour la création de l'objet...
ip := '';
end;
destructor Tweb.Destroy;
begin
WebBrowser.Destroy; // La destruction me semble un peu trop simple....
end;
Est ce que le constructeur et le destructeur sont bon ou pas ?
Ensuite j'aimerais utiliser l'évènement onDocumentComplete du TWebBrowser pour pouvoir travailler dessus, sauf que je ne vois pas trop comment faire (d'habitude c'était toujours simple de cliquer sur le bouton correspondant de l'objet qui est sur le formulaire, mais là j'avoue être un peu dérouté )
1)constructor Init(); : T'es sur de ton coup là ?
Ca serait pas plutot cela :
TComponent
private
WebBrowser: TWebBrowser;
ip :string;
public
constructor Create(AOwner:TComponent); override; destructor Destroy();
function getIp():string;
end;
constructor Tweb.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Font.Color:= clBlue;
Font.Style:=[fsUnderline];
Cursor:=crHandPoint;
end ;
Non car là ton composant tu ne le crée pas (inherited Create(AOwner);
)
2)Le destructeur : ca serait pas plutot cela ?
Destructor Destroy; Override;
function StrToIPV4(const S: string): TIPV4;
var L, N, I, U : integer;
const
CTB : array['0'..'9'] of byte = (0,1,2,3,4,5,6,7,8,9);
begin
L := Length(S);
Assert((L > 6) and (L < 16), 'Error : string is not IPV4.');
I := 0;
U := 0;
for N := 1 to Length(S) do
begin
case S[N] of
'0'..'9': begin
case U of
0 : result[I] := CTB[S[N]];
1..2 : result[I] := CTB[S[N]] + (result[I]*10);
end;
inc(U);
assert(U < 4, 'Error : string is not IPV4.');
end;
'.' : begin
inc(I);
U := 0;
end;
end;
end;
end;
function IPV4ToStr(const IP: TIPV4): string;
begin
result := format(
'%d.%d.%d.%d',
[ IP[0],IP[1],IP[2],IP[3] ]
);
end;
function StrToIPV6(const S: string): TIPV6;
var
N,I,H,L : integer;
const
CNTB : array['0'..'9'] of byte = (0,1,2,3,4,5,6,7,8,9);
CHTB : array['a'..'f'] of byte = ($a,$b,$c,$d,$e,$f);
begin
L := Length(S);
Assert(L = 39, 'Error: string is not IPV6');
I := 0;
H := 0;
for N := 1 to L do
begin
case S[N] of
'0'..'9' : begin
case H of
0 : result[I] := CNTB[S[N]];
1 : result[I] := (result[I] shl 4) or CNTB[S[N]];
end;
inc(H);
end;
'a'..'f' : begin
case H of
0 : result[I] := CHTB[S[N]];
1 : result[I] := (result[I] shl 4) or CHTB[S[N]];
end;
inc(H);
end;
end;
if H > 1 then
begin
inc(I);
H := 0;
end;
end;
end;
Property est de l'Anglais : la traduction en Francais est propriété. Autrelent dit tu déclares une propriété (Regarde dans l'aide de Delphi : Touche F1 )
DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008 15 sept. 2008 à 16:37
Ok merci beaucoup d'avoir éclairé ma lanterne.
Et merci aussi d'avoir été jusqu'à me donner les fonction IPv4toStr,etc... cela va me permettre de mieux me concentrer sur le reste
DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008 15 sept. 2008 à 22:14
Vous allez me trouver embêtant, mais lorsque fWebBrowser.Navigate a été sur la page normalement l'évènement onDocumentComplete se déclenche, mais ici si j'ai bien compris cet évènement est "relayé" par le DoDocumentComplete qui a été déclaré dans le create....
Mais je dois surment avoir mal compris quelque chose car il ne va pas dans le DoDoc...
DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008 16 sept. 2008 à 13:23
Oui j'ai mis quelque chose dedans, mais pour voir s'il passait bien dedans j'ai mis un showmessage au début de DoDocumentComplete, mais il ne me l'affiche pas donc il ne va pas dedans...
DjKill77
Messages postés18Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention17 septembre 2008 17 sept. 2008 à 15:17
Bonjour,
Je viens de trouver quelque chose qui m'a l'air intéressant, mais je ne sais pas si cela résoudra mon problème et si oui comment dois je m'en servir :