AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei TForm

Ein Thema von Bloodfire · begonnen am 26. Okt 2005 · letzter Beitrag vom 27. Okt 2005
 
Bloodfire

Registriert seit: 17. Jun 2004
38 Beiträge
 
#1

Problem bei TForm

  Alt 26. Okt 2005, 17:43
Hi!

Das Programm soll ein Netzwerkspiel werden. Die Hauptform (TMainForm) ist ein kleines Chatfenster mit Userliste. Über Kontextmenü der Userliste kann man einen Spieler zu einem Spiel auffordern - es wird eine (halbtransparente) Form darübergelegt, um die Einladung zu schicken (TInvitationForm) (beispiel: "Sie wurden von Spieler XY eingeladen. Möchten Sie annehmen?") Nachdem der User auf annehmen geklickt hat soll sich bei diesem das eigentliche Spielfenster (TBoardForm) öffnen, bzw. auch bei seinem Gegenüber, sobald der die Message ('accept') bekommen hat.

Soweit so gut. Funktioniert eigentlich, nur:
Bei dem Spieler, der auf 'Annehmen' klickt, macht sich das Spielfenster reibungsfrei auf. Bei dem jedoch, der die Message erhält und bei dem sich darauf hin das Fenster öffnen soll, hängt sich das gesamte Programm auf. Man sieht den Umriss der Form und ein paar Umrisse der Komponenten, aber alles inaktiv / defekt. Ich kann als User nichts mehr machen, außer die Andwendung mit Hilfe des Taskmanagers zu beenden.


Chronologisch:

Delphi-Quellcode:
procedure TInvitationForm.BtnAcceptClick(Sender: TObject);
begin
   MainForm.SendStatus('Accept');
   SuddenClose:=False;
   Close;
end;
Delphi-Quellcode:
procedure TMainForm.SendStatus(FStatus: String);
var
  SendText: String;
begin
   try
    if TcpClient.Connect then
      begin
         SendText:='Status'+'#'+FStatus;
         TcpClient.Sendln(SendText);
      end;
   finally
     TcpClient.Disconnect;
   end;

   if (FStatus = 'Accept') then
     begin
        Board:=TBoardForm.Create(nil);
        Board.SetProperties(Paths,UserData,Opponent.Nick,Opponent.IP,5200,
          Language);
        Board.Show;
        // FUNKTIONIERT!!
     end;
end;
Delphi-Quellcode:
procedure TMainForm.TcpServerAccept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var
  i,j: Integer;
  RecievedLn: String;
  RecievedKind: String;
  RecievedStatus: String;
begin
   RecievedLn:=ClientSocket.Receiveln;

   i:=0;
   while not(RecievedLn[i]='#')
     do inc(i);
   RecievedKind:=Copy(RecievedLn,0,i-1);

   if not(RecievedKind='Status')
     then exit;

   inc(i);
   j:=i;
   while not(length(RecievedLn)=i)
     do inc(i);
   RecievedStatus:=Copy(RecievedLn,j,i-j+1);

   CheckRecievedStatus(RecievedStatus);
end;
Delphi-Quellcode:
procedure TMainForm.CheckRecievedStatus(FStatus: String);
var
  BBoard: TBoardForm;
begin
   (...)
   else
   if (FStatus='Accept') then
     begin
        Invitation.SuddenClose:=False;
        Invitation.Close;

        Board:=TBoardForm.Create(nil);
        Board.SetProperties(Paths,UserData,Opponent.Nick,Opponent.IP,5200,
          Language);
        Board.Show;
        //FUNKTIONIERT NICHT!!!
     end
   else
   (...)
end;
Delphi-Quellcode:
procedure TBoardForm.FormCreate(Sender: TObject);
begin
   FirstStart:=True;
end;

procedure TBoardForm.FormActivate(Sender: TObject);
begin
   if not(FirstStart)
     then exit;

   FirstStart:=False;
   LoadImages;
   SetButtons;
   SetForm;
end;
Delphi-Quellcode:
procedure TBoardForm.SetProperties(FPaths: RPaths; FUserData: RUserData;
  FOppNick,FOppIP: String; FPort: Integer; FLanguage: String);
begin
   Paths:=FPaths;
   UserData:=FUserData;

   OppData.Nick:=FOppNick;
   OppData.IP:=FOppIP;

   UsedPort:=FPort;

   Language:=FLanguage;

   SetNetwork;
end;
Ich hoffe, mir kann jemand weiterhelfen, ich hab keinen Plan, wo ich da nach Fehlern suchen soll, bin die einzelnen Befehle schon x-mal step-by-step durchgegangen und funktioniert auch alles ohne fehlermeldungen. Es hängt sich eben nur immer auf. Ein dritter hat da oft mehr Durchblick ...

Danke!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz