Редактор Delphi и пр., Delphi |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Редактор Delphi и пр., Delphi |
2.04.2007 - 15:57
Сообщение
#1
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Я сейчас осваиваю Дельфу...
Скажите мне пжта, почему даже простая форма с парой кнопок весит 300-400 кило? В книгах я ответа на этот вопрос не нашел. Почти все модули поотключал. Убавилось 20-30 кил. Что делать? Властью, данной мне свыше (админами то бишь ), разделяю тему про Delphi на два потока. Fallcom Сообщение отредактировал Fallcom - 6.04.2007 - 22:33 |
|
|
3.04.2007 - 10:53
Сообщение
#2
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
EGORR
Это нормальное явление. У тебя не просто форма, внутрь приложения сразу вкомпилируются обработчики событий и исключений винды, стандартные модули и т.д., поэтому приложение и получается сразу относительно большим. При последующем добавлении твоего кода приложение будет увеличиваться совсем незначительно. Для того, чтобы значительно уменьшить размер приложения, нужно запретить вкомпилировать в проект эти обработчики. В этом случае приложение получится маленькое, т.к. все эти вещи оно будет брать из стандартных дельфовских библиотек Vcl70.bpl и других, находящихся в папке Windows\System. Включается эта опция так: в меню Project\Options на вкладке Packages нужно включить внизу птичку Build with runtime packages. Тут же приводится список библиотек (*.bpl), которые дельфа НЕ БУДЕТ включать в твое приложение, а будет искать их снаружи. Соответственно, если это поле сделать пустым, то твое приложение будет опять под 300-400 кило. Как правило, достаточно включить основные: Vcl50;Vclbde50;Vcldb50;vcldbx50;vclsmp50;vclx50 Опять же, обрати внимание, что если ты напишешь там, например, vcl50, то тебе нужно будет рядом с приложением таскать еще и ее, помимо проекта, если на другой машине их не будет. Собственно, это не только в дельфе такая фигня, в VC хоть приложения изначально и маленькие, но они тоже юзают точно такие же библиотеки от майкрософта, точно так же лежащие по тому же пути. Единственная разница, что майкрософтовские бибиотеки с виндой распространяются, поэтому есть почти у всех. В общем, если у тебя будет целая куча разных приложений, то включай режим этих Packages-ов, и бери пару BPL-ок с собой. Если у тебя одно приложение - то не обращай внимания, дальше проект расти будет не так сильно. Если ты вообще для себя только делаешь - то вообще забей. |
|
|
3.04.2007 - 15:52
Сообщение
#3
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Fallcom, спасибо! Я понял.
Я по мере наступления тупизма ещё к тебе попристаю!... |
|
|
4.04.2007 - 08:54
Сообщение
#4
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Fallcom, хочу снова поприставать к тебе с детскими вопросами.
Дельфи я только начал осваивать. Все непривычно, непонятно... Спросить некого. Пробовал на программерских форумах свои вопросы спрашивать, и получал в ответ высокомерное "Фу!..." или совет читать книги. Но в книгах на все вопросы ответов не найдешь. Так что стану к тебе приставать насколько твоего терпения хватит... Скажи, пожалуйста, почему в Дельфийском редакторе кода так ужасно отображается текст. При выделении часть текста не отображается, Ctrl+c, Ctrl+v не работает. Режим замены... Я пробовал сделать настройки в пропертях, но помогло мало... Что-то можно предпринять? А то приходится писать в Notepad++, а потом вставлять. Это был вопрос номер 0. Теперь вопрос номер next. Я недавно для практики написял прогамульку которая вынимает из суммы с НДС сумму НДС и сумму без НДС. Она крайне проста, но надо же с чего-то начинать... Форма, комбобокс с числами от 1 до 99(выбор процентов НДС), Edit(ввод суммы), Button с процедурой вычисления, два Едита для отображения результата: сумма НДС и сумма без НДС. Все работает. Но захотелось мне избавить юзера от нудного копирования результата в буфер. Засунул под едиты с результатами два радиобаттона: копировать в буфер либо сумму НДС, либо сумму без НДС. Нашел процедуру Edit2.CopyToClipboard. Засунул её в БаттонОнКлик после всех отстальных. И удивлялся почему не работает. Потом дошло, что работает, но с выделенным текстом. Значит на иф привязывать к радиобаттонам ещё рано... По привычке LUA стал искать функцию Input.GetText или что-нибудь похожее. Не нашел... А вот и сам вопрос: как можно взять из Edit2 и Edit3 текст для того, чтобы поместить его потом в буфер? Для наглядности привожу код. Код unit new_nds; interface uses Windows, Messages, SysUtils, Variants, Classes, Controls, Forms, Dialogs, StdCtrls, ActnList; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; ComboBox1: TComboBox; Edit1: TEdit; Label3: TLabel; Button1: TButton; GroupBox1: TGroupBox; Label4: TLabel; Label5: TLabel; Edit2: TEdit; Edit3: TEdit; RadioButton1: TRadioButton; RadioButton2: TRadioButton; procedure Edit1Change(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Edit1Change(Sender: TObject); begin Edit3.Clear; Edit2.Clear; end; procedure TForm1.Button1Click(Sender: TObject); var yiy,traf,fh:String; begin try yiy:= ComboBox1.Text; traf:='1,'; fh:= traf + yiy; Edit3.text:= FloatToStr( StrToFloat(Edit1.Text) / StrToFloat(fh)); Edit3.text:=FloatToStr(Round(StrToFloat(Edit3.text)*exp(2*ln(10)))/(exp(2*ln(10)))); Edit2.Text:=FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit3.Text)); except MessageDlg('Ошибка ввода данных!', mtError, [mbOk], 0); Edit1.Clear; end; end; end. Сама прога...=>http://specific-soft.by.ru/soft/nds/nds.rar Сообщение отредактировал EGORR - 4.04.2007 - 15:05 |
|
|
5.04.2007 - 09:18
Сообщение
#5
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Цитата А вот и сам вопрос: как можно взять из Edit2 и Edit3 текст для того, чтобы поместить его потом в буфер? Вопрос снимаю. Разобрался. |
|
|
5.04.2007 - 09:47
Сообщение
#6
|
|
Торговец чёрным деревом Группа: Админы Пользователь №: 3953 Сообщений: 21844 Регистрация: 1.08.2003 Из: Москва Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 55825 раз(а) |
EGORR, тут подумалось об обработке события OnChange (или как там его ... дльфу лет 5 уже не открывал) для твоих эдит-ов.
|
|
|
5.04.2007 - 12:30
Сообщение
#7
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Williams , спасибо.
Как я уже уже писял, проблему взятия содержимого из едитов с результатами(сумма НДС и сумма без НДС) в буфер я решил. Нашел в справке дельфийской функцию CopyAll (если склероз мне не изменяет) Дальше ... если один радиобаттон чекет, то Edit2CopyAll и Edit2CopyToБуфер , если другой, то Edit3CopyAll и Edit3CopyToБуфер. Fallcom, я сдуру все библиотеки смахнул с компиляции. Размер экзешника рухнул до 25 кило. Но на рабочем компе стал библиотеки канючить. М-м-м-дя... Дальше я хочу програмусю заставить логи вычислений в файл писать. Редактор кода совсем достал! Что можно сделать? Надоело в Бреду v.03 писать! Сообщение отредактировал EGORR - 5.04.2007 - 12:31 |
|
|
5.04.2007 - 21:32
Сообщение
#8
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
EGORR
Сорри, но что-то ты путаешь. В Дельфе редактор вообще один из самых лучших, что я знаю. Отображается и выделенный текст, и Ctrl+C, и Ctrl+V работает, и Ctrl+Ins, Shift+Ins соответственно. Возможно, что-то ты накосячил в настройках. Зайди в настройки (Tools-Editor Options) и посмотри, что у тебя там. Кстати, там присутствует комбобокс Editor SpeedSetting - это предустановки, советую выбрать Default keymapping (по умолчанию, кстати, должен быть). Если привык к VC - выбирай его. На второй вкладке (Source options), посмотри, чтобы был выбран Pascal и включен syntax highlight. Ну и вообще все опции просмотри. Нажмешь кнопку Help - и можешь про все галочки прочитать подробно. Но все должно работать по умолчанию, уж не знаю, что у тебя за проблемы. Вместо GetText тут все гораздо проще. Edit2.Text - это и есть твой текст, можешь делать с ним, что тебе угодно. Например, выводить его прямо так: Код ShowMessage(Edit2.Text); , объединять с другим: Код Edit2.Text := Edit2.Text + Edit1.Text; Никаких промежуточных переменных или выделений памяти не нужно. Прямо так. Вместо комбобокса с процентами от 1 до 100 используй SpinEdit на вкладке Samples (тот же Edit, только с кнопочками вверх-вниз для уменьшения значения). Там удобнее - можно задать MinValue, MaxValue, и получить значение в результате целочисленное. Извращенное выражение с логарифмом и экспонентой - это что, возведение в степень? Боже мой, FoxPro, как давно я тебя не вспоминал! Используй функцию Pow. Для того, чтобы поместить значение в буфер обмена, делай так: Код Clipboard.AsText := Edit1.Text С файлами все тоже очень просто. Вот тебе кусок программы: Код var f: TextFile; begin AssignFile(f, 'a.txt'); Rewrite(f); WriteLn(f, 'Расчет значения ' + Edit1.Text + ' и ' + Edit2.Text); WriteLn(f); // просто пустая строка вставляется CloseFile(f); end; Здесь создается новый файл постоянно, и в него чего-то пишется. Если хочешь, чтобы файл дописывался постоянно, а не обнулялся при каждом запуске, используй функцию Reset вместо Rewrite, только не забудь проверить, существует ли файл, то есть: Код var f: TextFile; begin AssignFile(f, 'a.txt'); if FileExists('a.txt') then Reset(f) else Rewrite(f); WriteLn(f, 'Расчет значения ' + Edit1.Text + ' и ' + Edit2.Text); WriteLn(f); // просто пустая строка вставляется CloseFile(f); end; Вот тебе пример кода программы во встроенном редакторе. Я выделил пару строк. Неужели это по-твоему ужасно? delphi.gif ( 8.08 килобайт ) Кол-во скачиваний: 190 P.S. Спрашивай - мне не сложно. P.P.S. Кстати, в эту тему можно прикреплять файлы - чтобы далеко не бегать по ссылкам. Сообщение отредактировал Fallcom - 5.04.2007 - 21:23 |
|
|
6.04.2007 - 09:02
Сообщение
#9
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
Fallcom, спасибо, сенсей!
Твои советы мне очень помогают. Пока я Дельфе не освоился, так что изящества в коде никакого нет... Но будет... Редактор кода пробовал настраивать. Попробую ещё... |
|
|
13.04.2007 - 12:34
Сообщение
#10
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
|
|
|
15.04.2007 - 10:09
Сообщение
#11
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
Не, не ругаюсь. Это таким странным образом произошло объединение тем. Почему-то перенесенные сообщения легли не вниз темы, а вверх. А мое первичное сообщение "сабж" ушло под низ. Не заметил. Не важно.
|
|
|
15.04.2007 - 21:17
Сообщение
#12
|
|
Свой человек Группа: Пользователи Пользователь №: 308 Сообщений: 552 Регистрация: 18.03.2003 Из: Планета Земля Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 38 раз(а) |
По поводу излишнего веса програмульки.
Я Setup сотворил, PPMDом сжал, и вроде ничего,...терпимо... |
|
|
16.04.2007 - 10:53
Сообщение
#13
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
Я ж говорю, можно использовать проги для сжатия EXE-шников дополнительно. Вроде AsPack и прочего. Хотя при нынешних размерах веников и флэшек все это не очень уж актуально. 300Кб - не вес.
|
|
|
Текстовая версия | Сейчас: 20.04.2024 - 01:53 |