информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Атака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Что-то я запутался.... по поводу сохранения массива в файл (желательно Builder) 14.06.01 01:02  
Автор: shot Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Привет всем..:)
Вот по поводу сохранения массива в файл средствами Builder, то бишь FileWrite...... Привожу свою проблему на конкретном примере.:

но для начала строение функции FileWrite:
int FileWrite(int Handle, const void *Buffer, unsigned int count);
int FileRead(int Handle, const void *Buffer, unsigned int count);

теперь проблемс:
допустим следующий код:

class S
{public:
AnsiString name;
AnsiString path;};

class G
{public:
S S1[50];
AnsiString name;};

class B
{public:
G G1[100];
AnsiString name;
AnsiString path;
bool Is;};

теперь, после описания основных классов, делаем следующее объявление:
B B1[20];

Вот, и наконец считываем массив данных типа B из файла...:
......тут не важно........
int open;
open=FileOpen(GetCurrentDir()+"\\xxxx.xxx", fmOpenRead);
FileRead(open, здесь указываем &B1[20], sizeof(B));
.....дальше не важно....
//не создавал буфера, а указал конкретно....

и случай с записью, эдентичен.... только
open=FileOpen(GetCurrentDir()+"\\xxxx.xxx",fmOpenWrite);
FileWrite(open,B1[20],sizeof(B));
...................................

Если бы дело было не с массивом, то все бы работало как надо... но здесь он и записать толком не может и считать.... что только не делал, нифига не выходит... может кто догнал, как и где я ошибаюсь....?
[C++] Что-то я запутался.... по поводу сохранения массива в файл (желательно Builder) 14.06.01 01:04  
Автор: shot Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Привет всем..:)
> Вот по поводу сохранения массива в файл средствами Builder,
> то бишь FileWrite...... Привожу свою проблему на конкретном
> примере.:
>
> но для начала строение функции FileWrite:
> int FileWrite(int Handle, const void *Buffer, unsigned int
> count);
> int FileRead(int Handle, const void *Buffer, unsigned int
> count);
>
> теперь проблемс:
> допустим следующий код:
>
> class S
> {public:
> AnsiString name;
> AnsiString path;};
>
> class G
> {public:
> S S1[50];
> AnsiString name;};
>
> class B
> {public:
> G G1[100];
> AnsiString name;
> AnsiString path;
> bool Is;};
>
> теперь, после описания основных классов, делаем следующее
> объявление:
> B B1[20];
>
> Вот, и наконец считываем массив данных типа B из файла...:
> ......тут не важно........
> int open;
> open=FileOpen(GetCurrentDir()+"\\xxxx.xxx", fmOpenRead);
> FileRead(open, здесь указываем &B1[20], sizeof(B));
> .....дальше не важно....
> //не создавал буфера, а указал конкретно....
>
> и случай с записью, эдентичен.... только
> open=FileOpen(GetCurrentDir()+"\\xxxx.xxx",fmOpenWrite);
> FileWrite(open,B1[20],sizeof(B));
> ...................................
>
> Если бы дело было не с массивом, то все бы работало как
> надо... но здесь он и записать толком не может и
> считать.... что только не делал, нифига не выходит... может
> кто догнал, как и где я ошибаюсь....?


делаю поправку к своему же сообщению:
FileWrite(open,&B1[20],sizeof(B)); - вот...:) сорри:)
[C++] Что-то я запутался.... по поводу сохранения массива в файл (желательно Builder) 14.06.01 01:29  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
delai tak:


struct S
{
char name[MAX_PATH];
char path[MAX_PATH];
};
structG
{
S S1[50];
char name[MAX_PATH];
};
struct B
{
G G1[100];
char name[MAX_PATH];
char path[MAX_PATH];
bool Is;
};

B B1[20];

int open;
open=FileOpen(GetCurrentDir()+"\\xxxx.xxx",
fmOpenRead);
FileRead(open, B1, sizeof(B)*20);
//. . . . ne zabud` FileClose(...)
open=FileOpen(GetCurrentDir()+"\\xxxx.xxx",fmOpenWrite);

FileWrite(open, B1,sizeof(B)*20);

Konechno variant ne racional`nyi no budet rabotat` i ot tvoego koda ne slishkom otlichaets`ia
Voobche dinamicheski allociruui pamiat`, no v etom sluchaet ty ne mozhesh ispolzovat` etot koda , zapisyvat` kazdyi member otdel`no ispolzuia loop.
Спасибо, что откликнулся! Спасибо за совет, попробую так, как ты сказал.:) Еще раз спасибо!:) 14.06.01 23:08  
Автор: shot Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach