информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Что-то я запутался.... по поводу сохранения массива в файл (желательно Builder) 14.06.01 01:29  Число просмотров: 1174
Автор: + <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.
<programming>
[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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach