さて、私は(非常に)最近、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;
誰でも私を助けることができますか?