Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.014 c
1-96660
pavelB
2003-01-20 13:51
2003.01.30
Меню


14-96988
Wizard
2003-01-11 13:28
2003.01.30
Мастер


14-96985
Roma111
2003-01-13 10:17
2003.01.30
Компоненты для MS SQL 7


8-96895
ivankor
2002-10-11 09:22
2003.01.30
Как сравнить две картинки?


14-96956
Blackweber
2003-01-12 03:12
2003.01.30
Почему StringGrid так работает?