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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
1-2535
Delph
2002-04-18 16:54
2002.05.02
Вопрос про событие OnClick и OnDblClick


3-2485
Скалли
2002-04-08 09:54
2002.05.02
Работа с двумя серверами одновременно


6-2640
Basty
2002-02-16 09:26
2002.05.02
проблема с Server Socket


14-2663
DimaIv
2002-03-27 06:25
2002.05.02
Поиск и сортировка в массиве


14-2683
Santus
2002-03-25 20:38
2002.05.02
Нет





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