Главная страница
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.017 c
1-96878
Tundra
2003-01-21 09:26
2003.01.30
Создание инсталята BDE, Sql Explorer и INTERBASE + ехе-шник


6-96912
AlexVit
2002-12-05 06:37
2003.01.30
TNMMSGServ-компонента дает сообщение


1-96808
Smok_er
2003-01-19 17:18
2003.01.30
MDIForm without Child Captions


1-96788
Alex
2003-01-20 15:26
2003.01.30
Размещение компонентов Align<Bottom>


1-96794
Igit
2003-01-22 20:35
2003.01.30
Low_dword & High_dword