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

Вниз

нужна идея   Найти похожие ветки 

 
kot andrei ©   (2005-10-20 11:07) [0]

вообщем задача в следующем:
пишу программу которая будет оставлять что-то вроде записок на рабочем столе (стики), понятно что таких программ уже множество, но ввиду того что я не профессионал хочется попробовать...
программа уже работает и выполняет свои основные функции... осталось только : при следующем запуске программы восстановить все не закрытые в прошлом сеансе работы записки, с теме же координатами на экране, с тем же текстом и т.д. единственное что приходит в голову это создавать для каждой записки инф-файл, а потом при запуске по ним восстанавливать записки...
но что-то плодить N-количество файлов не хочется, и есть предчуствие  что существуе гораздо более рациональный способ это сделать, но как в голову не приходит... может подскажите идею....

З.Ы. фух... если кому не лень читать ...


 
Fay ©   (2005-10-20 11:08) [1]

Почему-то способ сохранения координат не кажется мне основной проблемой...


 
Sandman29   (2005-10-20 11:10) [2]

Почему бы не хранить все записки в одном файле?


 
microlord   (2005-10-20 11:13) [3]

А зочем собсно inf файл? Или в дельфи презренном нетути сериализации? Сериализовать все объекты (если конечно имеется разделение представления и собсно докумето) в файл (предварительно указав количество объектов в нем), а потом десериализовать, делов то...


 
kot andrei ©   (2005-10-20 11:15) [4]


> Fay ©   (20.10.05 11:08) [1]  
> Почему-то способ сохранения координат не кажется мне основной
> проблемой...


да, если в инф файлах, то это не проблема...


> Sandman29   (20.10.05 11:10) [2]
> Почему бы не хранить все записки в одном файле?


почему то инф вообще использовать не хочется, не могу объяснить почему :)
расчитываю на какой-то другой способ... возможно зря...


 
kot andrei ©   (2005-10-20 11:26) [5]


> microlord   (20.10.05 11:13) [3]
> если конечно имеется разделение представления и собсно докумето


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


 
microlord   (2005-10-20 11:30) [6]

http://www.yandex.ru/yandsearch?text=model+view+controller


 
Eraser ©   (2005-10-20 11:37) [7]


> kot andrei ©   (20.10.05 11:07)

Советую стразу сделать конструкцию программы полностью объектно ориентированной, потом будет проще совершенствовать, да и практика как-никак...

Общая схема такая:
создаём класс - менеджер стиков, и класс - стик.
В менеджере стиков храним список стиков, и реализуем методы загрузки/сохранения стиков.
В классе-стике храним информацию о местоположении стика на экране и данные, короче всё что надо.

Сохранять список стиков проще всего в INI файл, но для практики советую сразу разобраться с XML.
Можно вообще в файл в виде рЕкордов сохранять.


 
kot andrei ©   (2005-10-20 11:40) [8]


> microlord   (20.10.05 11:30) [6]


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

но вопрос остается открытым, может еще варианты появятся :о)


 
kot andrei ©   (2005-10-20 11:44) [9]


> Eraser ©   (20.10.05 11:37) [7]


тоже большое спасибо, на счет практики вы правы - ее маловато... :(
а вот на счет сохранения в виде рЕкордов, можно немного теории?
заранее спасибо!


 
Eraser ©   (2005-10-20 11:51) [10]


> kot andrei ©   (20.10.05 11:44) [9]


> а вот на счет сохранения в виде рЕкордов, можно немного
> теории?

Не советую выбирать этот способ, т.к. очень не гибкий он.

А какая тут теория то?
Создаёшь запись (record) примерно вот так:
type
 TalxClientInfo = packed record
   sClientUID: string[100];
   sCompName: string[100];
   sIP: string[100];
   sGroup: string[100];
   sNick: string[100];
   sFirstName: string[100];
   sLastName: string[100];
   dtBirthDay: TDateTime;
   dtLastSess: TDateTime;
   dtLastUpdate: TDateTime;
   bBlackList: boolean;
   sPhoto: string[100];
   iStatus: integer;
   sPosition: string[100];
   sDepartment: string[100];
   sOfficePhone: string[100];
   sMobilePhone: string[100];
   sEmail: string[100];
   sWWW: string[100];
   sPostAddress: string[100];
   iGender: integer;
   bIsChannel: boolean;
   bSelf: boolean;
   bIsLoopBack: boolean;
 end;


А потом список таких записей сохраняешь в TFileStream.
Примерно так, только в цикле
fs.Write(NUID.ClientInfo, sizeof(TalxClientInfo));

Проблема в том, что эта запись является вложенной в объект к которому относиться, что запутывает код. + при изменении размера записи хотя бы на 1 байт, файлы, созданые на более старой версии читаться не будут.

Лучше для начала делай на INI файлах, хотя лучше на XML.


 
kot andrei ©   (2005-10-20 11:56) [11]


> Eraser ©   (20.10.05 11:51) [10]


ОК!
спасибо большое!
осталось только выбрать вариант и написать :о)


 
Skyle ©   (2005-10-20 12:03) [12]

Даёшь xml!!! ;-)


 
Труп Васи Доброго ©   (2005-10-20 14:33) [13]

А чего все ему так усиленно ХМеЛь подсовывают? Пусть ещё и в БД какой нибудь всё сохраняет. Тоже офигительно полезная практика.


 
Skyle ©   (2005-10-20 14:41) [14]

>  [13] Труп Васи Доброго ©  
А БД подсовывают в соседней ветке... Здесь лишнее ;-)


 
Antonn ©   (2005-10-20 15:31) [15]

kot andrei ©   (20.10.05 11:07)
когдато делал подобное... В общем так, хранил в ini, примерно в таком виде:
[NUM]
_num=15 //кол-во стиков
[stick1] // секция стиков [stick1], [stick2]...
x=10
y=10
...


как грузить:
var i,num:integer;
begin
num:=readinteger("num","_num",0);
for i:=0 to num-1 do begin
 form.left:=readinteger("stick"+inttostr(i+1),"x",0);
 form.top:=readinteger("stick"+inttostr(i+1),"y",0);
end;
end;


сохраняем:
var i:integer; _List:Tstrings;
begin
_List:=TStringlist.create;
try
_L.add("[NUM]");
// и тд, пробегаем все окна, работает быстрее, чем с ini:)
_L.savetofile();
finally
_List.free;
end;
end;


Немного упрощенно накидал, только чтобы идея понятна была:)



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

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

Наверх




Память: 0.51 MB
Время: 0.062 c
14-1130154592
Del_programmer
2005-10-24 15:49
2005.11.13
Другая жизнь...


2-1129965383
картограф
2005-10-22 11:16
2005.11.13
крестики-нолики


14-1129897610
X9
2005-10-21 16:26
2005.11.13
Глючит комп


3-1128317628
RUYurik
2005-10-03 09:33
2005.11.13
IBReplicator


2-1130268831
dibosh
2005-10-25 23:33
2005.11.13
бот