Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохраниние ячеек таблицы [D7, XP]


Марина ©   (2006-06-13 18:39:00) 

Здравствуйте. Подскажите пожалуйста как мне правильно сохранять и загружать таблицу находящуюся в СтрингГриде, если в ячейке многострочная запись ?
а то нижеприведенный метод корректно работает только если в ячейках записи однострочные, а если грузить многострочные ячейки, то порядок записай в ячейках таблицы сбивается.


procedure 3arpy3ka;
var
f:textfile;
temp,x,y:integer;
sapppath,tempstr:string;
begin
sapppath := ExtractFilePath(Application.ExeName);

    For X:=0 to InterBase.colcount-1 do
     For y:=0 to InterBase.rowcount-1 do
         begin
           tempstr := '';
           InterBase.cells[x,y]:=tempstr;
         end;
   InterBase.RowCount := 2;
   Application.ProcessMessages();

if FileExists(sapppath+'try.dat') then
begin
try
 assignfile (f,sapppath+'try.dat');
 reset (f);
 readln (f,temp);
 InterBase.colcount:=temp;
 readln (f,temp);
 StringGrid.rowcount:=temp;

 For X:=0 to StringGrid.colcount-1 do
 For y:=0 to StringGrid.rowcount-1 do
  begin
   readln (F, tempstr);
   StringGrid.cells[x,y]:=tempstr;
  end;

 finally
  closefile (f);
end;
  end else MessageDlg('Невозможно загрузить файл',mtError,mbOKCancel,0);
end;

procedure CoxpaHeHue;
var
f:textfile;
x,y:integer;
sapppath : string;
begin
sapppath := ExtractFilePath(Application.ExeName);

assignfile (f,sapppath+'try.dat');
rewrite(f);
writeln(f,InterBase.colcount);
writeln(f,InterBase.rowcount);
For X:=0 to StringGrid.colcount-1 do

For y:=0 to StringGrid.rowcount-1 do
writeln (F, StringGrid.cells[x,y]);
closefile (f);
Application.ProcessMessages();
end;


а как сохранять и загружать так, чтобы поддерживались многострочные записи в ячейках вида :

строка 1
строка 2
строка 3
строка 4


помогите пожалуйста


Жуков Олег   (2006-06-13 19:54:00) [1]


> Марина   (13.06.06 18:39)
>
>


Способ 1.
Заменять перед записью в строках символы новой строки на служебную последовательность символов, например функцией StringReplace:

const
 NewLineTag = '##NEWLINE##';

 s := StringReplace(s, #13#10, NewLineTag, [rfReplaceAll]);


При чтении, соответственно делать обратную операцию:
 s := StringReplace(s, NewLineTag, #13#10, [rfReplaceAll]);

Способ 2.

Отказаться от текстового файла в пользу файла с записями переменной длинны, и в начале каждой записи в файл писать длину строки, затем саму строку.
При чтении каждой записи сначала считывать длину (количество символов), затем, со следующей позиции считать в строковую переменную ранее прочитанное количесво символов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо