Eu estou estudando o TBlobField com ClientDataSet, peguei um modelo da internet e eu estou tentando carregar um arquivo grande de em torno 35mb várias vezes, porém conforme eu vou dando o loop depois de carregar algumas vezes o ClientDataSet da erro de 'Insufficient memory for this operation.', eu já consegui verificar que é porque o arquivo é muito grande e provavelmente chega no limite do ClientDataSet. Mas gostaria de saber como posso contornar essas situações em vez de simplesmente trocar um arquivo por um pequeno, porque em cliente nem sempre vão ser arquivos pequenos.
Existe alguma forma que eu possa fazer com que verifique o limite e pare o loop e emita uma mensagem?
Ou melhor ainda existe alguma forma de carregar todos os arquivos e não dar erro de memória? De repente compactar o arquivo antes?
Qual seria a melhor solução para esse caso? Poderiam me ajudar com alguma solução?
procedure TEstudo.btnTesteClick(Sender: TObject);
var
cdsTemp: TClientDataset;
i: Integer;
begin
cdsTemp:= TClientDataset.Create(nil);
cdsTemp.FieldDefs.Add('arq', ftBlob);
cdsTemp.CreateDataSet;
try
for i := 0 to 100 do
begin
cdsTemp.Append;
TBlobField(cdsTemp.FieldByName('arq')).LoadFromFile(String(C:\PROJBLOB\arquivopdf.pdf));
cdsTemp.Post;
end;
finally
FreeAndNil(cdsTemp);
end;
end;
Pergunta
LockSpy
Olá pessoal,
Eu estou estudando o TBlobField com ClientDataSet, peguei um modelo da internet e eu estou tentando carregar um arquivo grande de em torno 35mb várias vezes, porém conforme eu vou dando o loop depois de carregar algumas vezes o ClientDataSet da erro de 'Insufficient memory for this operation.', eu já consegui verificar que é porque o arquivo é muito grande e provavelmente chega no limite do ClientDataSet. Mas gostaria de saber como posso contornar essas situações em vez de simplesmente trocar um arquivo por um pequeno, porque em cliente nem sempre vão ser arquivos pequenos.
Existe alguma forma que eu possa fazer com que verifique o limite e pare o loop e emita uma mensagem?
Ou melhor ainda existe alguma forma de carregar todos os arquivos e não dar erro de memória? De repente compactar o arquivo antes?
Qual seria a melhor solução para esse caso? Poderiam me ajudar com alguma solução?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.