Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 842
от 18.06.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 466, Экспертов: 80
В номере:Вопросов: 3, Ответов: 10


Вопрос № 91081: Здраствуйте экперты. У меня такой вопрос, скажем каким то образом изменился размер формы (.width, .height). Можно ли както узнать какой размер был до изменения, не сохраняя эти значения в переменные?...
Вопрос № 91165: Добрый вечер я к Вам с таким вопросом!! Нужно найти матрицу обратную данной воспользовавшись методом Гаусса... Кто может помогите написать... Или от куда можно скачать исходник Спасибо!...
Вопрос № 91200: Простите за наглость чайника(при обращении к мужам)!!! Пробую освоить Delphi 7 Осваивая самостоятельно язык, при написании всё сделал как написано в книге но Delphi 7 выдаёт ошибку в строке ( cbGrayed : Label1.Caption := 'затемнить') ...

Вопрос № 91.081
Здраствуйте экперты.
У меня такой вопрос, скажем каким то образом изменился размер формы (.width, .height). Можно ли както узнать какой размер был до изменения, не сохраняя эти значения в переменные?
Отправлен: 12.06.2007, 14:34
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Кэр Лаэда
Здравствуйте, Иван Ивановввв!

Начальные размеры формы нигде не хранятся, думаю придется вам все таки хранить их в переменных
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 12.06.2007, 14:57
Оценка за ответ: 5
Комментарий оценки:
Вы мне не помогли, но теперь я не буду искать впустую...

Отвечает: PGM
Здравствуйте, Иван Ивановввв!

Возможно, вам поможет перехват сообщения WM_WINDOWPOSCHANGING - оно вызывается перед попыткой изменения размеров.

procedure WMWinPosChanging(var M : TMessage); message WM_WINDOWPOSCHANGING;

Параметры (новые значения) извлекаются следующим образом
p := PWINDOWPOS(M.lParam); где p.x - Left, p.y - Top, p.cx - Width, p.cy - Height.

Старые значения вам в этот момент известны как свойства формы (Width, Height).
Ответ отправил: PGM (статус: 8-ой класс)
Ответ отправлен: 13.06.2007, 12:34
Оценка за ответ: 5
Комментарий оценки:
спасибо, да именно это мне и нужно.


Вопрос № 91.165
Добрый вечер я к Вам с таким вопросом!!
Нужно найти матрицу обратную данной воспользовавшись методом Гаусса...
Кто может помогите написать...
Или от куда можно скачать исходник
Спасибо!
Отправлен: 13.06.2007, 01:21
Вопрос задал: Колдун Андрей павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, Колдун Андрей павлович!

Вот привожу алгоритм, который лично разрабатывал в качестве примера для студентов физ-мата.

Для нахождения обратной матрицы необходимо:
1) найти детерминант D (определитель) исходной матрицы, который находим методом Гаусса
2) Далее находим матрицу алгебраических дополнений и транспонируем ее A~;
3) Находим саму обратную матрицу: A-1 = (1/D)*A~

Код приложения смотрите в приложении (он же продублирован в прикрепленном файле) - внимательно читайте комментарии в листинге и обращайте внимание на название переменных (матрицы рекомендую вводить с использованием компонента TStringGrid).

Вот вспомагательные процедуры которые используются при расчетах:
{ Процедура для сортировки матрицы и привода ее к ступенчатому виду
row - ряд с которого начинается сортировка
zn - знак детерминанта (true=-1, false=1)
dt - следует ли далее продолжать вычисления (false значит det=0)
}

procedure Sorted(row,razm: word; var x: TMatrix; var zn, dt: boolean);
var j,k,nm:word;
t:real;
begin nm:=0; dt:=true;
if (x[row,row]=0) then {если 0 стоит на главной диагонили пытаемся его убрать}
begin
for j:=row+1 to razm do
if x[j,row]<>0 {проверка всех элементов которые стоят по 0}
then begin
for k:=0 to razm do
begin
t:=x[row,k]; x[row,k]:=x[j,k]; x[j,k]:=t;
end;
zn:=not zn; {при перестановке рядков(столбцов) знак
детерминанта меняется на противоположный}
break;
end
else inc(nm);
if nm=razm-row+1 {если 0 убрать не получилось то детерминант=0}
then begin dt:=false;{break;}end;
end;
end;

{----Процедура проеобразования матрицы методом Гаусса
row - ряд с которого начинаются преобразования
first - первый элемент первого ряда матрицы----}
procedure GS(row,razm: word; first: real; var x: TMatrix);
var i,j:word;
gl:real;
begin
for i:=row+1 to razm do
begin
gl:=x[i,row];
if gl<>0 then
for j:=row to razm do
x[i,j]:=x[i,j]+(-gl/first)*x[row,j];
end;
end;

{----Процедура нахождения минора M[i,j] ----}
procedure Mimor(mi,mj:word; x:TMatrix; var y:TMatrix);
var i,j,yi,yj:word;
begin yi:=0;
for i:=0 to n-1 do
if i<>mi then
begin
yj:=0;
for j:=0 to n-1 do
if j<>mj then
begin
y[yi,yj]:=x[i,j];inc(yj);
end;
inc(yi);
end;
end;


Good Luck!!!

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 13.06.2007, 02:08
Оценка за ответ: 5
Комментарий оценки:
Все отлично
Большое спасибо


Вопрос № 91.200
Простите за наглость чайника(при обращении к мужам)!!!
Пробую освоить Delphi 7
Осваивая самостоятельно язык, при написании всё сделал как написано в книге но Delphi 7 выдаёт ошибку в строке
( cbGrayed : Label1.Caption := 'затемнить')
Если вас не затруднит обьясните, подробно, наделанному программисту в чем дело!!!!

Приложение:

Отправлен: 13.06.2007, 10:31
Вопрос задал: Иван Буравой (статус: Посетитель)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин А.А.
Здравствуйте, Иван Буравой!
Вы забыли поставить разделитель команд - точку с запятой (";"). В результате должно получиться:
case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить'
Тогда всё заработает.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин А.А. (статус: Академик)
Россия, Тула
WWW: Программирование на DELPHI
----
Ответ отправлен: 13.06.2007, 10:35

Отвечает: Troyan
Здравствуйте, Иван Буравой!
Все просто, нужно поставить точку с запятой, которую вы забыли или сделать так, как в приложении

Приложение:

---------
Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!

Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 13.06.2007, 10:42

Отвечает: Чрнавин Е. А.
Здравствуйте, Иван Буравой!
В конце кождой строки необходимо ставить - ;
Вот так:
cbUnchecked : Label1.Caption := 'выключить';
и последующие две строки также.
Ответ отправил: Чрнавин Е. А. (статус: 2-ой класс)
Ответ отправлен: 13.06.2007, 10:53

Отвечает: Архангельский Андрей Германович
Здравствуйте, Иван Буравой!

Case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить';
end;

Точки с запятой нужно ставить всегда, не уповая на умолчания
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 13.06.2007, 10:58

Отвечает: Esi
Здравствуйте, Иван Буравой!

case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить'
cbGrayed : Label1.Caption := 'затемнить'
cbChecked : Label1.Caption := 'включить'
end
end;
Думаю, что после присвоения caption не запятых.
Ответ отправил: Esi (статус: 2-ой класс)
Ответ отправлен: 13.06.2007, 18:42

Отвечает: Шевченко Дмитрий
Здравствуйте, Иван Буравой!
тут тоже необходимо ставить ";"

case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить';
end;

P.S. Искренне желаю успехов в освоении Delphi!;)
Ответ отправил: Шевченко Дмитрий (статус: 1-ый класс)
Ответ отправлен: 14.06.2007, 00:16

Отвечает: Sattar
Здравствуйте, Иван Буравой!

!!!
Ошибка в procedure TMyForm.CheckBox1Click(Sender: TObject);
Исправленый код:

[Дубль - спустя трое суток, после предыдущего!!!][Edited by Gh0stik]

Приложение:

---------
Programming is like sex, one mistake and you have to support it for the rest of your life.

Ответ отправил: Sattar (статус: 4-ый класс)
Ответ отправлен: 16.06.2007, 18:52


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное