Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение информации, Вопрос ко всем 
:(
    Опции темы
xvr
Дата 13.5.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(SABROG @ 13.5.2008,  08:45)
А как затестить рабочесть этой технологии стандартными средствами винды, т.е. блокнот там, консоль. Чтобы не пришлось писать на WinApi ?

Открываешь консоль (cmd.exe) и набираешь:
Код

echo some text > test:tst
sort < test:tst

В папке после этого остается файл test нулевой длинны, в котором есть поток tst с текстом some test
Так же можно в FAR'е нажать Shift-F4, в открывшемся имени файла для редактирования набрать test:tst и написать туда что хочешь. Смотреть аналогично (снова через Shift-F4)

PM MAIL   Вверх
SABROG
Дата 13.5.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Спс. Заметил, что огромное количество графических файлов имеют подобные потоки. Походу дела эскизы. А некоторые файлы имеют Zone.Identifier:
Код

C:\>sort < c:\Downloads\000901.gif:Zone.Identifier
[ZoneTransfer]
ZoneId=3


В общем неплохой способ запихнуть туда какую-нибудь контрольную сумму файла или комментарий. Если копировать файл по винту, то инфа тоже копируется, но если файл сжать любым пакером, то инфа теряется. Ну и из минусов - пашет только на NTFSе.

Вот еще интересная штука:

Код

C:\>sort < c:\winnt\win.ini:s1
2400


Это сообщение отредактировал(а) SABROG - 13.5.2008, 12:46


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 13.5.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата

Запись:
Код

AnsiString data=...;
fwrite(data.c_str(),1,data.size(),file);

Чтение:
Код

fseek(file,0,SEEK_END);
int fsize=ftell(file);
fseek(file,0,SEEK_SET);
AnsiString data=AnsiString::StringOfChar(' ',fsize);
fread(data.c_str(),1,fsize,file);


Это мне не подходит :(
Я использую структуру:
Код

struct mList
{
AnsiString str1;
AnsiString str2;
int a1;
int a2;
///...
}

Записываю и считываю так:
Код

// записываю

strcpy(sett.info,Edit6->Text.c_str());
sett.time=Edit5->Text.ToInt();
sett.n1=Edit7->Text.ToInt();
sett.n2=Edit8->Text.ToInt();
sett.col=list.size();
FILE* f=fopen("myfile.rer","wb");
if(!f) return;
fwrite(&sett,sizeof(mSettings),1,f);
int n=list.size();
for(int i=0;i<n;i++)
        fwrite(&list[i],sizeof(mList),1,f);
fclose(f);

// читаю

FILE* f=fopen("myfile.rer","rb");
if(!f) return;

fread(&sett,sizeof(mSettings),1,f);

Edit6->Text=sett.info;
Edit5->Text=sett.time;
Edit7->Text=sett.n1;
Edit8->Text=sett.n2;

for(int i=0;i<sett.col;i++)
{
        mList temp;

        fread(&temp,sizeof(mList),1,f);
        list.push_back(temp);
        ListBox1->Items->Add(temp.name);
}
fclose(f);

// здесь sett - это тоже структура
//     list - вектор структур mList

Числа записываются и считываются нормально. А вот строки не хотят.

Это сообщение отредактировал(а) artsb - 13.5.2008, 16:27


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
xvr
Дата 13.5.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(artsb @ 13.5.2008,  16:21)
Это мне не подходит :(
Я использую структуру:
Код

struct mList
{
AnsiString str1;
AnsiString str2;
int a1;
int a2;
///...
}

  •  Структуру, содержащую вложенные классы (а AnsiString именно таковым и является) нельзя записывать целиком как образ памяти, нужно писать по полям.
  •  fopen("myfile.rer",...); замени на fopen("myfile.rer:data",...); и будет тебе счастье  smile

PM MAIL   Вверх
artsb
Дата 13.5.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(xvr @  13.5.2008,  18:00 Найти цитируемый пост)
 fopen("myfile.rer",...); замени на fopen("myfile.rer:data",...);

а что это изменит?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
xvr
Дата 13.5.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(artsb @ 13.5.2008,  21:51)
Цитата(xvr @  13.5.2008,  18:00 Найти цитируемый пост)
 fopen("myfile.rer",...); замени на fopen("myfile.rer:data",...);

а что это изменит?

Данные будут записываться в stream с именем data, сам файл myfile.rer при этом будет выглядеть пустым

PM MAIL   Вверх
SABROG
Дата 13.5.2008, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Цитата(artsb @ 13.5.2008,  21:51)
Цитата(xvr @  13.5.2008,  18:00 Найти цитируемый пост)
 fopen("myfile.rer",...); замени на fopen("myfile.rer:data",...);

а что это изменит?

Это ответ на твой вопрос о том, чтобы юзеры шаловливыми ручками не меняли настройки программы. При желании можно даже файла не создавать, обычная директорию тоже имеет альтернативные потоки. Только при этой технологии твоя программа больше нигде не будет корректно работать кроме как на файловой системе NTFS.

Имхо лучше шифрануть файлик паролем юзера, расшифровываться будет на-лету. Если пароль не верный - не верно расшифруется и настройки будут битыми, вернее будет мусор.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 13.5.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



А. Понятно. Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.