exp |
Отправлено: 12.11.2003, 21:04 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Господа/товарищи... Добрый утр/день/ночь (выбирайте сами)
1)Подскажите плз, как работать в билдыре с типизированными файлами?
Т.е. нужно создать новый файл, открыть и отредактировать существующий, сохранить созданный или измененный файл.
2) Существуют ли билдыре аналоги дельфийских функций типа
Assign, Append, Reset, Read, Write и далее по списку?
|
|
Valdemar |
Отправлено: 13.11.2003, 09:30 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Посмотри функции fopen, fread, fwrite, fseek и т.д. |
|
Admin |
Отправлено: 13.11.2003, 10:57 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
А также:
FileCreate() FileOpen() FileRead() FileWrite() FileClose() FileSeek()
----
CreateFile() OpenFile() DeleteFile() ReadFile() WriteFile()
----
Также многие компоненты имеют функции сохранения/восстановления
из файла:
CODE |
AnsiString FileName;
Memo1->Lines->SaveToFile(FileName);
Memo1->Lines->LoadFromFile(FileName);
ListBox1->Items->SaveToFile(FileName);
StringGrid1->Rows->SaveToFile(FileName);
RichEdit1->Lines->SaveToFile(FileName);
|
|
|
exp |
Отправлено: 13.11.2003, 23:30 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Посмотрел.
fopen, fread, fwrite, fseek, как я понял, для работу с текстовыми файлами. Во всех примерах с их помощью сохраняется только текст.
А у меня файл, содержащий структуры, к примеру, такие:
struct Man
{
AnsiString Name;
AnsiString Fame;
int Age;
int HouseNumber;
float Weight;
};
Ну, думаю понятно, что я собираюсь хранить разнотипные данные.
А во всех примерах, что я видел, никакого намека на тип файла не было.
Да. Компоненты тоже в моем случае нельзя использовать, так как они сохраняют инфу только в текстовые файлы.
Неужели в CBuilder нет того, что в Delphi описывается так
CODE |
var
//...
MyFile: file of Man;
//....
begin
//....
Assign('d:\.....',MyFile);
|
то есть типизированных файлов?
|
|
Георгий |
Отправлено: 14.11.2003, 00:05 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
Доброй ночи.
fopen имеет вторым аргументом тексовую строку и если там написать "rb" или "wb", то файл быдут открыт для двоичного чтения или записи соответственно.
В языке 'C' нет не только типизированных файлов, в нём вообще нет работы с файлами — всё это делают библиотечные функции, которые на первый взглад не умеют работать с тем, что в Pascal называется типизированными файлами, но ничто не мешает им подсунуть структуру фиксированной длины — например так:
CODE |
const NamesLength=80;
struct Man
{
char Name[NamesLength];
char Fame[NamesLength];
int Age;
int HouseNumber;
float Weight;
};
void main(void)
{
Man man;
FILE *FilePtr;
FilePtr=fopen("asd.bin", "wb");
fwrite(&man, sizeof(man), 1, FilePtr );
fclose(FilePtr);
}
|
И функционально это будет эквивалентно тому, что в Pascal называют типизированными файлами, но на порядок более прозрачно — ведь здесь очевидно, что выполняется запись непрерывной области ОП на диск. |
|
exp |
Отправлено: 14.11.2003, 01:29 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Спасибо!!!!!!!!......(100! восклицательных знаков).
Да к тому же, я в архиве откопал примерчик, только с использованием
FileWrite,FileCreate,..... и т.п.
Да а почему файл asd.bin в твоем примере имеет расширение bin? Спрашиваю потому, что в примере из архива файл тоже имел это расширение. Что это совпадение, или в этом есть какой-то смысл?
|
|
Георгий |
Отправлено: 14.11.2003, 07:29 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
смысл в расширении bin такоеже, как и в имени файла asd т.е. никакого |
|