Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

сохранить текст из 20 richedit в один файл   Найти похожие ветки 

 
stud ©   (2006-07-04 16:37) [0]

каким образом можно осуществить?
пробовал писать в ини файл с помоью потоков, но там ограничение на по длине.


 
Джо ©   (2006-07-04 16:39) [1]

Текст сохранять нужно форматированный или нет?


 
stud ©   (2006-07-04 16:51) [2]

да, форматированый


 
Джо ©   (2006-07-04 16:55) [3]

Вот, на скорую руку набросал пример сохранения. Разбирешься с принципом, чтение сделаешь без труда. :)

procedure SaveRichEditToStream (AStream: TStream; RichEdit: TRichEdit);
var
 TempStream: TMemoryStream;
 Sz: Integer;
begin
 TempStream := TMemoryStream.Create;
 try
   RichEdit.Lines.SaveToStream(TempStream);

   Sz := TempStream.Size;
   TempStream.Position := 0;

   AStream.Write(Sz,SizeOf(Sz));

   AStream.CopyFrom(TempStream,Sz);
 finally
   TempStream.Free;
 end;
end;

procedure SaveRichEditsToStream (AStream: TStream; Richedits: array of TRichEdit);
var
 I,Cnt: Integer;
begin
 Cnt := High(RichEdits)+1;
 AStream.Write(Cnt,SizeOf(Cnt));

 for I := 0 to Cnt-1 do
   SaveRichEditToStream(AStream,Richedits[I]);
end;

procedure SaveRichEditsToFile (AFileName: string; Richedits: array of TRichEdit);
var
 Fs: TFileStream;
begin
 Fs := TFileStream.Create(AFileName,fmCreate);
 try
   SaveRichEditsToStream(Fs,Richedits);
 finally
   Fs.Free
 end;
end;


Пример использования (сохранение содержимого двух RichEdit"ов в один файл):

procedure TForm1.Button1Click(Sender: TObject);
begin
 SaveRichEditsToFile("d:\RichEdits.dat",[RichEdit1,RichEdit2]);
end;


 
Джо ©   (2006-07-04 17:12) [4]

Ладно, буду добрым до конца :) Надеюсь, поможет разобраться с принципом. Лови загрузку:


procedure LoadRichEditFromStream (AStream: TStream; Richedit: TRichEdit);
var
 Sz: Integer;
 TempStream: TMemoryStream;
begin
 AStream.Read(Sz,SizeOf(Sz));
 TempStream := TMemoryStream.Create;
 try
   TempStream.CopyFrom(AStream,Sz);
   TempStream.Position := 0;
   Richedit.Lines.LoadFromStream(TempStream);
 finally
   TempStream.Free;
 end;
end;

procedure LoadRichEditsFromStream (AStream: TStream; Richedits: array of TRichEdit);
var
 I,
 Cnt: Integer;
begin
 AStream.Read(Cnt,SizeOf(Cnt));
 if High(Richedits)+1 <> Cnt then
   raise Exception.CreateFmt("Неверное количество объектов (%d). Требуется %d",
     [High(Richedits)+1, Cnt]);

 for I := 0 to Cnt-1 do
   LoadRichEditFromStream(AStream,Richedits[I]);
end;

procedure LoadRichEditsFromFile(AFileName: string; Richedits: array of TRichEdit);
var
 Fs: TFileStream;
begin
 Fs := TFileStream.Create(AFileName,fmOpenRead);
 try
   LoadRichEditsFromStream(Fs,Richedits);
 finally
   Fs.Free
 end;
end;


Пример:

procedure TForm1.Button2Click(Sender: TObject);
begin
 LoadRichEditsFromFile("d:\RichEdits.dat",[RichEdit3,RichEdit4]);
end;


 
Джо ©   (2006-07-04 17:13) [5]

[3]
> Разбирешься

Ай, сорри, совсем плохой я стал.


 
stud ©   (2006-07-04 17:15) [6]

принцип понятен, последовательная запись в файл.
но! как потом все это хозяйство вытащить обратно в эти едиты.
если прочитать файл - то он прочитается весь в один поток т.к. размер записанных данных отсутсвует


 
Джо ©   (2006-07-04 17:16) [7]

> т.к. размер записанных данных отсутсвует

Как это отсутствует?! Внимательно посмотри мой код. Размер данных пишется перед каждой "порцией". А в начале файла идет кол-во порций. Впрочем, убедись сам, я загрузку тоже привел.


 
stud ©   (2006-07-04 17:18) [8]

спасибо



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
15-1151066974
Сатир
2006-06-23 16:49
2006.07.23
Тенниска с вентилятором


3-1147863832
Delphi basic
2006-05-17 15:03
2006.07.23
Отображение иерархической информации


15-1151218322
Nic
2006-06-25 10:52
2006.07.23
Какие преимущества даёт компонент TActionList?


3-1148278150
petvv
2006-05-22 10:09
2006.07.23
Пустые поля после выполнения SQL запроса


15-1151392880
Ega23
2006-06-27 11:21
2006.07.23
Посоветуйте ToolBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский