![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
TarasBer |
![]()
Сообщение
#41
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Я так понимаю, речь идёт об этой строке, но изображение всё равно не сжимается, а часть его остается где-то за пределами....
Да, об этой. Она именно выводит то, что было в Img на форму. То, что там что-то за пределами - ну так что было в Img, то и вывелось. Можешь написать для контроля Img.SvaeToFile() и сравнить. > При нажатии кнопки первым делом удаляем старое, и строим новое. Что-то я не увидел, чтобы ты создавал новое при нажатии кнопки. У тебя, видимо полное непонимание происходящего. TBitmap.Create - это создание изображения для работы, если этого не сделать, то с ним ничего делать нельзя. Эта процедура соответствует доставанию нового листа бумаги из стола. TBitmap.Free - это не стереть изображение ластиком с листа! Это выкинуть лист в мусорку, потому что тебе он больше не нужен. После Free делать с изображением ничего нельзя, поэтому его лучше пропиши в OnDestroy. Всякие там рисования - это не создание нового листа, это рисование на текущем. А для того, чтобы стереть изображение ластиком, делай так:
А потом, перед рисованием, не забудь обратно написать Pen.Style := psSolid; (а потом он линии рисовать не будет). -------------------- |
RussoTuristo |
![]()
Сообщение
#42
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вроде доработал все, изображение строится, сжимается/растягивается, но как-то иногда очень криво, что-то не прорисовывается, когда изображение большое - иногда целые линии не видны. Увеличил размер кисти, стало лучше, даже нормально, но это, наверное, не правильный способ.... Можно как-то по-другому это реализовать - улучшить качество?
И еще вопрос, добавил панель для расчетов, поместил Editы, туда ввожу значения, но при расчете вылетает ошибка: "EConverError with message "" is not a vali floating point value". Незаполненных Editов нету, странно... Хотя типы должны совпадать: Qn, Vlin,r:real; Сообщение отредактировано: RussoTuristo - 12.02.2011 17:08 |
-TarasBer- |
![]()
Сообщение
#43
|
Гость ![]() |
> о при расчете вылетает ошибка: "EConverError with message "" is not a vali floating point value".
Это не значит, что он не заполнен. Это значит, что его содержимое - не число. Кстати, в качестве разделителя нужна именно запятая (кажется). > что-то не прорисовывается, когда изображение большое - иногда целые линии не видны Функцию сжатия писал Микрософт. Видать, хреново написал. У меня тоже при сжатии вместо оттенков серого просто пропадают линии, даже если принудительно задать режим сжатия halftone . > Можно как-то по-другому это реализовать - улучшить качество? Да. Изначально задать размер буфера, совпадающий с размером выводимого участко и при рисовании в буфер использовать только относительные координаты, никаких точных чисел. То есть делать так: w := Img.Width; h := Img.Height; ... LineTo(round(w * 0.1), round(h * 0.34)); (для первой координаты через w, для второй через h). |
RussoTuristo |
![]()
Сообщение
#44
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
В поля text у Edit3, Edit4 и Edit7 введены значения 1380, 10 и 10 соответственно без запятых и без пробелов, поле для вывода - пустое.
Вообще когда добавил 2-ю панель она как не родная))) С первой панели из такого же Edita считывается, а эта панель вообще мёртвая почему-то.... Хотя они по сути идентичные. |
-TarasBer- |
![]()
Сообщение
#45
|
Гость ![]() |
> В поля text у Edit3, Edit4 и Edit7
Ты хоть сам помнишь, что они означают? Возьми редактор свойств объектов и исправь им значение поля Name на нормальное. Да, пустое поле тоже вызывает ошибку при попытке перевести в число. Кстати, я в таких случаях делаю примерно так:
|
RussoTuristo |
![]()
Сообщение
#46
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
http://delphi-manual.ru/edit.php А что с text не так? Я всегда так делал, да и в учебниках так написано.
Спасибо за функцию, думаю пригодится в будущем, только прибавить к ней немного кода на запрет значений, кроме числовых и ","... и вместо caption, наверное, text, а-то что-то не сходится.... Procedure Init; Даже так не работает, когда вероятность попадания чего-то ненужного исключена. |
volvo |
![]()
Сообщение
#47
|
Гость ![]() |
Значит, где-то в обработчиках чего-то лишнего понавешал. На пустом проекте прекрасно отработала процедура Init. Прикрепляй свой проект целиком (только не надо EXE-шники и все временные файлы пихать, ладно? Скомпилировать я и сам могу, меня исходники интересуют)
|
RussoTuristo |
![]()
Сообщение
#48
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот проект без ЕХЕшников:
Заранее спасибо. Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#49
|
Гость ![]() |
OMG...
![]() А ничего, что Edit3 и Form1.Edit3 (и так далее) - это разные вещи? Убери напрочь этот свой "страшный Var" (у тебя ж сейчас все переменные, описанные там - NIL-ы, не инициализированные они), и сделай Init методом TForm1, тогда все будут всё видеть... TForm1 = class(TForm) |
RussoTuristo |
![]()
Сообщение
#50
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо, уверен был, что там косяк, но не знал куда пихнуть метод Init в заголовочную часть....
|
RussoTuristo |
![]()
Сообщение
#51
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Снова здравствуйте, в процессе работы программы мне необходимо вычислить производную функции, наткнулся на форуме на "Процедурные типы и переменные". Возник вопрос: Для вычисления производной не обязательно писать объёмного кода, есть встроенные решения или я не так понял эту статью?
|
RussoTuristo |
![]()
Сообщение
#52
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите, пожалуйста с кое-чем:
Рассматривается определенный физический процесс, с течением времени изменяются 2 величины, в упрощенном виде выглядит так: G=a(y+b) -dy/dt=G/c+d; a,b,c,d известны, G и y - искомые величины. Я с математикой дружу плохо, поэтому хотелось бы услышать совет знающих людей... Необходимо ли вообще вычислять производную или нет? Глупый вопрос, но серьёзно меня тормозит... С первым уравнением всё понятно, а вот втором - dy/dt и даже не знаю как к этому подступиться... Мои рассуждения: 1)Подставляем первое уравнение во второе и получаем: -dy/dt=a(y+b)/c+d 2)Вычисляем по формуле производную и получаем: y=a/c 3)Подставляем у в первую формулу Что-то больно легко получается, но правильно ли это? Вообще производная ли это как таковая? Знакомых математиков особо нет, помогите, пожалуйста. |
-TarasBer- |
![]()
Сообщение
#53
|
Гость ![]() |
> 2)Вычисляем по формуле производную и получаем: y=a/c
Как ты это сделал? |
RussoTuristo |
![]()
Сообщение
#54
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
По формуле производной, хотя уже сомнения закрались:
-dy/dt=2(y+3)/5+7 -dy/dt=2y/5+(2/5+7) -dy/dt=2y/5 По формуле получаем -2/5 Или выражение -dy/dt=2y/5 не равно -(2y/5)'? |
-TarasBer- |
![]()
Сообщение
#55
|
Гость ![]() |
> -dy/dt=2y/5+(2/5+7)
> -dy/dt=2y/5 А чё, 2/5+7 уже считается нулевым? > -dy/dt=2y/5 > По формуле получаем -2/5 По какой формуле?! Как можно из левой части сократить d/dt, а из правой y? Ты в каком классе учишься? Если у вас не было курса дифуров, то я тебе это решу, если был, то читай конспекты. |
RussoTuristo |
![]()
Сообщение
#56
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Школу давно закончил, но с математикой всегда были проблемы...
Пытаюсь разобраться, но чёто везде примеры легкие и без этих примудростей с d/dt, окунаюсь в тёмный лес... Если это плёвое дело - помоги, пожалуйста... |
TarasBer |
![]()
Сообщение
#57
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Пытаюсь разобраться, но чёто везде примеры легкие и без этих примудростей с d/dt
ДИФУР без этих "прИмудростей"? Такие вообще бывают? Ты примеры из какой главы смотрел? Надо по дифурам смотреть, а не просто по алгебраическим уравнениям. -------------------- |
RussoTuristo |
![]()
Сообщение
#58
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый вечер! Снова нужна помощь форума, помогите, пожалуйста:
У меня есть форма, на которой расположены StringGrid, куча Editов и еще компоненты. Как можно сделать сохранение введенных значений, чтобы одновременно, в один файл сохранялись StringGrid и Editы? Наткнулся в интернете на чьи-то комментарии, попытался переделать, но что-то у меня ничего путного не выходит...
Этот код у меня не получается адаптировать к своей программе, да и сохранение здесь идет в несколько заранее заданных файлов, моя программа, кстати, ниже есть... Может есть другие способы или это кто-то знает как подключить? Сообщение отредактировано: RussoTuristo - 1.05.2011 20:18 Прикрепленные файлы ![]() |
IUnknown |
![]()
Сообщение
#59
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Проходи в одной процедуре по всем компонентам, и пиши все в один файл:
procedure TForm1.SaveToFile(const FileName: TFileName);А потом из него и читай. В обратном порядке. |
RussoTuristo |
![]()
Сообщение
#60
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 80 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо. сохранение и загрузка происходит, только вот программа содержит очень много сложных расчетов с большой точностью и числами, после нескольки расчетов вылетает ошибка о нехватке памяти.
Знаю, что переменные можно очищать с помощью dispose(); Но переменных в памяти очень много, можно ли каким-либо образом очистить всю память, занимаемую программой? И еще, подскажите, пожалуйста, что делаю не так: Есть TChart1, содержащий Series1, есть StringGrid, в который выводятся данные расчета, мне необходимо сделать график зависимости между несколькими величинами из таблицы: procedure Tf_main.Grafiki; Почему-то график пустует, хотя ко времени вызова StrinGrid уже заполняется и в Edit почему-то пишется значение 0. Это может быть из-за того, что числа в колонках большие: 5 знаков до запятой и 5 после? Или я просто неправильно пишу код процедуры? |
![]() ![]() |
![]() |
Текстовая версия | 7.07.2025 14:05 |