Главная страница
    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.59 MB
Время: 0.064 c
1-17195
Programist21
2003-02-24 14:35
2003.03.06
Копирование :-Е


1-17021
Антон.
2003-02-25 09:14
2003.03.06
Delphi 5 и Delphi 7


3-16865
Diesel_83
2003-02-17 14:20
2003.03.06
работа с *.mdb


3-16917
Makhanev A.S.
2003-02-15 01:14
2003.03.06
Сортировка...


1-17014
levova
2003-02-24 15:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский