Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизДинамический набор данных + коректно сохранить + загрузить ! Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c