Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Хранение и работа с данными без использования...   Найти похожие ветки 

 
Кудесник ©   (2004-03-07 01:57) [0]

... BDE, ini и типизированных файлов. Поделитесь опытом... плз


 
Кудесник ©   (2004-03-07 02:09) [1]

Если можно, то с описанием задачи в общем виде, для которой это делалось.


 
Германн ©   (2004-03-07 02:24) [2]

Имхо, вопрос поставлен слишком "общо".
Да, было время, я хранил и работал с данными без вышеупомянутых. Я просто записывал все на бумаге авторучкой, а потом читал написанное глазами. :-)
И "описание задачи" тут тебе не поможет. Дело было не в задаче, а в возможности ее решения. Компа не было никакого.


 
Плохиш   (2004-03-07 02:27) [3]

Да ему про ADO хочется услышать :-) Денег-то на книжку не хватает и пираты с хелпом на...(обманули) :-(


 
Германн ©   (2004-03-07 02:40) [4]

2 Плохиш   (07.03.04 02:27) [3]
Если бы в вопросе звучало только "без использования BDE", я бы согласился. Но объединение "BDE, ini и типизированных файлов" - мне не понятно.

2 Кудесник ©   (07.03.04 01:57)
Да, забыл упомянуть еще один способ хранения данных.
Нетипизированный файл. Очень часто имеет расширение "cfg". Предназначен для хранения специфических настроек "чего-то". Предполагает заранее установленную структуру хранящихся данных.
Боюсь, однако, что и это не то, что нужно для вас :(( см. {2]


 
Кудесник ©   (2004-03-07 02:41) [5]

to Германн ©   (07.03.04 02:24)
Тут Делфи или бумажная контора?

>> Плохиш   (07.03.04 02:27)

ADO мне не надо. Охота узнать сабж.


 
Fay ©   (2004-03-07 02:47) [6]

По сабжу.
CreateFile
WriteFile(Ex)
ReadFile(Ex)

А вАщЕ-то Вам следует расшифровать понятие "работа с данными".


 
Германн ©   (2004-03-07 03:12) [7]

Самое смешное - это то, что тут и не Делфи, и не бумажная контора.

Если есть "Охота узнать сабж." без разъяснений сабжа, читай Fay ©   (07.03.04 02:47) [6]
Вот абсолютно полный ответ на сабж! (Кроме последней строки. Там еще раз указано на непонятность сабжа.


 
Алхимик ©   (2004-03-07 03:38) [8]

Вы хотите поставить нас в тупик своими вопросами?
Таки мы поставим Вас в тупик своими ответами...


 
ZyXEL   (2004-03-07 11:08) [9]

Хранение и работа с данными без использования... компьютера; а лучше - без использования самих данных; абстракция в чистом виде!
См. [3] или [6] и не выпендривайся!


 
Anatoly Podgoretsky ©   (2004-03-07 11:25) [10]

Кудес не бывает


 
Кудесник ©   (2004-03-07 13:02) [11]

Задачи? Ну, например:

Небольшие справочники: без комментариев.
Деревья: TreeView.
Игры: список победителей.

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

Была идея писать всё в виде непрерывного двоичного кода, переводимого в символы. Например, 3 поля:
первое - длина второго поля, одинаковая для всех, например, 5, что даёт длину второго поля от 0 до 31 бита.
второе - длина данных в байтах (8 бит), продолжая пример - это даст от 0 до 2147483647 символов.
третье - сами данные.

Т.к. поля переменной длииы и пишутся как целое, то это даст сдвиг, что приведёт к нечитабельности содержимого файла и проблематичность его редактирования.

Но это так... лишь сырая мысль... хотелось бы узнать, что делают в подобных случаях мастаки.


 
Cobalt ©   (2004-03-08 01:14) [12]

Текстовый файл - вот панацея!
;)
Хотя...Это тоже типизированный файл (почти)
Во! XML - и текстовый файл, и не типизированный.


 
Германн ©   (2004-03-08 01:15) [13]

Хм.
>Т.к. поля переменной длииы и пишутся как целое, то это даст >сдвиг, что приведёт к нечитабельности содержимого файла и >проблематичность его редактирования.

Проблематичность редактирования чем? Блокнотом?
А НЕХ-редакторы?


 
Knight ©   (2004-03-08 02:20) [14]


> [13] Германн ©   (08.03.04 01:15)
> Хм.
> Проблематичность редактирования чем? Блокнотом?
> А НЕХ-редакторы?

Возьми строку символов, переведи в бинарный код припиши спереди 3 единицы, а сзади допиши до кратного восьми нулями, а потом назад в строку... думаю, если человек только думает, что он Cool-хацкер, то HEX ему не поможет.


 
Knight ©   (2004-03-08 02:21) [15]

Если я правильно понял...


 
Германн ©   (2004-03-08 02:36) [16]

2 Knight ©   (08.03.04 02:20) [14]
А Вы уверены в своем ответе?
Или Вы его неправильно адресовали?


 
Knight ©   (2004-03-08 18:13) [17]

>> [16] Германн ©   (08.03.04 02:36)
> 2 Knight ©   (08.03.04 02:20) [14]
> Или Вы его неправильно адресовали?
В смысле, неправильно?


> Проблематичность редактирования чем? Блокнотом?
> А НЕХ-редакторы?

Твой вопрос? Я дал ответ...

По вышеприведённому методу с некоторой доработкой (необходимо, чтобы начало данных не попало на начало байта, если это происходит, то надо добавлять ко второму полю 0 впереди) мой ник в Hex выглядит так:
11 92 DB 9A 59 DA 1D

Где в бинарном виде:
Первое поле - 00100 длина=5 бит; Значение=4 (бита)
Второе поле - 0110  длина=4 бита (увеличенное на 1); Значение=6 (байт)
Третье поле - 010010110110111001101001011001110110100001110100 = "Knight"

Строку не привожу, т.к. часть символов тут едва ли пройдёт.

Вроде, нигде не напутал :)

Т.е. против Cool-хацкеров, которые могут только пользоваться готовыми кряками, редактировать открытый текст и писать вири при помощи конструкторов и ничего не понимают в Hex-коде... этого вполне достаточно.


 
Германн ©   (2004-03-09 04:15) [18]

2 Knight ©   (08.03.04 18:13) [17]

Теперь после ветки о никах, я тебя понял.

Имхо, используй все, что придумаешь сам.
Но можешь и использовать какие-нибудь стандартные алгоритмы криптографии. Их много, и они довольно продвинутые, так, что защищают не только от Cool-хацкеров. А что тебе мешает использовать оные?

Однако, причем же тут сабж? Ни BDE, ни ini, ни типизированные файлы - не противоречат криптографии!


 
Verg ©   (2004-03-09 09:17) [19]

FIFO в файле.
Т.е. нужно было подобие кольцевого буфера, но не в памяти, а на диске, чтобы даже при "аварийном завершении" (типа шнурок из розетки выдернули) приложения данные в этом буфере сохранялись с максимальной вероятностью.
Класс этот был назван гордым именем "Циклическая база данных" :))
год рождения - 1992. Еще на Турбо Паскале.
Сейчас этот прототип выглядит так:
type
 PBase = ^TBase;
 TBase = class
   Opened : boolean;
   BFile : File;
   HeaderSize : longint;
   BegPos, EndPos, ItemSize, MaxSize : Longint;
   constructor Create(BFileName:string;  AItemSize, AMaxSize:longint);
   destructor destroy; override;
   function  Open:boolean;
   procedure CloseBase;
   function  PosInBase(BPos:longint):boolean;
   function  InsertItem(var Item):word;
   function  InsertItems(var ITems; ItemCount:longint):word;
   function  GetItem(var Item; IPos:longint):word;  virtual;
   function  GetItemCnt(var Item; IPos:Longint; Cnt:longint):word;  virtual;
   function  DeleteItem(Count : Longint):word; virtual;
   function  PutItem(var Item; IPos:longint):word; virtual;
   procedure FindPos(BPos:Longint);
   function  GetBegPos :longint;
   function  GetEndPos :longint;
   function  GetFree   :longint;
   function  GetCount  :longint;
   function  GetBaseSpace:longint;
   function  GetMaxBaseSpace:longint;
   procedure TruncateBase;
   procedure StoreHeader; virtual;
   procedure ReStoreHeader; virtual;
 end;

 PCashBase = ^TCashBase;
 TCashBase = class(TBase)
   StartLoc, EndLoc,
   CashSize:longint;
   Cash : pointer;
   destructor Destroy; override;
   function  GetItem(var Item; IPos:longint):word; virtual;
   function  GetItemCnt(var Item; IPos:Longint; Cnt:longint):word; virtual;
   function  DeleteItem(Count : Longint):word; virtual;
   function  PutItem(var Item; IPos:longint):word; virtual;
   procedure OpenCash(Asize:shortint);
   procedure CloseCash;
private
   function Pos2Loc(BPos : Longint):longint;
   function Loc2Pos(BLoc : Longint):longint;
   function Loc2Index(BLoc:longint):longint;
   function  PosInCash(BPos: longint):boolean;
   function  MoveCash(IPos:longint):word;
   procedure ResetCash;
 end;

 TCBuffer = class
   CurrPos : longint;
   Base : TBase;
   destructor Destroy; override;
 public
   CurrRecord : pointer;
   constructor Create(ABase : TBase);
   function Next:boolean;
   function Prior:boolean;
   function  FindIndex(Idx : int64):boolean;
   procedure Last;
   procedure First;
   function IsNull: boolean;
   function CurrentIndex:Int64; virtual; abstract;
 end;


 
REA ©   (2004-03-09 10:24) [20]

В свое время некий француз поставил мне задачу сделать иерархическую базу данных на VC. Ну сделал, что-то, но работать с этим в большом проекте все-равно нельзя. Ни тебе SQL (хотя некое подобие я тоже сделал), ни тебе транзакций и т.п. Короче в "потрепаться".



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
6-1074234534
noname
2004-01-16 09:28
2004.03.28
Как максимально быстро передать поток по сети?


14-1078158048
}|{yk
2004-03-01 19:20
2004.03.28
Какими браузерами пользуетесь кроме IE?


14-1077981348
TButton
2004-02-28 18:15
2004.03.28
TServerSocket+TClientSocket


14-1078062719
Mox Fulder
2004-02-29 16:51
2004.03.28
Снова математика... Помогите!!!!


14-1078218503
Cobalt
2004-03-02 12:08
2004.03.28
Интересный проект - неинтересный проект