Avatar billede sorenriis Nybegynder
19. august 2005 - 14:18 Der er 3 kommentarer og
1 løsning

Program hænger (del2)

Dette er en forsættelse på http://www.eksperten.dk/spm/634506, hvor jeg fik masser af hjælp til at finde mit problem.
Nu er problemet bare at jeg ikke selv kan løse det.

Mit problem er, som jeg har forstået det, at jeg afvikler GUI-relateret kode i min ServerExecute-procedure.

Min kildekode ser således ud:
----
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
Command: string;
Command2: string;
Index: Integer;
begin
Command:=Acontext.Connection.IOHandler.ReadLn;
Command2:=Acontext.Connection.IOHandler.ReadLn;

// Load Profile
if (Command='LP') then
  begin
  Index:=LogListBox.Items.IndexOf(AContext.Connection.Socket.Binding.PeerIP);
    If (Index>=0) then
    begin
      if (StrToInt(Command2)>=0) then
        begin
        LoadComboBox.ItemIndex:=StrToInt(Command2);
        Acontext.Connection.IOHandler.WriteLn('2');
        LoadButton.Click;
        end;

      if (StrToInt(Command2)<0) then
        begin
        Acontext.Connection.IOHandler.WriteLn('1');
        end;
    end;

    If (Index<0) then
    begin
    Acontext.Connection.IOHandler.WriteLn('0');
    end;
  end;
end;
----

Det går galt når jeg afvikler den "LoadButton.Click".
Eksemplet jeg har fået foræret ser således ud:
----
constructor TMySync.Create(AThread: TIdPeerThread);
begin
  Inherited;
  Txt := AThread.Connection.ReadLn;
end;

procedure TMySync.DoSynchronize;
begin
  // Her kan du gøre hvad som helst GUI relateret...
  Form1.ListBox1.Items.Add(Txt);
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
  with TMySync.Create(AThread) do
    DoSynchronize;
end;
----

Men hvordan fletter jeg lige min egne kode ind i det?
Avatar billede martinlind Nybegynder
19. august 2005 - 14:30 #1
hvis den ellers sync'er rigtigt burde det virke, men eller kan du istedet for at bruge sync. bruge en alm. message, hvor du sender din txt som param fra din tråd til din mainform, det funker
Avatar billede sorenriis Nybegynder
19. august 2005 - 14:31 #2
Kan du give et eksempel på det? Jeg er ikke helt med på hvad du mener..
Avatar billede martinlind Nybegynder
19. august 2005 - 14:35 #3
noget i den her stil ( koder ikke delphi mere )

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
  with TMySync.Create(AThread) do
    SendMessage(WM_MYMSG,Txt,0);
    //DoSynchronize;
end;

så laver du en uder msg der hedder WM_MYMSG og fanger den på din mainform, hvordan du laver din egen msg kan du se i online hjælpen
Avatar billede sorenriis Nybegynder
25. september 2005 - 23:50 #4
Lukket....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester