Wykonuje kod - Muli :/ (Aplikacja)

lasek_99

Użytkownik
Dołączył
Grudzień 18, 2007
Posty
152
Mam aplikacje dzięki której wrzuce plik na FTP. Ale gdy już wrzucam plik to aplikacja nie reaguje do póki nie wrzuci pliku. Inne Programy do uploadu na FTP normalnie się "zachowują". Tzn wszytko jest ok do póki nie zacznie uploadowac na serwer FTP, bo wtedy muli tzn nie da się z aplikacji korzystac do poki nie zakończy Upac :/ Jest na to rada? Zeby uploadowalo ale nie mulilo?
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
Tak... Uploadowanie realizować za pomocą innego wątku, albo ukrytej formy, wtedy forma główna się nie zamuli... A jeżeli masz w programie jakąś pętlę... (Długą) to dopisz na początku pętli:

Kod:
Application.ProcessMessages;   // czy jakoś tak;]
 

kanar123

Użytkownik
Dołączył
Marzec 27, 2008
Posty
451
Musiż skorzystać z wątków
<
 

lasek_99

Użytkownik
Dołączył
Grudzień 18, 2007
Posty
152
Eeee... Sądząc po kodzie to komenda. Jak próbowałem z 2 formami to i tak muliło
<
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
Witam...

@UP
Niestety... Źle myślisz... Jest to wątek.


Myślę że można temaciq zamknąć... Problem - rozwiązany.
 

djmentos

Użytkownik
Dołączył
Maj 1, 2007
Posty
1868
Ty sie chyba nie słyszysz xD Application.ProcessMessages to nie jest wątek. ;d
Kod:
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    Result := True;
    if Msg.Message <> WM_QUIT then
    begin
      Handled := False;
      if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
      if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
        not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else
      FTerminate := True;
  end;
end;

procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
Nie mylę się!

Nie użyliśmy tej procedurki (mowa o Application.ProcessMessages) bo ona nic nie pomagała.
Utwożyliśmy drugi wątek (Unit2 - dokładnie)
 

I3L4D3

Użytkownik
Dołączył
Styczeń 20, 2008
Posty
178
@UP
Ty chyba nie wiesz co piszesz...

UNIT2 - tak nazwany został nowy wątek. Wątki są nazywane standardowo jako UNIT i dodawany do nich numerek...


A moduły masz tutaj:
Kod:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
Do góry Bottom