![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пара вопросов и траблов [D7, XP]
Black © (2009-06-01 15:44:00)Дамы и господа, пишу курсовой на Delphi тема простая для понимания - "Органайзер" столкнулся с некоторыми банальными и не очень трудностями. Помогите пожалуйста в решении пары траблов и как более опытные подскажите лучшие чем мои алгоритмы. Исходный код (правда в нем много мусора) прилагается.
Кратко о проекте: 4 формы. Основная форма, это TMonthCalendar и TMainMenu. Вторая форма это добавление события на дату.Третья - чтение события с даты (т.е при двойном щелчке на дате в MonthCalendar на основной форме). Четвертая - пока не активная (пытался сделать несколько событий на одну дату). Пятая(ну как же без сентиментализма) - "О программе" или хвала разработчикам
===
Трабл #1) Довольно странная ошибка - сохраняю событие в файл
reset(base);
write(base,c_t);
showmessage(inttostr(filepos(base)));
closefile(base);
close;
showmessage(inttostr(filepos(base))); - выдает мне текущую позицию указателя в файле, дык вот при каждом сохранении программа перезаписывает предыдущую запись т.к. указатель не сдвигается, хотя это должно происходить автоматически
--
На всякий случай - проверьте корректность чтения
i:=1;
assignfile(base,'base.dat');
reset(base);
while not (eof(base)) do
begin
read(base,c_t_b[i]);
i:=i+1;
end;
closefile(base);
Трабл #2)Сохранение выравнивания текста
1)Проверяю применены ли операции выравнивания посредством стандартных action'ов и присваиваю их выделенным под них элементам булево-массива в типе данных
if richeditAlignRight1.Checked=true then begin c_t.format[1]:=true; showmessage('Yes1') end;
if richeditAlignCenter1.Checked=true then begin c_t.format[2]:=true; showmessage('Yes2') end;
2)При Двойном щелчке на дате проверяю содержимое файла на операции выравнивания и определяю свойства объекта RichEdit1 на форме три
if c_t_b[j].format[1]=true then begin f3flags[1]:=true;//form3.RichEdit1.Alignment:=taRightJustify;
if c_t_b[j].format[2]=true then f3flags[2]:=true;//form3.RichEdit1.Alignment:=taCenter;
Как видите пробовал по разному, в том варианте который вы видите сейчас я присваиваю булева массиву который использую как флаг значения а на создание формы три вешаю присвоение выравнивания либо вариант два
if c_t_b[j].format[1]=true then Form3.RichEdit1.Alignment:=taRightJustify;
if c_t_b[j].format[2]=true then form3.RichEdit1.Alignment:=taCenter;
Вопрос по другим свойствам текста, почему операция
RichEdit1.font.Style:=fsbold;
Приводит к "[DCC Error] Unit1.pas(122): E2010 Incompatible types: 'TFontStyles' and 'TFontStyle'"
Как это предотвратить?
Если у кого-нибудь появится идея как можно написать (условиях уже написанного кода, т.е дописать) запись нескольких событий одного или разного типа на одну дату буду очень рад выслушать и принять к сведению.
Есть еще парочка вопросов и траблов, но их пока трогать не буду. Заранее благодарю
И. Павел (2009-06-01 15:51:00) [1]
> программа перезаписывает предыдущую запись т.к. указатель
> не сдвигается
Или открывайте файл для добавления (Append), или не выполняйте Reset перед каждым Write (открывайте файл только один раз, а потом записывайте), или переходите на нужное место в файле через seek.
clickmaker (2009-06-01 15:46:00) [2]> RichEdit1.font.Style:=fsbold;
> Приводит к "[DCC Error] Unit1.pas(122): E2010 Incompatible
> types: 'TFontStyles' and 'TFontStyle'"
> Как это предотвратить?
RichEdit1.font.Style:=[fsBold];
в хелпе даже пример есть