Ir para conteúdo
Fórum Script Brasil

Inforjo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que Inforjo postou

  1. Alguém tem alguma idéia de como acessar classes entre forms. por exemplo criei um classe e intanciei um objeto em um formulario 2 por exemplo Tform2 e os atributos ou variaveis desse objeto quero poder acessar em outro form por exemplo no formulario 4 Tform4.
  2. Alguém tem uma idéia melhor para a ,implementação do FIFO em Delphi? Consegui fazer o escalonamento de processo com um processo. Mais pra dois da problema. procedure TForm2.show(cor:Tcolor; tipo:string; tempo:integer); begin inherited show; //vCor2[Form3.contador] := cor; vtempo[Form3.contador] := tempo; vtipo[Form3.contador] := tipo; inc(contadorAux); fila_aptos := TQueue.create; fila_aptos.Push(Tcor.create(cor)); //push coloca um item no final da fila atualiza_fila; if Form3.contador = 2 then if vtipo[contadorAux] = 'I/O Bound' then delay(tempo*3000*500*500*500*500) else delay(tempo*3000*500*500*500); inc(Form3.contador); try while Tcor(fila_aptos.Peek).valor <> clblack do begin if contadorAux = 0 then exit; //Caso for I/O Bound if vtipo[contadorAux] = 'I/O Bound' then begin pop := Tcor(fila_aptos.pop).valor; //pop := vCor2[contadorAux]; delay(tempo*500); IO.Brush.Color := pop; if vCor2[contadorAux + 1] = clblack then begin s1.Visible := false; end else if fila_aptos.Count <> 0 then //atualiza_fila; delay(tempo*3000); IO.brush.color := clwhite; CPU.brush.color := pop; delay(tempo*500); CPU.brush.color := clwhite; IO.brush.color := pop; delay(tempo*500); IO.brush.color := clwhite; CPU.brush.color := pop; delay(tempo*500); CPU.brush.color := clwhite; //Finaliza processo fin.Visible := true; fin.brush.color := pop; delay(tempo*500); fin.Visible := false; delay(tempo*500); dec(contadorAux); dec(Form3.contador); end else //Caso for CPU Bound begin pop := Tcor(fila_aptos.pop).valor; //pop := vCor2[contadorAux]; delay(tempo*500); CPU.brush.color := pop; if vCor2[contadorAux + 1] = clblack then begin s1.Visible := false; end else if fila_aptos.Count <> 0 then atualiza_fila; delay(tempo*3000); CPU.brush.color := clwhite; //Finaliza Processo fin.Visible := true; fin.brush.color := pop; delay(tempo*500); fin.Visible := false; delay(tempo*500); dec(contadorAux); dec(Form3.contador); end; if contadorAux = 0 then exit; end; //Fim do while finally fila_aptos.free; end; //fim do try end; procedure TForm2.Timer1Timer(Sender: TObject); begin label16.Caption := inttostr(i); if odd(i) then shape3.Visible := true else shape3.Visible := false; inc(i); end; procedure TForm2.Bt2Click(Sender: TObject); begin status := 'true'; end; //TIME SLACE ou FATIA DE TEMPO procedure TForm2.Delay(MSec: Cardinal); var Start: Cardinal; begin Start := GetTickCount; repeat Application.ProcessMessages; until (GetTickCount - Start) >= MSec; end; procedure TForm2.Bt3Click(Sender: TObject); begin close; end; procedure TForm2.Bt1Click(Sender: TObject); begin Form3.show('FIFO'); if Form3.contador < 10 then form3.visible := true else showmessage('Limite de processos'); end; //ordena os processos na fila procedure TForm2.atualiza_fila; var px:integer; begin for px:=1 to contadorAux do begin if contadorAux = 0 then exit; if contadorAux = 1 then begin s1.brush.color := Tcor(fila_aptos.Peek).valor; s1.visible := true; end; if contadorAux = 2 then begin s2.brush.color := Tcor(fila_aptos.Peek).valor; s2.visible := true; end; if contadorAux = 3 then begin s3.brush.color := Tcor(fila_aptos.Peek).valor; s3.visible := true; end; if contadorAux = 4 then begin s4.brush.color := Tcor(fila_aptos.Peek).valor; s4.visible := true; end; if contadorAux= 5 then begin s5.brush.color := Tcor(fila_aptos.Peek).valor; s5.visible := true; end; if contadorAux = 6 then begin s6.brush.color := Tcor(fila_aptos.Peek).valor; s6.visible := true; end; if contadorAux = 7 then begin s7.brush.color := Tcor(fila_aptos.Peek).valor; s7.visible := true; end; if contadorAux = 8 then begin s8.brush.color := Tcor(fila_aptos.Peek).valor; s8.visible := true; end; if contadorAux = 9 then begin s9.brush.color := Tcor(fila_aptos.Peek).valor; s9.visible := true; end; if status = 'true' then exit; if contadorAux = 0 then exit; end; end; //Fatia de tempo do objeto Trackbar function TForm2.timeslice(ts: integer): integer; begin if TrackBar1.Position = 0 then ts := 2000; if TrackBar1.Position = 1 then ts := 1000; if TrackBar1.Position = 2 then ts := 800; if TrackBar1.Position = 3 then ts := 500; if TrackBar1.Position = 4 then ts := 400; if TrackBar1.Position = 5 then ts := 300; if TrackBar1.Position = 6 then ts := 200; if TrackBar1.Position = 7 then ts := 100; if TrackBar1.Position = 8 then ts := 75; if TrackBar1.Position = 9 then ts := 60; if TrackBar1.Position = 10 then ts := 30; Result := ts; end; Mais detalhes baixe o simulador em: http://br.groups.yahoo.com/group/inforjo/f...DSO%20-%202010/ ou http://br.groups.yahoo.com/group/inforjo/
×
×
  • Criar Novo...