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

Вниз

Динамический набор данных + коректно сохранить + загрузить !   Найти похожие ветки 

 
ofp ©   (2003-02-20 23:49) [0]

Значит , допустим мне нужно ввести пользователя ( хотябы его имя) , кол. пользователей может быть любое , и теперь каждый пользователь имеет свой телефон , адрес и какие то события при этом как и телефоны , так и адреса с событиями могут быть разными по количеству ( у кого то может быть 2 телефон , 4 адреса и т.д)
Как мне организовать , это так что бы это не было статичиским массивом , потому что сразу выростит большой объем ( и если представить , что будет один пользоватьль) , а чтоб еще были динамическими и сами телефоны , адреса и события на каждого пользователя , и можно было все это сохранять и загружать !!!!


ПОМОГИТЕ ОЧЕНЬ НАДО !!!!
Заранее БОЛЬШОЕ СПАСИБО !


 
Johnmen ©   (2003-02-21 00:29) [1]

Создавай базу данных...


 
Palladin ©   (2003-02-21 01:33) [2]

Для начала в Access...

ЗЫ: блин, неужели следующим будет "А как?"


 
ofp ©   (2003-02-21 02:46) [3]

От БД , Я отказался потому что сильно большой объем драйверов .... Все кто заинтересован помочь пишите мне на mail : ofp@online.com.ua , я вышлю исходники , как я пытался это реализовать .
В двух словах , Я сумел сделать , все что написал сверху , но есть одна БОЛЬШАЯ ПРОБЛЕМА , при загрузке данных , возникают ошибки , я решал эту задачу несколькоми путями : динамические массивы и TMemoryStream... Просто если есть возможность , помощь или хотя бы совет , напишите мне на мыло ....
А Palladin прав , Я спрошу , а как ,реализовать такой алгоритм , используя динамические массивы или что ? ( только не надо напоминать про BDE ) , если меня интресовала , такого рода БД , я не обратился бы за помощью в этот форум ...


 
Palladin ©   (2003-02-21 06:48) [4]

если не нравится BDE используй для доступа к данным ADO, компоненты ADO есть на любом компе с офисом, тот же самый Jet (для Accessa), если уж и ADO чем то не угодит, то предлагаю пошарится в инете и найти библиотеки для прямой работы с DBF (та же самая работа с файлами без каких либо драйверов, правда и без SQL)

вообще не понимаю проблеммы с БД.


 
ofp ©   (2003-02-22 15:11) [5]

ВОТ ЭТА СТРУКТУРА КАК МНЕ ЕЕ КОРЕКТНО СОХРАНИТЬ И ЗАГРУЗИТЬ ???

TTelephone = record
Number : integer;
Description : string;
end;

TExempleRec = record
NameUser : string;
Description :string; //длинная строка
Arr : array of TTelephone; //динамический массив
end;

TUsers = record
Users : array of TExempleRec;
{
разные описании
}
end;


ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО !!!!


 
Anatoly P   (2003-02-22 15:51) [6]

Я такое решал через TFileStream и динамич. массив, кстати здесь подсказали. Можно еще и картинки записывать кроме String и т. д.


 
Guerrillero ©   (2003-02-22 16:50) [7]

Пачеко,Тейксейра
Delphi 5
Руководство разработчика
том.1, глава 12
Привер класса - наследника TFileStream ( что-то наподобие БД)


 
ofp ©   (2003-02-22 19:03) [8]

А на примере , кто нибудь может показать как сохранить Tusers ?
Заранее СПАСИБО !


 
ofp ©   (2003-02-23 11:29) [9]

Кто нибудь сможет сохранить и загрузить такую структуру Tusers ?


 
Palladin ©   (2003-02-23 12:34) [10]


procedure SaveTel(p_Stream:TFileStream;const p_Tel:TTelephone);
var
_tmp:integer;
begin
p_Stream.WriteBuffer(p_Tel.Number,sizeof(p_Tel.Number));
_tmp:=length(p_Tel.description);
p_Stream.WriteBuffer(_tmp,sizeof(_tmp));
p_Stream.WriteBuffer(p_Tel.Description[1],_tmp);
end;

procedure LoadTel(p_Stream:TFileStream;var rp_Tel:TTelephone);
var
_tmp:integer;
begin
p_Stream.ReadBuffer(rp_Tel.Number,sizeof(rp_Tel.Number));
p_Stream.ReadBuffer(_tmp,sizeof(_tmp));
SetLength(rp_Tel.Description,_tmp);
p_Stream.ReadBuffer(rp_Tel.Description[1],_tmp);
end;

procedure SaveExemple(p_Stream:TFileStream;const p_Exemple:TExempleRec);
var
i:integer;
begin
p_Stream.WriteBuffer(p_Exemple.NameUser,100);
i:=length(p_Exemple.Description);
p_Stream.WriteBuffer(i,sizeof(i));
p_Stream.WriteBuffer(p_Exemple.Description[1],i);
i:=high(p_Exemple.Arr)+1;
p_Stream.WriteBuffer(i,sizeof(i));
for i:=0 to high(p_Exemple.Arr) do SaveTel(p_Stream,p_Exemple.Arr[i]);
end;

procedure LoadExemple(p_Stream:TFileStream;var rp_Exemple:TExempleRec);
var
_tmp,
i:integer;
begin
p_Stream.ReadBuffer(rp_Exemple.NameUser,100);
p_Stream.ReadBuffer(_tmp,sizeof(_tmp));
setlength(rp_Exemple.Description,_tmp);
p_Stream.ReadBuffer(rp_Exemple.Description[1],_tmp);
p_Stream.ReadBuffer(_tmp,sizeof(_tmp));
SetLength(rp_Exemple.Arr,_tmp);
for i:=0 to _tmp-1 do LoadTel(p_Stream,rp_Exemple.Arr[i]);
end;

procedure SaveUsers(p_Stream:TFileStream;const p_Users:TUsers);
var
i:integer;
begin
p_stream.WriteBuffer(p_users.разные описании,length(p_users.разные описании));
i:=high(p_users.users)+1;
p_Stream.WriteBuffer(i,sizeof(i));
for i:=0 to high(p_Users.Users) do SaveExemple(p_Stream,p_Users.Users[i]);
end;

procedure LoadUsers(p_Stream:TFileStream;var rp_Users:TUsers);
var
_tmp,
i:integer;
begin
p_stream.ReadBuffer(p_users.разные описании,length(p_users.разные описании));
p_Stream.ReadBuffer(_tmp,sizeof(_tmp));
SetLength(rp_Users.Users,_tmp);
for i:=0 to _tmp-1 do LoadExemple(p_Stream,rp_Users.Users[i]);
end;


не тестировал



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
3-16864
Толян
2003-02-18 09:38
2003.03.06
Индексация.


7-17410
kalishenko stas
2002-12-18 12:24
2003.03.06
Word


1-17003
Артём В.
2003-02-24 23:25
2003.03.06
Нужна поддержка скинов


1-16996
Shc
2003-02-21 19:31
2003.03.06
Комбинация клавиш на вставку


14-17309
LameroZZ
2003-02-14 23:57
2003.03.06
!!!!! ini-файлы & реестр !!!!!