Текущий архив: 2003.01.30;
Скачать: CL | DM;
ВнизЗапись в конец потока символа конца строки Найти похожие ветки
← →
Сатир (2003-01-21 18:42) [0]Подскажите, пожалуйста, как и где реализовать сабж в данном примере:
function TREditorX.BlobForSave(var strm: TStream): String;
var SS: TIdMultiPartFormDataStream;
textstrm, rtfstrm, htmlstrm: TMemoryStream;
tmpOnHTMLSaveImage: TRVHTMLSaveImageEvent;
I: Integer;
begin
SS := TIdMultiPartFormDataStream.Create;
textstrm := TMemoryStream.Create;
rtfstrm := TMemoryStream.Create;
htmlstrm := TMemoryStream.Create;
tmpOnHTMLSaveImage := RVEdit.OnHTMLSaveImage;
RVEdit.OnHTMLSaveImage := OnUploadHTMLImage;
FImages:= TStringList.Create;
try
if RVEdit.SaveRTFToStream(rtfstrm, False)then
begin
rtfstrm.Seek(0,soFromBeginning);
SS.AddObject("rtf", "application/rtf", rtfstrm,"text.rtf");
end;
if RVEdit.SaveHTMLToStreamEx(htmlstrm, "", "", "images/img", "", "", "",[rvsoOverrideImages,rvsoMiddleOnly,rvsoNoHypertextImageBorders,rvsoImageSizes]) then
begin
htmlstrm.Seek(0,soFromBeginning);
SS.AddObject("html", "text/html", htmlstrm,"text.html");
for I:=0 to FImages.Count-1 do begin
TStream(FImages.Objects[I]).Seek(0,soFromBeginning);
SS.AddObject(FImages[I],"image/jpeg",FImages.Objects[I],FImages[I]);
end;
end;
if RVEdit.SaveRVFToStream(textstrm, False)then
begin
textstrm.Seek(0,soFromBeginning);
SS.AddObject("text", "application/x-rvf", textstrm,"text.rvf");
end;
Result := sContentType + Copy(SS.Boundary,3,1000);
SS.Seek(0,soFromBeginning);
strm.CopyFrom(SS,SS.Size);
finally
htmlstrm.Free;
textstrm.Free;
rtfstrm.Free;
SS.Free;
RVEdit.OnHTMLSaveImage := tmpOnHTMLSaveImage;
ClearImages;
end;
end;
конец каждого потока htmlstrm, textstrm, rtfstrm нужно закончить символом конца строки (#10). К сожалению, раньше с этим не стыкался, поэтому возникли трудности.:(
Заранее благодарен всем откликнувшимся.
← →
Набережных С. (2003-01-21 20:23) [1]var
C: Char;
C:=#10;
if RVEdit.SaveRTFToStream(rtfstrm, False)then
begin
rtfstrm.Write(C,SizeOf(c));
rtfstrm.Seek(0,soFromBeginning);
SS.AddObject("rtf", "application/rtf", rtfstrm,"text.rtf");
end;
← →
Сатир (2003-01-21 20:31) [2]2Набережных С.
спасибо, Вы читаете мои мысли:)
вот мой вариант:
c:char;
begin
...
c:=#10;
try
if RVEdit.SaveRTFToStream(rtfstrm, False)then
begin
rtfstrm.WriteBuffer(c,1);
rtfstrm.Seek(0,soFromBeginning);
SS.AddObject("rtf", "application/rtf", rtfstrm,"text.rtf");
end;
...
кстати, а какой метод лучше (правильнее)?
← →
Набережных С. (2003-01-21 21:01) [3]А здесь ИМХО без разницы :) Но лучше все-таки SizeOf(c). Что-бы когда-нибудь в будущем с этим исходником проблем не поиметь:)
Страницы: 1 вся ветка
Текущий архив: 2003.01.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c