GARANTIR DESCONTO

Fórum Problemão com Stack Overflow #351617

09/01/2008

0

Pessoal, vou tentar ser sucinto, vou explicar tudo porque já não tenho mais idéia do que fazer.
Funciona assim:
Tenho um procedimento que pega dados de uma matriz string, passa para double e faz vários cálculos com esses valores. Nesses cálculos tem vários loops e todos os resultados vão para uma matriz tipo Double, com dimensões 5 x 10.

então, eu chamo outro procedimento que escrevi para escrever uma tabelinha com os dados dessa matriz resultado em um rich edit.

aí eu faço mais cálculos e utilizo o mesmo procedimento para escrever outros resultados.
TOTAL DE VEZES QUE CHAMO ESSA FUNÇÃO DE ESCREVER NO RICH EDIT = 7

Além disso, tenho um outro procedimento que escreve uma outra tabelinha bem similar à citadas anteriormente. Essa é chamada umas 20 vezes.

o código utilizado para escrever tais tabelas é este:

procedure TfrmPrincipal.EscreveResultados(CausasDeVariacao: array of String; Resultados: TMatrizQDouble;
  TituloQuadro: String; LinhasTraco: array of Integer);
var
  i,j: Integer;
  Dados: TMatriz;
  Lista: TStringList;
begin
  SetLength(Dados,5,High(Resultados[0]) + 1);

//  FAZER AS ROTINAS DE ARREDONDAMENTO DOS NÚMEROS DE ACORDO COM AS CASA DECIMAIS NO LOOP QUE PROSSEGUE
    for j:= Low(Resultados[0]) to High(Resultados[0]) do
    begin
      if Resultados[0,j] <> 0 then
        Dados[0,j] := FloatToStr(Resultados[0,j])
      else
        Dados[0,j] := ´-´;
      if Resultados[1,j] <> 0 then
        Dados[1,j] := FloatToStrF(Resultados[1,j],ffFixed,10,6)
      else
        Dados[1,j] := ´-´;
      if Resultados[2,j] <> 0 then
        Dados[2,j] := FloatToStrF(Resultados[2,j],ffFixed,10,6)
      else
        Dados[2,j] := ´-´;
      if Resultados[3,j] <> 0 then
      begin
        Dados[3,j]  := FloatToStrF(Resultados[3,j],ffFixed,10,6);
        if Resultados[4,j] > 0.0001 then
          Dados[4,j] := FloatToStrF(Resultados[4,j],ffFixed,10,6)
        else
          Dados[4,j] := ´< 0,0001´;
        if (Resultados[4,j] < 0.05) and (Resultados[4,j] > 0.01) then
          Dados[3,j] := Dados[3,j] + ´* ´;
        if Resultados[4,j] < 0.01 then
          Dados[3,j] := Dados[3,j] + ´**´;
        if Resultados[4,j] > 0.05 then
          Dados[3,j] := Dados[3,j] + ´NS´;
      end
      else
        Dados[3,j] := ´-´;
    end;

  Lista := TStringList.Create();

  Lista.Add(TituloQuadro);
  Lista.Add(´=========================================================================================================´);
  Lista.Add(´Causas de Variação                GL             SQ             QM              F              P         ´);
  Lista.Add(´---------------------------------------------------------------------------------------------------------´);
  for i := Low(CausasDeVariacao) to High(CausasDeVariacao) do
  begin
    Lista.Add(CausasDeVariacao[i] + StringOfChar(´ ´,25-Length(CausasDeVariacao[i])) + StringOfChar(´ ´,15-Length(Dados[0,i])) +  Dados[0,i]
      + AlinhaADireita(Dados[1,i],15) + AlinhaADireita(Dados[2,i],15) + AlinhaADireita(Dados[3,i],15) + AlinhaADireita(Dados[4,i],15));
    for j := Low(LinhasTraco) to High(LinhasTraco) do
      if i = LinhasTraco[j] - 1 then
        Lista.Add(´---------------------------------------------------------------------------------------------------------´);
  end;
  Lista.Add(´=========================================================================================================´);
  Lista.Add(´´);
  frmRelatTela.JvRichEdit1.Lines.AddStrings(Lista);
  Lista.Free;


a outra tabela é bem similar, portanto este código é chamado umas 30 vezes durante o procedimento.
O resto no procedimento é tudo loops, contas e conversões, normais...

Isso é recursividade?? Era pra dar Stack Overflow?? Devo eu aumentar o tamnho do stack?? Como q eu faço isso??

Desculpem o tamanho do post galera, eh q eu estou meio desesperado. Muitíssimo obrigado pela atenção.
Walter´



Fatal error: Maximum execution time of 30 seconds exceeded in D:\web\forum.devmedia.com.br\httpdocs\down_postsforum.php on line 70
Wart

Wart

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar