Konflikt Zdazen w programie...

0

napisalem sobie serwerek i klienta... jednym z wielu polecen jest screen. wysylam polecenie, server robi screena i przesyla go do klienta... i tutaj zaczynaja sie dziac dziwne rzeczy... otoz mam takie cos w ClientRead ktore odbiera obraz...

if not Downloading then begin

    Socket.ReceiveBuf(StreamHeader, SizeOf(StreamHeader));
    ImgStream := TMemoryStream.Create;
    ImgStream.Position := 0;
    ImgSize := StreamHeader.Size;
    Downloading := True;
    Exit;
  end;

  //Zapisywanie bufora

  Received := Socket.ReceiveBuf(Buffer, SizeOf(Buffer)-1);
  ImgStream.write(Buffer, Received);
    if ImgStream.Size >= ImgSize then begin
     ImgStream.SaveToFile('C:\screen.jpg');
     img.Picture.LoadFromFile('C:\screen.jpg');
    ImgStream.free;
    Received:=0;
    ImgSize:=0;
    Downloading:=false;
  end;

i to normalnie dziala jezeli nic poza tym nie ma... czyli w Clientread jest tylko jedna procedurka odbioru danych(bufforu). Niestety ja mam rowniez w ClientRead rzeczy od innych funkci. Komendy rozdzielam z jednego tekstu:

s := Socket.ReceiveText;
        try
        cmd := copy(s,1,pos(#31,s)-1);
        delete(s,1,pos(#31,s));
        lparam := copy(s,1,pos(#31,s)-1);
        delete(s,1,pos(#31,s));
        rparam := copy(s,1,pos(#31,s)-1);
        delete(s,1,pos(#31,s));
        except

a wywoluje

if cmd='wiad' then
showmessage('asdsfsafd') else;

i gdy w ClientRead mam i rzeczy do screena i inne komendy to wtedy nie dziala w ogóle PrintScreen :( Normalnie nie chce odebrac go od servera...

Moje pytanie jest nastepujace... Jak pogodzic procedure screena z pozostalymi ?

0

Po prostu jeżeli dostaniesz komendę o pobraniu screena, nie sprawdzaj innych komend do czasu odebrania całego obrazka. :P

Ps. Dlaczego to zawsze musi być trojan? :D

0

tylko jak to odzielic ? :) zatrzyma na chwile ? :) jedne komendy od drugich ? :) w ogóle tak mozna zrobic ? ;)

0

OMFG znów trojan... jak zwykle - gość nie ma pojęcia o teorii programowania, ale trojana to on pisze. Sekcje krytyczne... ew. mechanizm komunikatów, kolejek; odsyłam do najlepszego helpa.

0

nawet nie wiesz a mowisz... po prostu chcialem sie dowiedziec jak to zrobic... nie musisz od razu tak wyjezdzac... i dzieki za pomoc :/

0

Pomoc otrzymałeś... Teraz w twojej inicjatywie leży samodzielne zdobycie informacji konkretnych dla Twojego problemu. :P

A niech będzie podpowiem... Wysyłaj komendę nawet przy przesyłaniu fragmentów obrazu. Niech program po tej komendzie uzupełnia obraz.

0

pisanie na forum to ostatecznosc... przed tym zawsze przeszukuje inne posty faq artykuly i uzywam google... ale niestety teraz problem jest nietypowy i niemoge sobie z nim poradzic... mimo, ze juz probowalem wielu sposobow... dlatego pisze i prosze o bardziej konkretna pomoc... bo pewnie nie potrzeba duzych modyfikacji...

0

moge prosic o pomoc ? bo nie moge sobie z tym poradzic...

0

nikt nie wie ? :(

0

kurna, odpisałem:

deus napisał(a)

Sekcje krytyczne... ew. mechanizm komunikatów, kolejek

co to znaczy? poszukaj

0

ty to zawsze umiesz pomoc... chyba juz pisalem, ze szukalem czytalem i probowalem, ale nie moge sobie PORADZZICCCC.... dlatego prosze o pomoc... a ulozeniu tego kodu...

0

no prosze wass... pomozcie mi, bo oszaleje... szukam próbuje i nic nie wychodzi... :( zeby to sie tylko nie gryzlo... i bede w 7 niebie...

0
  1. zmienna globalna gorion = 0;
  2. zaczynasz coś robić
  3. zanim zaczniesz - sprawdzasz czy gorion to zero
    3a. jeżeli tak - gorion = 1, 666, czy ile tam chcesz; robisz co masz zrobić
    3b. jeżeli gorion nie jest zerem - nic nie robisz
  4. skończyłeś? gorion = 0
    jasne? jak jeszcze nie wiesz o co biega - przeczytaj temat od początku /przede wszystkim pierwszy post Nexa/.
0

ale jak to nic nie robie, albo robie ? ja caly czas nic nie robie chyba, ze wysle komende... wtedy zrobi sie komenda i koniec. co moze sie jeszcze dziac ? nie rozumie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1