Часовой пояс: UTC + 3 часа




Куратор(ы):   Lord_of_Darkness   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 10 из 50<  1 ... 7  8  9  10  11  12  13 ... 50  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Убедительная просьба ко всем, кто выкладывает исходники:
1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы

Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!

Прежде чем задать вопрос, воспользуйтесь учебником


Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь

Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36



Партнер
 

Member
Статус: Не в сети
Регистрация: 04.04.2005
Откуда: Екатеринбург
В исходниках одной программы увидел, что настройки сделаны через классы, решил сделать подобным образом,
но почему-то не хочет работать.
Вот как я сделеал:
Код:
unit ProgramSettings;

interface

uses  SysUtils,Forms,Windows,Classes,JvSimpleXml;

type
   TProgrammSettings = class;
      TSettingsForms = class;
         TSettingsMain = class;

   TProgrammSettings = class(TObject)
   protected
      XML:TJvSimpleXml;
      FRoot:TJvSimpleXmlElem;
   public
      Forms:TSettingsForms;// настройки главного окна
      procedure LoadSettings;// загружаем настройки
   end;

   TSettingsForms = class(TProgrammSettings)
   public
      Main:TSettingsMain;
   end;   

   TSettingsMain = class(TSettingsForms)
   public
      Top: Integer;
      Left: Integer;
      Width: Integer;
      Height: Integer;
      OnTop: Boolean;
      StatusBar: Boolean;
   end;

implementation

   procedure TProgrammSettings.LoadSettings;
   var CurItem: TJvSimpleXmlElem;
      function GetCurItem(const ItemName: string): TJvSimpleXmlElem;
      begin
         Result := CurItem.Items.ItemNamed[ItemName];
         if Result = nil then
         begin
            Result := CurItem.Items.Add(ItemName);
            Result.Parent := CurItem;
         end;
      end;
   begin
      XML:=TJvSimpleXml.Create(nil);
      FRoot:=TJvSimpleXmlElem.Create(nil);
      FRoot:=XML.Root;
      XML.LoadFromString('<?xml version="1.0" encoding="windows-1251"?><WERTEX Version="strVersion" Date="08.12.2005"><Settings><Forms><Main Top="100" Left="100" Width="730" Height="500" /></Forms></Settings></WERTEX>');
      CurItem:=FRoot;
      CurItem:=GetCurItem('Settings');
      CurItem:=GetCurItem('Forms');
      CurItem:=GetCurItem('Main');
      with CurItem do
      begin
         Forms.Main.Top:=CurItem.Properties.IntValue('Top',0);
         Forms.Main.Left:=Properties.IntValue('Left',100);
         Forms.Main.Width:=Properties.IntValue('Width',740);
         Forms.Main.Height:=Properties.IntValue('Height',540);
      end;
   end;
end.

Дак вот, возникает следующая ошибка: EAccessViolation. Как я понял это возникает из-за того, что классы TSettingsForms и TSettingsMain не создаютя.
Каким образом можно исправит эту ошибку ?


Последний раз редактировалось W[E]RTEX 10.12.2005 18:53, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
W[E]RTEX для начала использовать табуляцию при написании программ, написано отвратительно. Второе, что нужно сделать - почитать книги по ООП. Ну и третье - создавать экземпляр класса, перед его использованием.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 04.04.2005
Откуда: Екатеринбург
Daemon , извини за безобразие.
Daemon писал(а):
создавать экземпляр класса, перед его использованием.
, каким образом, просто книжки не смогли помочь.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
W[E]RTEX было бы еще видно, где ты из объявляешь и пользуешь, а так создание класса:
Код:
var
   SF: TSettingsForms
.
.
.
begin
  SF:=TSettingsForms.Create;

И я несовсем понимаю, зачем ради пары переменных создавать класс? Это только расход лишней памяти, проще их в структуру засунуть. А писал выше преведенный код, явно какой-то любитель Java, мол все - объект :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 04.04.2005
Откуда: Екатеринбург
Daemon
переменных будет больше, т.к на основе этих классов я хочу создать настройки для программы.
Daemon писал(а):
Это только расход лишней памяти, проще их в структуру засунуть
, это в смысле записи чтоли?

Объявляю так:
Код:
var
Settings: TProgrammSettings;
....
// а потом загружаю туда настройки и использую примерно так:

Form1.top:=Settings.Forms.Main.Top;
// и т.д.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
W[E]RTEX
Цитата:
это в смысле записи чтоли?
Да.
Цитата:
Объявляю так:
А создаешь ли?

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 04.04.2005
Откуда: Екатеринбург
все, разобрался.
просто написал в конструкторе каждого класса, чтобы он следующий делал.


 

Member
Статус: Не в сети
Регистрация: 17.04.2005
Каким образом в паскале можно возвести число в степень, отличную от 2?? Например e в степени (a+b)


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
eldarovich88
Цитата:
Каким образом в паскале можно возвести число в степень, отличную от 2?? Например e в степени (a+b)

Все до жути просто! Вспоминаем св-ва логарифмов:
a^b=exp(b*ln(a))
можно использовать логарифм с любым основанием, но тогда вместо e надо возводить в степень соответствующее основанию число.
Используя эту зависимость можно возвести число в любую (даже дробную и отрицательную) степень, а т.ж. извлечь из него корень любой степени (что по сути тоже является возведением в степень, к примеру квадратный корень - это степень 0.5). Тут есть единственное ограничение - число, возводимое в степень (а) не может быть равно 0, но это легко обойти, используя if :)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 21.10.2003
Откуда: Брест
Фото: 47
у паскаля ведь погрешность при расченах Экспоненты...

_________________
А ещё недавно ждали AMD Steamroller на AM3+


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Для целых степеней:
Код:
function IntPow(num:real; power:integer):real;
var
   i: integer;
   tmp: real;
begin
   tmp:=1;
   if power>0 then
   begin
      for i:=1 to power do
         tmp:=tmp*num;     
   end else if power<0 then
   begin
      for i:=1 to power do
         tmp:=tmp*num;   
      tmp:=1/tmp;
   end

   IntPow:=tmp;
end;


для любых:

Код:
function AnyPow(num, power : real):real;
var
   i: integer;
   tmp: real;
begin
   tmp:=1;
   if num<>0 then
   begin
     tmp:=exp(power*ln(num));
   end
   else tmp:=0;
   AnyPow:=tmp;
end;


А так 7.12345^4.12345 до 7-го знака правильно считает, если с маткадом сравнивать.
Расчет в маткаде с помощью встроенного возведения в степень (x^y):
Код:
3281.1504817173685

По моей формуле
Код:
3281.1504817173693

В паскале по моей формуле
Код:
3281.1504817000000

В дельфе
Код:
3281,1504817173700

Вполне приличная точность, правда смотря для каких задач...

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Lord_of_Darkness
Цитата:
Вполне приличная точность, правда смотря для каких задач...
Стандарту все равно не отвечает :-)

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon писал(а):
Стандарту все равно не отвечает

Стандарт понятие ой как растяжимое если применять его к таким вычислениям :)


 

Member
Статус: Не в сети
Регистрация: 17.04.2005
Lord_of_Darkness
спасибо, принял к сведению :)


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Daemon Тут как всегда проблема точность/скорость. Можно написать что-то подобное проге 9^99 с расчетом всех 95 знаков (писал давно, на ПС и на сайте у меня валяется), но к примеру эта прога считала 99^9999 примерно 10-15сек., это очень долго.
Если интересует данный вопрос - есть статья на delphiworld.narod.ru название - что-то про возведение в степень (поиск)
где-то тут. В любом случае там много интересного, правда для делфи (+asm), но и для паскаля покатит.
Добавлено спустя 6 минут, 12 секунд
Ray Adams Вот и я о чем. Непонятно какой именно стандарт имел ввиду Daemon
eldarovich88 Всегда пожалуйста :)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Lord_of_Darkness какой, какой, IEEE есесно, иль не программер ты такого не знать? :-)

_________________
Ку ку


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Daemon ok, есть другие предложения? Можно еще через степень 2-ки сделать и через логарифм по основанию 2. Точность и скорость должны возрасти, зато сложность функции (для написания) тоже повысится. Думаю в данном случае предложенный мной вариант вполне подойдет.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 17.04.2005
Подскажите, плз, как мне нарисовать звезды в небе(графический режим).
Знаю, что с помощью функции random но не знаю как реализовать


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
eldarovich88 Ну типа инициализировать то графический режим можешь?
А рисуется просто PutPixel(Random(разрешение_по_горизонтали),Random(разрешение_по_вертикали),_цвет_)
и все это в цикле, длиной в зависимости от количества точек.
Если сложно, отпишись, накидаю сырец :)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 17.04.2005
Lord_of_Darkness
у меня такой ролик, значит: синее небо, на котором собираюсь зделать звезды, земля, на которой стоит чувак и его дом. Летит комета, оставляя за собой красно-желтый шлейф и врезается в дом. Осталось добавить звезды и анимацию чувака.
Добавлено спустя 1 час, 34 минуты, 6 секунд
Сделал звезды, спасибо за подсказку!
Добавлено спустя 1 минуту, 23 секунды
А, еще вопрос, как выводить изображение в разных режимах последовательно? Например сначала normalput, ролик закончился, потом заного начался, но уже xorput т.д.?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 10 из 50<  1 ... 7  8  9  10  11  12  13 ... 50  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan