Форум: "Потрепаться";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Внизнужна идея Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c