Ter uitbreiding van mijn uitleg:
Ik heb een kleine test-app gemaakt. Hierop heb ik memo1 en memo2 staan. De eerste voor het loggen, de tweede voor de inkomende berichten. Daarnaast zijn er edit1 en edit2 voor de inlognaam (hotmail adres) en het wachtwoord. Dan zijn er nog button1 voor het inloggen en button2 voor het sluiten van de app.
De code hiervan hieronder. Als ik deze uitvoer, ontvangt hij de berichten in memo2. Echter, als ik 5 minuten (of zelfs minder) wegloop, en dan (weer) een bericht stuur, komt er niets meer aan, en krijgt de zender uiteindelijk de melding dat de verbinding verbroken was.
Code:
unit Umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, MSNProtocol, NLDMSNP;
type
TForm1 = class(TForm)
msn: TNLDMSNP;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Memo2: TMemo;
Button1: TButton;
Button2: TButton;
procedure msnConnected(Sender: TObject);
procedure msnDebug(Sender: TObject; DebugText: String);
procedure msnDisconnected(Sender: TObject);
procedure msnError(Sender: TObject; const ErrorCode: Integer);
procedure msnIncomingMessage(Sender: TObject; Session: TMSNSession;
FromUser: TMSNUser; Text: String; Font: TFont);
procedure msnLoginError(Sender: TObject);
procedure msnReady(Sender: TObject);
procedure msnSessionReady(Sender: TObject; Session: TMSNSession);
procedure msnUserAddedToList(Sender: TObject; List: TMSNList;
User: TMSNUser);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.msnConnected(Sender: TObject);
begin
Memo1.Lines.Add('CONNECTED');
end;
procedure TForm1.msnDebug(Sender: TObject; DebugText: String);
begin
Memo1.Lines.Add(DebugText);
end;
procedure TForm1.msnDisconnected(Sender: TObject);
begin
try
Memo1.Lines.Add('Reconnecting');
msn.Passport := edit1.text;
msn.Password := edit2.text;
// msn.Logon;
except
Memo1.Lines.Add('CONNECTION FAILURE');
end;
end;
procedure TForm1.msnError(Sender: TObject; const ErrorCode: Integer);
begin
Memo1.Lines.Add('ERROR ' + inttostr(ErrorCode) + ' occured');
end;
procedure TForm1.msnIncomingMessage(Sender: TObject; Session: TMSNSession;
FromUser: TMSNUser; Text: String; Font: TFont);
begin
memo2.lines.add(trim(uppercase(Text)));
end;
procedure TForm1.msnLoginError(Sender: TObject);
begin
Memo1.Lines.Add('LOGIN FAILED');
end;
procedure TForm1.msnReady(Sender: TObject);
begin
msn.AcceptAllSessions := True;
msn.Displayname := 'T-E-S-T';
end;
procedure TForm1.msnSessionReady(Sender: TObject; Session: TMSNSession);
begin
Memo1.Lines.Add('SESSION READY');
end;
procedure TForm1.msnUserAddedToList(Sender: TObject; List: TMSNList;
User: TMSNUser);
begin
Case list of
blReverseList : begin
msn.AddUserToList(blAllowList,User.Passport,User.Displayname);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
msn.Passport := edit1.text;
msn.Password := edit2.text;
msn.Logon;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
msn.LogOff;
close;
end;
end.
Wie ziet er wat ik fout doe? (en wat is dat dan?)
Bookmarks