Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.035 c
3-1128056183
ShotGun
2005-09-30 08:56
2005.11.13
Кто знает как можно вставить в DBGrid колонку с CheckBox?


2-1129725970
Dinny
2005-10-19 16:46
2005.11.13
Редактирование индексированных таблиц


1-1129897332
2Wish
2005-10-21 16:22
2005.11.13
Движение мыши в PaintBox


2-1130228738
Ma4To
2005-10-25 12:25
2005.11.13
Компонент аля "Календарь" в Outlook e


2-1129442715
serg128
2005-10-16 10:05
2005.11.13
Как заменить первую маленькую букву на большую?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский