Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-16874
SKing
2003-02-18 10:33
2003.03.06
Подключение к MS Access?


3-16941
АндрейБ
2003-02-16 13:24
2003.03.06
Многомерное представление данных в отчете


3-16889
Наташа
2003-02-13 13:55
2003.03.06
Импорт из Excel


1-17037
Programist
2003-02-25 10:49
2003.03.06
Траблы с поиском


1-17086
sapsan
2003-02-22 22:31
2003.03.06
многопоточная обработка использующая один програмный код ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский