GARANTIR DESCONTO

Fórum LoadfromStream stream read error #443349

17/05/2013

0

bom galera...sou novo aqui...e estou desesperado por essa resposta...me ajudem por favor...meu caso é o seguinte...

eu tenho um grid na tela, o cliente tem a autonomia de mudar as colunas, ocultá-las, e modificar os tamanhos...
eu salvo as configurações em um campo blob do meu bd, até ai tudo bem...funciona perfeitamente...
o problema é na hora de fazer o loadfromstream, ele não funciona, não dá o load...
se eu salvo o campo blob em um stream e salvo esse stream em um .txt com savetofile e fizer o loadfromfile no columns, elle funciona... vou colocar o codigo abaixo e me digam onde errei....

savetostream

try
    s := TMemoryStream.Create;
    CTRL_GRID.DSGRID.DataSet.Close;
    CTRL_GRID.DSGRID.DataSet.Open;
    CTRL_GRID.DSGRID.DataSet.Append;
    CTRL_GRID.DSGRID.DataSet.FieldByName('USUARIO').AsString := UsuarioLogado.Login;
    CTRL_GRID.DSGRID.DataSet.FieldByName('TITULO').AsString := FCadastros_Padrao.Name;
    CTRL_GRID.DSGRID.DataSet.FieldByName('TELA').AsString := FCadastros_Padrao.Name + CTRL_CADASTROS.DSPADRAO.DataSet.Name;
    DBGridTabela.Columns.SaveToStream(s);
    TBlobField(CTRL_GRID.DSGRID.DataSet.FieldByName('GRID')).LoadFromStream(s);
    CTRL_GRID.DSGRID.DataSet.Post;
    S.Free;
    Showmessage('Colunas salvas com sucesso.');
  except
    raise Exception.Create('Erro ao salvar.');
  end;



loadfromstream que dá erro

try
    s := TMemoryStream.Create;
    CTRL_GRID.DSGRID.DataSet.Close;
    CTRL_GRID.DSGRID.DataSet.Open;
    CTRL_GRID.FiltrarGrid(FCadastros_Padrao.Name, FCadastros_Padrao.Name + CTRL_CADASTROS.DSPADRAO.DataSet.Name, UsuarioLogado.Login);
    TBlobField(CTRL_GRID.DSGRID.DataSet.FieldByName('GRID')).SaveToStream(s);
    DBGridTabela.Columns.LoadFromStream(s); //o erro é nessa linha
    S.Free;
  except
    raise Exception.Create('Error Message');
  end;


loadfromstream que funciona mas eu não quero assim

    s := TMemoryStream.Create;
    CTRL_GRID.DSGRID.DataSet.Close;
    CTRL_GRID.DSGRID.DataSet.Open;
    CTRL_GRID.FiltrarGrid(FCadastros_Padrao.Name, FCadastros_Padrao.Name + CTRL_CADASTROS.DSPADRAO.DataSet.Name,           UsuarioLogado.Login);
    TBlobField(CTRL_GRID.DSGRID.DataSet.FieldByName('GRID')).SaveToStream(s);
    s.SaveToFile('c:\teste.cfg');
    DBGridTabela.Columns.LoadFromFile('c:\teste.cfg');
    S.Free;



desde já...obrigado
Wendel Fassarella

Wendel Fassarella

Responder

Posts

17/05/2013

Diogenes Sampaio

Olá Wendel,
Faça o seguinte:
s.Position:= 0;
DBGridTabela.Columns.LoadFromStream(s);


T++
Responder

Gostei + 0

17/05/2013

Wendel Fassarella

funcionou direitinho cara...
muito obrigado....
agr...como que eu fecho o tópico??
Responder

Gostei + 0

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

Aceitar