Главная страница
    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.47 MB
Время: 0.014 c
4-1134847215
Wiz@rd
2005-12-17 22:20
2006.03.19
Dll или нет...


15-1140613013
vidiv
2006-02-22 15:56
2006.03.19
посоветуйте дизассемблер


15-1140873168
SergP.
2006-02-25 16:12
2006.03.19
PHP.сообщ. при отсутствии данных для $HTTP_POST_VARS. Как убрать?


15-1140786791
Новичоккк
2006-02-24 16:13
2006.03.19
Посоветуйте дешевый хостинг


15-1140552453
Vendict
2006-02-21 23:07
2006.03.19
Magic Forum Reader





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