PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

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:

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

José Maciel

Responder

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

Aceitar