Fórum Erro ao escrever o conteúdo de um TMemoryStream numa variável do tipo string #477679
01/05/2014
0
O problema acontece quando eu carrego determinado arquivo de áudio para um TMemoryStream e tento escrever o conteúdo dele numa string, com o uso da função SetString, da seguinte maneira:
O erro acontece na primeira vez que um arquivo é carregado, nas próximas vezes não, até que o programa seja iniciado novamente.
Estou utilizando o Delphi XE5.
procedure TxTela_001.xBitBtn1Click(Sender: TObject);
var
strArquivo: string;
dlgArquivo: TOpenDialog;
mstArquivo: TMemoryStream;
mstOArquivo: TMemoryStream;
begin
inherited;
dlgArquivo := TOpenDialog.Create(Self);
if (dlgArquivo.Execute) then
try
mstArquivo := TMemoryStream.Create;
mstArquivo.LoadFromFile(dlgArquivo.FileName);
SetString(strArquivo, PChar(mstArquivo.Memory), mstArquivo.Size);
mstOArquivo := TMemoryStream.Create;
mstOArquivo.Write(Pointer(strArquivo)^, Length(strArquivo));
mstArquivo.SaveToFile('y:\arquivos\arquivo' + FormatDateTime('hhmmss', now()) +
Copy(dlgArquivo.FileName, Length(dlgArquivo.FileName) - 3));
mstOArquivo.Free;
mstArquivo.Free;
except
mstOArquivo.Free;
mstArquivo.Free;
end;O erro acontece na primeira vez que um arquivo é carregado, nas próximas vezes não, até que o programa seja iniciado novamente.
Estou utilizando o Delphi XE5.
José Maciel
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)