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

Вниз

Работа с файлом и несколькими RichEdit ами   Найти похожие ветки 

 
Gamer   (2006-02-13 16:24) [0]

Здравствуйте.
Как сохранить информацию с нескольких RichEdit"ов в один файл и не делать ограничений по размеру поля RichEdit"ов?
И как сделать обратный процесс?


 
Style ©   (2006-02-13 16:32) [1]

Сохранить каждый RichEdit в TMemoryStream потом соединить все стримы. и сохранить в файл....


 
Style ©   (2006-02-13 16:37) [2]

Модеры, извените за второй пост подряд :) ...


> И как сделать обратный процесс?


Просто сохранять в стриме перед каждым началом данных каждого RichEdit"a
размер этих данных, т.е. 4 байта sizeof(integer)...
При считывании уже соединенного стрима, нужно учитывать то что первые 4 байта - это информация о размере который необходимо считать...


 
Gamer   (2006-02-13 16:45) [3]

Не сочтите за наглость. Но можно, ли маленький пример.


 
Style ©   (2006-02-13 17:00) [4]


> Gamer   (13.02.06 16:45) [3]
>Не сочтите  за наглость....


Сочту :)

procedure SaveToFile(FileName: string);
var
 MergedStream: TMemoryStream;

 procedure LocAppendRichEdit(Rich: TRichEdit);
   var
     len: integer;
     RichStream: TMemoryStream;
 begin
     RichStream := TMemoryStream.Create;
     try
       Rich.Lines.SaveToStream(RichStream);
       len := Length(Rich.Name);
       MergedStream.Write(len,sizeof(integer));
       MergedStream.Write(pchar(Rich.Name)^,len);

       len := RichStream.Size;
       MergedStream.Write(len,sizeof(integer));
       MergedStream.Write(RichStream.Memory^,len);

     finally
       RichStream.Free;
     end;
 end;

begin
   MergedStream := TMemoryStream.Create;
   try
     LocAppendRichEdit(RichEdit1);
     LocAppendRichEdit(RichEdit2);
     MergedStream.SaveToFile(FileName);
   finally
     MergedStream.Free;
   end;
end;

Обратный процесс напишешь сам!


 
Gamer   (2006-02-14 00:05) [5]

Style:
Спасибо за совет.
Я попробовал написать код, но у меня это слабо получилось:

procedure LoadFromFile(FileName: string);
var
len: integer;
s:string;
bfr:pointer;
MergedStream: TMemoryStream;

begin
  MergedStream := TMemoryStream.Create;
  try
    MergedStream.LoadFromFile(FileName);
    {{{{{{{{{{{{{}
     with mergedStream do begin
      Position:=0;
      Read(len,sizeof(integer));
      Position:=sizeof(integer)+len
      read(s,len);//Здесь выводит ошибку
      showmessage(inttostr(len));
     end;
    {{{{{{{{{{{{{}
  finally
    MergedStream.Free;
  end;
end;

Если Position:=sizeof(integer)+len; поменяю на Position:=len; то после
read(s,len); получаю s="";
Как исправить?


 
Плохиш ©   (2006-02-14 00:48) [6]


>       Position:=sizeof(integer)+len

убрать, указатель уже стоит на начале данных, а ты его суёшь в конец.

>       read(s,len);//Здесь выводит ошибку

Какая ошибка нужно догадаться, хотя у нас же есть телепаторы. Память под строку распределять Пушкин должен?

> Если Position:=sizeof(integer)+len; поменяю на Position:
> =len; то после
> read(s,len); получаю s="";
> Как исправить?

Может для начала почитаешь чего?


 
Германн ©   (2006-02-14 03:01) [7]

2 Gamer   (14.02.06 00:05) [5]
Надеюсь ты в Кваке или в Думе всех "имеешь".
Или и там тебя бьют все кому не лень?



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

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

Наверх




Память: 0.46 MB
Время: 0.012 c
2-1141391931
jenya
2006-03-03 16:18
2006.03.19
Из ColorDialog в Edit1, как текст, возможно?


11-1121271836
Dodfr
2005-07-13 20:23
2006.03.19
TabOrder form context menu error


6-1133973667
Хинт
2005-12-07 19:41
2006.03.19
Отправить пакет


6-1134067685
dDan
2005-12-08 21:48
2006.03.19
Ошибка 302 и как с ней бороться (Indy)


3-1138366105
diz22
2006-01-27 15:48
2006.03.19
Кол-во записей в DBF. Критично ли 600 000?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский