работа с файлом
3
код:
ifstream fin("файл.dat");
fin.seekg(0,ios::beg);
dat=fin.get();
Выводми dat в Label->Caption
а там 51 ... ???(остальные значения здесь не представленные вообще не выводятся)
Такой может быть?
в книжке описано что fin.get() - если без параметров вытягивает из кода int значения ,это правда у меня просто весь файл состоит из циферок, и нужно их подряд собирать и складывать в объект...
что в моих 3-х строчках неверно?... выложите кто может примерчик пожалуйста...
есть файл c содержимым
3
код:
ifstream fin("файл.dat");
fin.seekg(0,ios::beg);
dat=fin.get();
Выводми dat в Label->Caption
а там 51 ... ???(остальные значения здесь не представленные вообще не выводятся)
Такой может быть?
в книжке описано что fin.get() - если без параметров вытягивает из кода int значения ,это правда у меня просто весь файл состоит из циферок, и нужно их подряд собирать и складывать в объект...
что в моих 3-х строчках неверно?... выложите кто может примерчик пожалуйста...
Вы записали файл в текстовом режиме и при чтении вы получили 51 - это ASCII код цифры 3 т.е. dat = '3' <=> dat = 51. Если у вас есть hex-редактор, то открыв файл в нем вы увидите что там записано 51, а скорее всего 0x33 в шестнадцатиричном виде, но не 3.
ИМХО, не самый лучший метод работы с бинарными файлами.
если хотите работать с сырыми данными пользуйтесь write и read
А вообще забе на эти стандарты и юзай TStrings -
толку больше и надежность выше...
А вообще забе на эти стандарты и юзай TStrings -
толку больше и надежность выше...
От TStrings в бинарниках мало толку, тогда уж
TFileStream. И кстати, для работы с текстовыми файлами, ifstream и ofstream - отличная весчь :D
От TStrings в бинарниках мало толку, тогда уж
TFileStream. И кстати, для работы с текстовыми файлами, ifstream и ofstream - отличная весчь :D
Кто ж спорит.
Но файл используется для AnsiString(Caption) а тут это... дурной тон...(или как там пишет MSDN)
Кто ж спорит.
Но файл используется для AnsiString(Caption) а тут это... дурной тон...(или как там пишет MSDN)
]
подробнее
файл
3
1,120,200,0
2,130,200,0
3,140,200,0
----код----------
int dat;
ifstream fin("файл.dat");
fin.seekg(0,ios::beg);
dat=fin.get();
gpr[1]->instantdlinna(dat);
for (int i=1;i<4;i++)
{
dat=fin.get();
dat1=fin.get();
dat2=fin.get();
dat3=fin.get();
gpr[1]->instantgp(dat,dat1,dat2,dat3);
}
for (int i=1;i<4;i++)
{
StringGrid5->Cells[0][StringGrid5->RowCount-1]=gpr[1]->dlinna;
StringGrid5->Cells[1][StringGrid5->RowCount-1]=gpr[1]->pp;
StringGrid5->Cells[2][StringGrid5->RowCount-1]=gpr[1]->x;
StringGrid5->Cells[3][StringGrid5->RowCount-1]=gpr[1]->y;
StringGrid5->Cells[4][StringGrid5->RowCount-1]=gpr[1]->property;
StringGrid5->RowCount++;
}
------- ----------
grp - это объект класса, точнее его указатель, но это не важно....
Если мои идем это дурной тон....
подскажите
файл создается вручную.....кучей int значениями
через запятую(ну или пробел не важно)
как считать эти int в класс, ну или как их просто считать, с классом то все понятно...
]
подробнее
файл
3
1,120,200,0
2,130,200,0
3,140,200,0
----код----------
int dat;
ifstream fin("файл.dat");
fin.seekg(0,ios::beg);
dat=fin.get();
gpr[1]->instantdlinna(dat);
for (int i=1;i<4;i++)
{
dat=fin.get();
dat1=fin.get();
dat2=fin.get();
dat3=fin.get();
gpr[1]->instantgp(dat,dat1,dat2,dat3);
}
for (int i=1;i<4;i++)
{
StringGrid5->Cells[0][StringGrid5->RowCount-1]=gpr[1]->dlinna;
StringGrid5->Cells[1][StringGrid5->RowCount-1]=gpr[1]->pp;
StringGrid5->Cells[2][StringGrid5->RowCount-1]=gpr[1]->x;
StringGrid5->Cells[3][StringGrid5->RowCount-1]=gpr[1]->y;
StringGrid5->Cells[4][StringGrid5->RowCount-1]=gpr[1]->property;
StringGrid5->RowCount++;
}
------- ----------
grp - это объект класса, точнее его указатель, но это не важно....
Если мои идем это дурной тон....
подскажите
файл создается вручную.....кучей int значениями
через запятую(ну или пробел не важно)
как считать эти int в класс, ну или как их просто считать, с классом то все понятно...
А почему бы не сделать так:
char delim;
ifstream fin("файл.dat");
fin.seekg(0,ios::beg);
fin >> dat;
gpr[1]->instantdlinna(dat);
for (int i=1;i<4;i++)
{
fin >> dat >> delim;
fin >> dat1 >>delim;;
fin >> dat2 >> delim;
fin >> dat3;
gpr[1]->instantgp(dat,dat1,dat2,dat3);
}
for (int i=1;i<4;i++)
{
StringGrid5->Cells[0][StringGrid5->RowCount-1]=gpr[1]->dlinna;
StringGrid5->Cells[1][StringGrid5->RowCount-1]=gpr[1]->pp;
StringGrid5->Cells[2][StringGrid5->RowCount-1]=gpr[1]->x;
StringGrid5->Cells[3][StringGrid5->RowCount-1]=gpr[1]->y;
StringGrid5->Cells[4][StringGrid5->RowCount-1]=gpr[1]->property;
StringGrid5->RowCount++;
}
А со StringGrid для записи и чтения надо работать через свойство Table->Cols или Table->Rows
они элементарно загружаются и пишутся в файлы
(SaveToFile).Есть даже спец. метод записи в StringGrid(щас некогда см. синтаксис- играю в клубе в СS:))