Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.186.6] |
|
Сообщ.
#1
,
|
|
|
доброго всем времени суток! есть проблема, и думаю что решение этой проблемы могу найти только тут. Такая ситуация.. запись в файл происходит нормальн.. без приключений, но я ни как не могу въехать, как повернуть процесс в обратную сторону (прочесть этот файл).. прошу помощи!
SaveDialog1->DefaultExt="txt"; SaveDialog1->Filter="ASCII files (*.txt)|*.txt"; if(SaveDialog1->Execute()) { if(ExtractFileExt(SaveDialog1->FileName).UpperCase()==".TXT") { FILE *fop=fopen(SaveDialog1->FileName.c_str(),"wt"); if(fop) { if(StringGrid1->RowCount>0) fprintf(fop,StringGrid1->Rows[0]->CommaText.c_str()); for(int i=1;i<StringGrid1->RowCount;i++) fprintf(fop,"\n%s",StringGrid1->Rows[i]->CommaText.c_str()); fclose(fop); } } } |
Сообщ.
#2
,
|
|
|
Самое простое - использовать sl:TStringList.
Сначала грузишь файл в стринг-лист (LoadFromFile), устанавливаешь гриду RowCount и затем построчно делаешь для каждого StringGrid1.Rows[i].CommaText = sl[i]; PS: можно и напрямую из файла строки читать, но тогда придется RowCount наращивать по 1 |
Сообщ.
#3
,
|
|
|
Вариант конечно! но всё же для более высокого порядка хочется сделать процессы записи и чтения (однотипными)!
OpenDialog1->DefaultExt="txt"; OpenDialog1->Filter="ASCII files (*.txt)|*.txt"; if(OpenDialog1->Execute()) { if(ExtractFileExt(OpenDialog1->FileName).UpperCase()==".TXT") { FILE *fop=fopen(OpenDialog1->FileName.c_str(),"wt"); if(fop) {а // дальше нипонимаю!!!!!! как направить на чтение? if(StringGrid1->RowCount>0) fprintf(fop,StringGrid1->Rows[0]->CommaText.c_str()); for(int i=1;i<StringGrid1->RowCount;i++) fprintf(fop,"\n%s",StringGrid1->Rows[i]->CommaText.c_str()); fclose(fop); } } } |
Сообщ.
#4
,
|
|
|
Цитата HESH @ для более высокого порядка Ну, ну Тогда придется использовать буфер для чтения строк и не ошибиться с его длинной char buf[256]; //размер должен вмещать самую длинную строку StringGrid int i=0; while( !feof(fop) ) { fgets(buf,256,fop); i++; if (StringGrid1->RowCount < i) { StringGrid1->RowCount = i; } StringGrid1->Rows[i-1]->CommaText = buf; } if (StringGrid1->RowCount != i) { StringGrid1->RowCount = i; } |