Erreur dans un mémo

Utilisateur anonyme - 19 août 2005 à 21:34
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008 - 20 août 2005 à 15:54
Salut à tous

Je suis entrain de faire un serveur TCP. Normalement il y a différent boutons et Edit ainsi qu'un mémo nommé MODE.

Dans l'Edit1 J'écris le port
Dans l'Edit 1 j'écris l'adresse IP
Quand je clique sur le bouton1 connexion je dois me connecter
Quand je clique sur le bouton2 déconnexion je dois me déconnecter

Normalement je suis censé avoir un méssage dans le Mémo (Mode) pour savoir si je suis connecté, déconnecté, ou si il y a une erreur. Manque de chance il n'y a rien dans le mémo qui apparait. Je voudrais savoir ou est l'erreur dans ma source (voir ci-dessous).

Autre question : mon client a proprement parlé se trouve dans une FORM2. Delphi n'accepte pas la synthase client1 et la transforme tout seul en client 1. Pourquoi?

Merci à tous et en plus vous avez 2 questions pour le prix d'une (mdrrrrr).

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;

type
TForm2 = class(TForm)
ClientSocket2: TClientSocket;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Mode: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ClientSocket2Connecting(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket2Disconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket2Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ClientSocket2Connect(Sender: TObject;Socket: TCustomWinSocket);
procedure Button7Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ModeChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
begin
ClientSocket2.Close;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
ClientSocket2.Port:=StrToInt(Edit2.Text);
ClientSocket2.Host := Edit1.Text;
ClientSocket2.Open;
end;

procedure TForm2.ClientSocket2Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
Mode.Lines.Add('Connecté');
end;

procedure TForm2.ClientSocket2Connecting(Sender: TObject; Socket: TCustomWinSocket);
begin
Mode.Lines.Add('En cours de connexion');
end;

procedure TForm2.ClientSocket2Disconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Mode.Lines.Add('Déconnecté');
end;

procedure TForm2.ClientSocket2Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
if ErrorEvent=eeGeneral then
Mode.Lines.Add('Erreur inattendu');

if ErrorEvent=eeConnect then
Mode.Lines.Add('Erreur de connexion');

if ErrorEvent=eeDisconnect then
Mode.Lines.Add('Erreur de déconnexion');

if ErrorEvent=eeAccept then
Mode.Lines.Add('Connexion non acceptée');
end;

procedure TForm2.FormCreate(Sender: TObject);
begin

end;

procedure TForm2.ModeChange(Sender: TObject);
begin

end;

end.

4 réponses

yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
20 août 2005 à 03:03
bon ya pas vraiment d'erreur
si
Mode.Lines.Add('Connecté');

Si la ligne s'exécute ...utilise un point d'arrêt pour vérifier , et si en compilant les lignes sont utilisé par le programme y aura un point bleu (par défaut ) dans la marge sinon les événements ne sont pas attribué ,utilise l'inspecteur d'objet dans onglet événement réattribu les procédure à l'objet mémo (en cliquant sur un événement ya une liste de procédure ceux qui sont dans interface et ont la même syntaxe), ça fais ça quand on recopie un code les événements ne se réattribu pas seul ...je parle des anciennes version de delphi ,

sinon utilise plutôt Mode.Lines.append

yve
0
Utilisateur anonyme
20 août 2005 à 14:24
Salut

Je n'ai pas tout compris. Comment tu fais pour réattribuer les procédures????

Merci
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
20 août 2005 à 15:37
Salut, tu dois utiliser l'inspecteur d'objet , tape F11, tu vois l'onglet par défaut Propriétés de ton objet sélectionner .clique sur les événements.

Habituellement pour créer un événement tu boubleclique sur un événement et la procédure s'écrit tant du côté implémentation que du côté inteface de ton projet .si il n'y a rien dans la procedure à la compilation delphi l'effacera.Donc juste un ; ou un commentaire dans la procedure te permet d'indiquer au compilateur que tu souhaite garder la procedure mais que tu l'implémentera plus tard...

Mais Si tu copie un code et que la procédure n'est pas utiliser et quelle est implémenter delphi ne l'efface pas mais ne la compile pas pour autant .Lespoints bleu dans la marge de gauche sont des points d'arrêts possibles lors de l'exécution or si il n'y a pas de points bleu sur Mode.Lines.Add('Connecté');
cela signifie que ta procédure n'est pas attribué à ton objet.Bien qu'elle soit visible le compilateur n'en tient pas compte puisqu'il ne l'utilisera jamais dans le programme.

en observant les événements de l'objet ClientSocket2
ClientSocket2Disconnect dois y etre attribué sinon tu dropdown la propriété pour la choisir ou tu doubleclique la propriété par défaut se réattribuera ...

recompile

yve
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
20 août 2005 à 15:54
j'avais écris l'objet mémo aucun rapport bien entendu et append ou add c'a dépend ce que tu souhaite les 2 sont bon. c'est l'objet ClientSocket qu'il faut vérifier ...

yve
0
Rejoignez-nous