好吧,所以我(很好)最近開始玩拉扎魯斯/免費帕斯卡爾,我有點卡住與TMemoryStream閱讀文件和它的流親。卡住流媒體文件到字符串
我想寫一個簡單的base64編碼器,可以編碼字符串的文本或文件(如圖像和WAV),然後在HTML和JavaScript中使用。
下面的代碼編譯得很好,但是在試圖加載文件時我得到了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;
誰能幫助我嗎?
[ObjectBinaryToText(http://docwiki.embarcadero.com/Libraries/XE5/en/System.Classes.ObjectBinaryToText)是在Delphi系統單元標準功能,用於讀取dfm資源並將其轉換爲文本。例如,它在IDE中被大量使用。還有逆ObjectTextToBinary,該文本對象轉換成它的二進制版本(使用時DFM資源,您的應用程序被加載在運行時創建實際的窗體和控件)。 –
對於Lazarus/fpc單元base64。包含兩個流和輔助功能編碼/ decidestringbase64() –
我覺得馬可說,我使用的拉撒路它有它自己的base64類,似乎有點挑剔比它的變形怪 –