Вопросы новичка. Я раньеш писал на VB, сейчас перехожу на паскаль.
, Возникает много вопроссов.., не предлагайте мне читать учебники по так
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.37] |
|
|
Вопросы новичка. Я раньеш писал на VB, сейчас перехожу на паскаль.
, Возникает много вопроссов.., не предлагайте мне читать учебники по так
|
|
|
|
|
Вопросы новичка. Я раньеш писал на VB, сейчас перехожу на паскаль.
Возникает много вопросов.., не предлагайте мне читать учебники по таким вопросам, учебники у меня некоторые есть и сначала я гляну там, прежде чем задавать их. Встретился с простейшими проблемами, в VB не приходилось с ними сталкиваться. Начну с первого, дальше буду продолжать. Задача такова: нужно одно число разделить на другое Пытался я это в лазарусе сделать ![]() ![]() unit deng; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, Menus, ActnList; . . . . . . . . . var MForm: TMForm; inf: Text; outf: Text; u, v, w : string;//ansistring; p, m: string; code1, code2: integer; uu, vv, ww: integer; pp, mm : integer; vr: integer; implementation { TMForm } . . . . . . . . . procedure TMForm.Button3Click(Sender: TObject); begin u := Edit1.text; w := Edit3.text; Val(u, uu, code1 ); Val(w, ww, code2 ); vv := uu / ww; Str(vv, v); Edit2.text := v; end; . . . . . . . . . initialization {$I deng.lrs} end. Происходит ошибка. Мотивипует он это так: deng.pas(111,14) Hint: use DIV instead to get an integer result deng.pas(111,18) Hint: Type size mismatch, possible loss of data / range check error deng.pas(111,14) Error: Incompatible types: got "Extended" expected "LongInt" deng.pas(189) Fatal: There were 1 errors compiling module, stopping DIV - не подходит, т. к. необходимо расчитать с сотыми (до сотых) Добавлено Цитата simsergey @ Мотивипует Я имел ввиду мативирует |
|
Сообщ.
#2
,
|
|
|
|
В результате деления получается дробное число. Используй переменную приемник вещественного типа: real, double, extended...
и не забывай про деление на 0. |
|
Сообщ.
#3
,
|
|
|
|
Програмка простенькая (пока ее пишу для себя)
Сказать пользователю программы вот это нельзя Баланс: 200 рублей Кол-во дней: 30 дней В день: 6.666666666666667E+000 рублей Надо хотяб округлить до копеек... Например: 6.67 рублей |
|
Сообщ.
#4
,
|
|
|
|
Говорили же — Паскаль сначала изучите
…Str(X:Width:Decimals; var S:String) |
|
Сообщ.
#5
,
|
|
|
|
Цитата ZenIA @ Str(X:Width:Decimals; var S:String) Приведи пример пожалуйста... |
|
Сообщ.
#6
,
|
|
|
|
Цитата simsergey @ не предлагайте мне читать учебники по таким вопросам, учебники у меня некоторые есть и сначала я гляну там, прежде чем задавать их. Добавлено намек ясен? |
|
Сообщ.
#7
,
|
|
|
|
Значит, так...
Цитата e-moe @ намек ясен? Ясен... Не нашел я этого в учебниках.Цитата ZenIA @ Str(X:Width:Decimals; var S:String) Я догадался, о чем речь... В моем случаи это наверно выглядит так ![]() ![]() u := Edit1.text; w := Edit3.text; Val(u, uu, code1 ); Val(w, ww, code2 ); vv := uu / ww; Str(vv:1:2, v); Edit2.text := v; Переменные vv, uu, ww - double. Да, так все работает нормально... |
|
Сообщ.
#8
,
|
|
|
|
Цитата simsergey @ Не нашел я этого в учебниках. Значит, читай другие учебники + Руководство по языку |
|
Сообщ.
#9
,
|
|
|
|
Цитата volvo877 @ Значит, читай другие учебники + Руководство по языку Спасибо, гляну А как выполнить действие при выходе из проги? Добавлено Цитата volvo877 @ Чтобы получить ответ, нужно задать правильный вопрос. Но чтобы правильно задать вопрос, нужно знать большую часть ответа... Но если знаешь ответ, зачем задавать вопросс? |
|
Сообщ.
#10
,
|
|
|
|
???
Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit. Перед этим при необходимости освободить динамическую память, контексты дисплея, уничтожить объекты Виндовс, прервать сеанс связи и т.д. u := Edit1.text; w := Edit3.text; Val(u, uu, code1 ); Val(w, ww, code2 ); vv := uu / ww; Str(vv:1:2, v); Edit2.text := v; А для рубликов циферок не маловато ли??? Ps. А хелпов у Вас что нету? |
|
Сообщ.
#11
,
|
|
|
|
Цитата ZenIA @ А для рубликов циферок не маловато ли??? На самом деле я про гривни... Цитата ZenIA @ у Вас Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то... Добавлено Цитата ZenIA @ Аварийно процедурой Halt, а корректно путем завершения главной процедуры (код между устанвками begin и end. — она в тексте стоит последняя) или выхода из нее командой Exit. При нажатии на красный крестик (справо вверху) необходим выполнить пару действи, перед закрытием программы |
|
Сообщ.
#12
,
|
|
|
|
Лазарусом не пользуюсь, но по аналогии с Дельфи должно быть нечто вроде OnCloseQuery формы?
|
|
Сообщ.
#13
,
|
|
|
|
Или, на пример, если не поддерживаются события, перехватив сообщение wm_close главного окна
![]() ![]() type TForm1 = class(TForm) procedure wmClose(var I);message wm_close;{Обработчик сообщения wm_close} end; procedure TForm1.wmClose(var I); begin {Щас чего-то натворю !!!!!} MessageBox(Handle,'Программа закрывается!','До свидания',0); Close; end; end. Завершение программы зависит от объектной и операционной систем… Ну поскольку, похоже, работаете с объектной системой Дельфи под Винду (говорил же, берите сразу Дельфу) — значит надо разрывать главный цикл программы ОДНИМ ИЗ ПРИВЕДЕННЫХ СПОСОБОВ: 1. Закрыть приложение Application.Terminate; 2. Разрушить главное окно DestroyWindow(Handle) или Close 3. Послать всем окнам сообщение wm_close путем вызова PostQuitMessage(0) или, что менее принято, закрыв процесс функциями ExitProcess или TerminateProcess. Цитата Пожалуйста, давайте перейдем на ТЫ, а то мне не по себе как-то... Обращайтесь ко мне как хотите, а у меня вежливая форма обращения — это профессиональная привычка. |
|
Сообщ.
#14
,
|
|
|
|
Ладно, будем подумать...
Добавлено Цитата ZenIA @ MessageBox(Handle,'Программа закрывается!','До свидания',0); А как MessageBox будет в лазарусе... |
|
Сообщ.
#15
,
|
|
|
|
Наверное, пока вопрос закрыт.
Буду искать другой компилятор и учить другой язык. Спасибо за ВАШИ ответы... Добавлено Цитата ZenIA @ говорил же, берите сразу Дельфу Надо будет поискать! |
|
Сообщ.
#16
,
|
|
|
|
Цитата simsergey @ Ладно, будем подумать... Добавлено Цитата ZenIA @ MessageBox(Handle,'Программа закрывается!','До свидания',0); А как MessageBox будет в лазарусе... Как и на Васе, MessageBox это функция WinAPI (есть какой-то аналог и в библиотеках, но он никаких новых возможностей не дает и ее, обычно не используют). Delphi — диалект Паскаля (поддерживает синтаксис и обладает дополнительніми возможностями) и ее использование не освобождает от знания этого языка. Кстати она объемная по размеры и, наверно, придется покупать ее на диске. Кроме того у бесплатных кроссплатформенных компиляторов тоже есть свои преимущества |
|
Сообщ.
#17
,
|
|
|
|
Цитата ZenIA @ Кстати она объемная по размеры и, наверно, придется покупать ее на диске. Значит буду искать на дисках. А может быть перейду на другой язык. |
|
Сообщ.
#18
,
|
|
|
|
Цитата simsergey @ А может быть перейду на другой язык. Лучше всего с таким вот настроем и с подобным стилем обучения перейти на другую специальность... Любой язык требует изучения, и при использовании любого языка никто не отменяет необходимости думать. Я не знаю, что ты Цитата simsergey @ , но если действительно что-то писал, то должен знать о наличии контекстной помощи или в крайнем случае - подробного описания языка/библиотек (заметь, с примерами), которыми ты за все время не соизволил воспользоваться ни разу (ибо если бы пользовался, то вопрос о MessageBox не возник бы, так же как и вопрос о примере использования Str)...раньеш писал на VB Цитата simsergey @ Но если знаешь ответ, зачем задавать вопросс? Тебе бы не помешало немного внимательности: Цитата "Знать большую часть" - еще не значит "знать все", не так ли? Но чтобы правильно задать вопрос, нужно знать большую часть ответа... |
|
Сообщ.
#19
,
|
|
|
|
Цитата volvo877 @ "Знать большую часть" - еще не значит "знать все", не так ли? Да, тут ты прав! Цитата volvo877 @ Лучше всего с таким вот настроем и с подобным стилем обучения перейти на другую специальность... Любой язык требует изучения, и при использовании любого языка никто не отменяет необходимости думать. Если нет стабильно работающего компилятора, то хоть знай язык, хоть незнай его, всеравно ничего не напишиш. Цитата volvo877 @ Я не знаю, что ты раньеш писал на VB Лучше задай вопрос "Почему VB?". Я начинал с турбопаскаля, но имея 16-ти битный компилятор, небыло жилания что-то писать (если понадобится и виндовскую форму не применишь). Под рукой лежал VB, с красивым описанием. Вот и начал изучать его. Потом понял, что он не профессиональный язык, да и на других платформах на нем ничего не напишиш. Увидив FPC, для всех платформ, конечно радость в душе появилась. Дальше посоветовали Лазарус для создания виндовских форм и объектов на них. Да, штука интересная... Но работает не совсем стабильно... Остается только Делфи. И учебники для него есть. Цитата volvo877 @ Лучше всего с таким вот настроем Своим сообщение ты мне надежду небольшую вселил. И всетаки, мне не так необходимо использовать виндовские окна, ну там по-мелочи (лейблы, кнопки, эдиты ...). Былоб очень хороше, еслиб можно было эти окна писать на FPC. А есть просто генераторы кода для него, с визуальным созданием формы? Добавлено P. S. В FPC примеры я смотрел, примеры не такие уже и простые и примера создания эдитов, лейблов, кнопок - нет. |
|
Сообщ.
#20
,
|
|
|
|
Цитата simsergey @ Увидив FPC, для всех платформ, конечно радость в душе появилась. ![]() Дальше посоветовали Лазарус для создания виндовских форм и объектов на них. Да, штука интересная... Но работает не совсем стабильно... Остается только Делфи. И учебники для него есть. да ну? в чем же заключается эта нестабильность(или ты скачал версию с девелоперской ветки)? |
|
Сообщ.
#21
,
|
|
|
|
Цитата e-moe @ с девелоперской ветки Это что такое? |
|
Сообщ.
#22
,
|
|
|
|
Цитата simsergey @ Цитата (e-moe @ Вчера, 18:33) Цитата с девелоперской ветки Это что такое? Это версия, которая в данный момент находится в разработке. Т.е. следующая версия программы - это она, но доделанная до конца. |
|
Сообщ.
#23
,
|
|
|
|
у меня 0.9.22 бета
|
|
Сообщ.
#24
,
|
|
|
|
Цитата simsergey @ 0.9.22 бета Последняя стабильная. Так что же у тебя там не работало? |
|
Сообщ.
#25
,
|
|
|
|
Визникают такие проблемы:
1. После открытия проекта, первый написанный оператор или процедура, или функция вызывает ошибку (мол, незнаю я такого оператора). 2. Частенько после компиляции он пишет, что компилятор неисправен, и сохраните данные, закройте программу и надейтесь на лучшее (это он такое сообщение выбрасывает). Дальше возникали тоже некоторые проблемы, как вспомню допишу. Добавлено Цитата simsergey @ Былоб очень хороше, еслиб можно было эти окна писать на FPC. А есть просто генераторы кода для него, с визуальным созданием формы? Знает ли кто-нить ответ на этот вопрос? |
|
Сообщ.
#26
,
|
|
|
|
Цитата simsergey @ А есть просто генераторы кода для него, с визуальным созданием формы? если знаешь WinAPI то вот: VISG: visual and smart GUI builder. 1я твоя проблему у меня ни разу не встречалась, ну а 2я сильно зависит от того кода, что ты пытался компилировать... |
|
Сообщ.
#27
,
|
|
|
|
Цитата e-moe @ VISG: visual and smart GUI builder. Спасибо, изучу продукт... |
|
Сообщ.
#28
,
|
|
|
|
Подскажите, а как в делфи убрать пробелы в строке с начала и с канца.
|
|
Сообщ.
#29
,
|
|
|
|
Так же, как и в FPC:
![]() ![]() uses SysUtils; ... s := Trim(s); |
|
Сообщ.
#30
,
|
|
|
|
и еще, а как сделать текст вместе со смайлами?
|
|
Сообщ.
#31
,
|
|
|
|
Цитата simsergey @ а как сделать текст вместе со смайлами? А вот это уже спрашивай в разделе Delphi: Общие вопросы. |
|
Сообщ.
#32
,
|
|
|
|
Спасибо!
|
|
Сообщ.
#33
,
|
|
|
|