Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.02;
Скачать: CL | DM;

Вниз

StringGrid   Найти похожие ветки 

 
Aliev Adil   (2002-04-20 22:41) [0]

Как сохранить в файл StringGrid текстов


 
Song ©   (2002-04-21 09:41) [1]

Перебором, сохраняя каждую ячейку.


 
Anatoly Podgoretsky ©   (2002-04-21 11:36) [2]

Необязательнок, каждую, свойство rows имеет тип ТSrings


 
Song ©   (2002-04-21 12:15) [3]

2Anatoly Podgoretsky © (21.04.02 11:36)
Ага :) Сохрнаняя в файл каждый ряд, да? :)


 
Anatoly Podgoretsky ©   (2002-04-21 12:53) [4]

Да, не каждую ячейку, правда файлов будет много :-)


 
PaRL ©   (2002-04-21 13:49) [5]

Зачем много файлов то.

var F : TextFile;
S : String;
z, x, i, m, h : integer;
begin
AssignFile(f, "C:\file.dat");
Rewrite(f);
h := SG.Height;
Writeln(f, h);
i := Form1.SG.RowCount ;
Writeln(f, i);
m := Form1.SG.ColCount ;
Writeln(f, m);
for z := 0 to SG.RowCount-2 do
for x := 0 to SG.ColCount-1 do
begin
S := SG.Cells[x,z];
Writeln(F,S);
end;
CloseFile(F);
end;
end;


PS Вот когда я про это спрашивал, мне даже никто не намекнул :(


 
PaRL ©   (2002-04-21 13:52) [6]

В догонку. Загрузка ячеек:
AssignFile(F, "C:\file.dat");
Reset(F);
Readln(f, h);
SG.Height := h;
Readln(F, i);
Form1.SG.RowCount := i;
Readln(F, m);
Form1.SG.ColCount := m;
for z := 0 to SG.RowCount-2 do { Циклы в записи и в загрузке одинаковы.}
for x := 0 to SG.ColCount-1 do
begin
Readln(F,S);
SG.Cells[x,z] := S;
end;
CloseFile(F);


 
Song ©   (2002-04-21 13:57) [7]

2PaRL © (21.04.02 13:49)
ИМХО. записывать текстом - не рационально. А представьте себе большой грид, представляете какие будут файлы?
Мой вариант:

Procedure TForm2.SaveGrid(S:String; Strg:TStringGrid);
Var FileHandle,t,n,StringLen:Integer;
x:String[250];
Begin
With Strg Do
Begin
FileHandle:=FileCreate(S);
FileWrite(FileHandle,ColCount,SizeOf(ColCount)); //пишем количество столбцов
FileWrite(FileHandle,RowCount,SizeOf(RowCount)); //пишем количество рядов
For t:=1 to RowCount Do
For n:=0 to ColCount Do
Begin
StringLen:=Length(Cells[n,t])+1;
FileWrite(FileHandle,StringLen,SizeOf(StringLen));
x:=Cells[n,t];
FileWrite(FileHandle,X,StringLen);
End;
FileClose(FileHandle);
End;
End;

У меня тоже String, но файл сохраняемый такой процедурой будет занимать на порядок меньше места чем в Вашем варианте.


 
PaRL ©   (2002-04-21 14:00) [8]

Я не волшебник, я только учусь.

PS Спасибо.


 
Anatoly Podgoretsky ©   (2002-04-21 14:03) [9]

Интересно, с чего бы это, у него на ячейку перегрузка в два байта, а у тебя 4
Если уж писать, то Tab Delimited автоматом получается и количество строк и колонок
Не говорю уже про импорт/экспорт скажем в Excel


 
Song ©   (2002-04-21 14:11) [10]

Основная экономия не в перегрузке, а в записи фактической длины ячейки чем текстовой строки в целом.


 
Anatoly Podgoretsky ©   (2002-04-21 14:21) [11]

Так фактическая длина не требуется, она задается делимитерами, а текстовый формат имеет дополнительные преимущества. Но я все равно предподчел бы Tab Delimited, кроме этих преисуществ в нагрузку возможность импорта/экспорта.


 
PaRL ©   (2002-04-21 15:51) [12]


> Так фактическая длина не требуется, она задается делимитерами,
> а текстовый формат имеет дополнительные преимущества. Но
> я все равно предподчел бы Tab Delimited, кроме этих преисуществ
> в нагрузку возможность импорта/экспорта.

Можно пример?



 
Anatoly Podgoretsky ©   (2002-04-21 15:54) [13]

Так пример ты сам привел, а если ты про Tab Delimites то просто добавляются символы табуляции вместо CRLF



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

Текущий архив: 2002.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
1-2565
vadim2
2002-04-19 11:45
2002.05.02
где посмотреть исходник функции Pos(Substr;S: string) ?


1-2590
Troy
2002-04-19 17:02
2002.05.02
Помогите !!!


3-2482
MCFire
2002-04-11 11:45
2002.05.02
Опять TreeView


1-2529
Катерина
2002-04-21 12:56
2002.05.02
Размеры в Chart


7-2688
Wman
2002-02-06 12:14
2002.05.02
НИЗКИЙ ПРИОРИТЕТ, HELP ME