Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пара вопросов и траблов [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];

в хелпе даже пример есть


Наверх

Титульная страница Поиск, карта сайта Написать письмо