0

さて、私は(非常に)最近、lazaruz/free pascal を使い始めました。TMemoryStream を使用したファイルの読み取りに少し行き詰まっており、ストリーミング キンです。

テキストの文字列またはファイル(画像やWAVなど)をエンコードして、htmlやjavascriptで使用できる単純なbase64エンコーダーを作成しようとしています。

次のコードはうまくコンパイルできEReadError Illegal stream imageますが、ファイルを読み込もうとするとエラーが発生します。参照用に作業文字列のみの手順を含めます。

procedure TForm1.TextStringChange(Sender: TObject);
    begin
    Memo1.Lines.Text := EncodeStringBase64(TextString.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Memo1.Lines.Text := '';
   Form1.BorderIcons :=  [biSystemMenu,biMinimize];
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
    begin
     filename := OpenDialog1.Filename;
     stream := TMemoryStream.Create;
       try
         StrStream := TStringStream.Create(s);
           try
              stream.LoadFromFile(filename);
              stream.Seek(0, soFromBeginning);
              ObjectBinaryToText(stream, StrStream);
              StrStream.Seek(0, soFromBeginning);
              Memo1.Lines.Text := EncodeStringBase64(StrStream.DataString);
           finally
              StrStream.Free;
           end;
       finally
           stream.Free;
       end;
    end;
end;   

誰でも私を助けることができますか?

4

2 に答える 2