Помагите новичкам
Заранее благодарень за ответ:)
Kak vseqda ne moqu s pervoqo raza,reshit zadachu.
mojet kak to pomojete?Ya peremennix ne davno chital,i pomoemu prosil vas o nix zadachu dat.
Problema v tom chto ne moqu generirovat code v bashke (men kajetsya chto et iz toqo chto ya novichok) kak vi schitayete tak i dayte podskazku
Код, особенно на первых порах, лучше не в голове укладывать, а сначала на бумажке представлять в виде блок-схем, диаграмм, ну и т.п. - в чём удобнее, а потом просто описывать "нарисованное" командами. Это на первых порах наиболее эффективный и простой способ.
А по поводу оптимизации... Самый простой способ. Нарисуй на бумажке алгоритм, который хочешь оптимизировать. Посмотри, какие одинаковые действия в нём выполняются и какие из них можно объединить. Какие переменные у тебя используются, и какие из них могут использоваться дважды, а какие можно вообще выкинуть. Где линейный алгоритм можно заменить на циклы. Потом нарисуй новый алгоритм и запрограммируй его.
Знать так,
UBound и LBound - это границы массивов элементов (такие эе свойства есть и у масссивов данных).
UBound - верхняя граница,
LBound - нижняя граница,
Count - количестиво
Тоесть, если ц тебя 4 элемента CbUnload, с индексами от 0 до 3, то
CbUnload.LBound = 0
CbUnload.UBound = 3
CbUnload.Count = 4
Тоесть CbUnload(CbUnload.LBound) это в данном случае всё равно, что CbUnload(0), просто ссылка не по фиксированному индексу, а по вычисляемому гораздо универсальнее.
Aaaa,ponyatno
подсказка: переменную в процедуре нужно объявить специальным способом, чтобы она сохраняла свое значение.
A fuksiya peremennix ne zakluchayetsya v etom?.Peremenniye ne sushestvuyut chto bi chtoto soxranyat?I chto vi imeyete v vvidu koqda qovarite spesialnim sposobom?Vi naverxu qovarili chto nado ispolzovat ne qlobalniy (ostayotsya Private i Static)
A fuksiya peremennix ne zakluchayetsya v etom?.Peremenniye ne sushestvuyut chto bi chtoto soxranyat?I chto vi imeyete v vvidu koqda qovarite spesialnim sposobom?Vi naverxu qovarili chto nado ispolzovat ne qlobalniy (ostayotsya Private i Static)
Все так мыслишь...
я подразумеваю под обычным объявлением
Dim i as Integer
Тебе осталось выбрать как объявить переменную - Private или Static.
насчет переменных...
Создай 1 кнопку и 1 объект для вывода текста (можно static, например). в обработчике нажатия кнопки используй одну локальную переменную. при нажатии на кнопку в объекте выводи количество нажатий на кнопку. ОБЯЗАТЕЛЬНОЕ УСЛОВИЕ: глобальные переменные использовать нельзя.
Znayete obyevit peremennix ya uje znayu,no problema v tom chto ne moqu pisat kod kotoriy budet fiksirovat kajdiy raz kliki(click).dlya odnoqo raza moqu, no dalshe ne moqu,i eto mne kajetsya ot toqo chto ya ne poka ne chital etot chast kniqi,netli sdes standartnix veshey?esli nado chto nado pisat ot sebya ,toqda budu prodoljat dumat,mojet poluchitsya,v prinsipe u menya shas ekzameni ne moqu udelyat na eti veshi mnoqo vremeni,no starayus zanimatsya etim toje;)
Znayete obyevit peremennix ya uje znayu,no problema v tom chto ne moqu pisat kod kotoriy budet fiksirovat kajdiy raz kliki(click).dlya odnoqo raza moqu, no dalshe ne moqu,i eto mne kajetsya ot toqo chto ya ne poka ne chital etot chast kniqi,netli sdes standartnix veshey?esli nado chto nado pisat ot sebya ,toqda budu prodoljat dumat,mojet poluchitsya,v prinsipe u menya shas ekzameni ne moqu udelyat na eti veshi mnoqo vremeni,no starayus zanimatsya etim toje;)
как понять, не можешь фиксировать клик?
В VB6.0 для создания прцедуры клика по кнопке достаточно на форме, когда ты выкладываешь кнопку на неё, 2 раза кликнуть по кнопке и у тебя откроется код "пустой" процедуры клика, который будет вызываться событием клика при работающей программе. Можно так же следующим образом его отискать:
В коде формы, на которой лежит кнопка в левом верхнем углу окна с колом есть комбобоксик. Кликаешь по нему - у тебя открывается список объектов формы. Выбираешь в нём твою кнопку. Потом открываешь правый комбобоксик - в нём будет перечень событиё твоего объекта. Выбираешь нитересующее событие - попадаешь в шаблон кода для него...
А вот если тебе нужно подсчитывать клики по кнопке... Тут уж я подсказывать пока не буду - только направление поиска задам - просмотри внимательно особенности переменных, объявленных разными способами и на разных уровнях...
Nu kakto napisal kod (kak mhaturov predlojil,napisal kod na bumajku:D )No poka ne testiroval ,potomu chto shas ya ne doma ,i Visual Basic-a net v etom kompe,esli chto skajite pojalyusta,i esli pravilno xochu videt optimalniy kod xelos-a.Pasib tebe:)
[COLOR=blue]Function kuper (num)[/COLOR]
[COLOR=blue]Static intx[/COLOR]
intx=intx+num
kuper=intx
End Function [/COLOR]
[COLOR=blue]Static intx[/COLOR]
[COLOR=blue]intx=intx+num[/COLOR]
[COLOR=blue]kuper=intx[/COLOR]
[COLOR=blue]End Function[/COLOR]
[COLOR=blue]Function kuper (num)
Static intx
intx=intx+num
kuper=intx
End Function[/COLOR]
ну по идее, я не понял зачем ты сделал отдельную функцию, и что это за параметр num.
мой вариант:
Static Dim a As Integer
a = a + 1
Label1.Text = a.ToString
End Sub
это все скомпилено в .НЕТ, так что не обращайте внимания на небольшие различия в синтаксисе - логика такова.
[COLOR=blue]text1=intx[/COLOR]
ochen proshu vas obyesnit mne eto,a to ya poka ne doshol v kniqe do tokix veshey.
Perviyje den napisal etot kod,no ne moq napisat eqo tak chtob vse kliki soxranilis na peremennom.
[COLOR=blue]Private Sub command1_click()[/COLOR]
[COLOR=blue]Static i As Integer[/COLOR]
[COLOR=blue]Static n As Integer[/COLOR] [COLOR=blue]i = 2[/COLOR]
[COLOR=blue]n = i - 1[/COLOR]
[COLOR=blue]Text1 = n[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Ups,zabil eto:)
[COLOR=blue]text1=intx[/COLOR]
ochen proshu vas obyesnit mne eto,a to ya poka ne doshol v kniqe do tokix veshey.
Perviyje den napisal etot kod,no ne moq napisat eqo tak chtob vse kliki soxranilis na peremennom.
[COLOR=blue]Private Sub command1_click()[/COLOR]
[COLOR=blue]Static i As Integer[/COLOR]
[COLOR=blue]Static n As Integer[/COLOR] [COLOR=blue]i = 2[/COLOR]
[COLOR=blue]n = i - 1[/COLOR]
[COLOR=blue]Text1 = n[/COLOR]
[COLOR=blue]End Sub[/COLOR]
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
это такие обработчики в .НЕТ, там активно используются нэймспейсы - это что-то типа объединения функций по группам :) в VB 6.0 этого нет, так что не забивай голову.
по идее sender - это куому послано сообщение, т.к. когда ты кликаешь на форме - системе нужно определить это кнопка, сам диалог или еще что, а EventArgs - дополнительные аргументы сообщения (надеюсь, ты знаешь, что такое сообщения и как они используются в виндоуз). для клика мышкой, обычно это координаты. Насчет твоего кода - попробуй просто:
Static i As Integer
i = i + 1
Label1.Caption = Str(i)
End Sub[/COLOR]
Str(i) тебе позволяет перевести числовую переменную в строковую.
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
это такие обработчики в .НЕТ
Извеняюсь за вторжение, Xelos, ты .НЕТ хорошо знаешь? Есть соображения по поводу ЭТОГО ?
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
это такие обработчики в .НЕТ, там активно используются нэймспейсы - это что-то типа объединения функций по группам :) в VB 6.0 этого нет, так что не забивай голову.
по идее sender - это куому послано сообщение, т.к. когда ты кликаешь на форме - системе нужно определить это кнопка, сам диалог или еще что, а EventArgs - дополнительные аргументы сообщения (надеюсь, ты знаешь, что такое сообщения и как они используются в виндоуз). для клика мышкой, обычно это координаты. Насчет твоего кода - попробуй просто:
Static i As Integer
i = i + 1
Label1.Caption = Str(i)
End Sub[/COLOR]
Str(i) тебе позволяет перевести числовую переменную в строковую.
Лучше использовать Str$(i), так как Str(0) = VBNullString, тоесть, пустое значение, а Str$(0) = "0"
Извеняюсь за вторжение, Xelos, ты .НЕТ хорошо знаешь? Есть соображения по поводу ЭТОГО ?
Вечром дома посмотрю, ок?
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
это такие обработчики в .НЕТ, там активно используются нэймспейсы - это что-то типа объединения функций по группам :) в VB 6.0 этого нет, так что не забивай голову.
по идее sender - это куому послано сообщение, т.к. когда ты кликаешь на форме - системе нужно определить это кнопка, сам диалог или еще что, а EventArgs - дополнительные аргументы сообщения (надеюсь, ты знаешь, что такое сообщения и как они используются в виндоуз). для клика мышкой, обычно это координаты. Насчет твоего кода - попробуй просто:
Static i As Integer
i = i + 1
Label1.Caption = Str(i)
End Sub[/COLOR]
Str(i) тебе позволяет перевести числовую переменную в строковую.
daaaa,i vpravdu rabotayet.A chem eto svyazano?Pochemu nelzya napisat eto kak Chislavoye?
Лучше использовать Str$(i), так как Str(0) = VBNullString, тоесть, пустое значение, а Str$(0) = "0"
Mojete obyesnit,pochemu eto nado pisat mesto Str(i)?
Mojete obyesnit,pochemu eto nado pisat mesto Str(i)?
Так я же объяснил это...
Во-первых, Str$ считается почему-то более эффективной и быстрой, нежели Str
Во-вторых, если ты пишешь A=Str(1), то A у тебя получтися A="1", если ты пишешь A = Str$(1), то А у тебя опять-таки будет равна А="1".
НО Если ты пишешь А = Str(0), то А у тебя получтися равным ПУСТОЙ СТРОКЕ(!!!) ТОЕСТЬ, А="", а вот если ты пишешь А = Str$(0), то А получится равным А="0". Разницу видишь? Str(0) = "", тоесть VBNullString, а Str$(0) = "0", тоесть 0 в виде текста.
Так я же объяснил это...
Во-первых, Str$ считается почему-то более эффективной и быстрой, нежели Str
Во-вторых, если ты пишешь A=Str(1), то A у тебя получтися A="1", если ты пишешь A = Str$(1), то А у тебя опять-таки будет равна А="1".
НО Если ты пишешь А = Str(0), то А у тебя получтися равным ПУСТОЙ СТРОКЕ(!!!) ТОЕСТЬ, А="", а вот если ты пишешь А = Str$(0), то А получится равным А="0". Разницу видишь? Str(0) = "", тоесть VBNullString, а Str$(0) = "0", тоесть 0 в виде текста.
Axda,shas ponel:) Takim ya uje stalkivalsya,no ne dumal chto i VB toje takiye veshi est.
вторая задача - создай функцию, в которой вычисляешь корни уравнения второй степени (их 2, насколько мы помним из курса школьной математики, если их нет, то необходимо, чтобы функция это определяла). на форме создай объекты для ввода 3-х коэффициентов для уравнения и один объект для вывода результата. при нажатии кнопки ты вызываешь функцию для рассчета корней, что ты сделал в самом начале и выводишь результат в объект для этого предназначенный. Нужно обойтись только локальными переменными.
A vot i vtoroye zadaniye.No doljen predupredit chto nad vvodom urovneniya ya ne ochento rabotal.Dumal chto et ne vajno ,no esli nado zdelayu.i vot chto esho et code dlaya takix urovneniy ,qde perviy kofsent roven 1.
-----------------------------------------------
[COLOR=blue]Private Sub command1_click()
Static x1 As Integer
Static x2 As Integer
Static p As Integer
Static q As Integer
p = Text2.Text
q = Text3.Text
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
Text4 = x1
Text5 = x2
End Sub[/COLOR]
Jdu novix zadach, uvajayemiy mhaturov i xelos
Твое решение правильное, но цель задачи немного другая.
Смотри внимательнее, ты не соблюдаешь условие. В процедуре нажатия кнопки ты должен вызвать другую процедуру, которая только решает уравнение. Вывод на экран должен быть осуществлен в процедуре нажатия кнопки. Т.е. если структуру накидать, то должно быть что-то типа:
...
Reshsenie(.....)
...
Text1.Text=...
Text2.Text=...
End Sub
Sub Reshenie(....)
....
End Sub
P.S. Замечание по предложенному тобой решению - оно работает, только нет смысла объявлять переменные как статические.
Твое решение правильное, но цель задачи немного другая.
Смотри внимательнее, ты не соблюдаешь условие. В процедуре нажатия кнопки ты должен вызвать другую процедуру, которая только решает уравнение. Вывод на экран должен быть осуществлен в процедуре нажатия кнопки. Т.е. если структуру накидать, то должно быть что-то типа:
...
Reshsenie(.....)
...
Text1.Text=...
Text2.Text=...
End Sub
Sub Reshenie(....)
....
End Sub
Da ya kajetsya ne vnimatelno chtal zadachku,izvinite.No starayus ispravitsya :)
Seqodnya xotel v druqom topike ob etom vas sprosit, mesto etoqo ya polzovalsya Dim -mom,et toje rabotayet,xotel sprosit esli net raznisi zachem polzovatsya im?No v vashem zadache qovarite ya doljet obxaditsya tolko Localnimi peremennimi.Vi chto imeyete vvedu (mojet Private)
Da ya kajetsya ne vnimatelno chtal zadachku,izvinite.No starayus ispravitsya :)
Seqodnya xotel v druqom topike ob etom vas sprosit, mesto etoqo ya polzovalsya Dim -mom,et toje rabotayet,xotel sprosit esli net raznisi zachem polzovatsya im?No v vashem zadache qovarite ya doljet obxaditsya tolko Localnimi peremennimi.Vi chto imeyete vvedu (mojet Private)
при использовании локальных переменнызх подазумевается их объявление внутри функций и процедур - а как ты их объявляешь значения не имеет. Посмотри в книжках темы - время жизни переменной, область видимости переменных (variable's scope).
[COLOR=blue]Private x1 As Integer
Private x2 As Integer
Private p As Integer
Private q As Integer
Sub Command1_click()
p = Text1.Text
q = Text2.Text
resheniye (intx)
Text3 = x1
Text4 = x2
End Sub
Sub resheniye(intx)
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
End Sub[/COLOR]
Хочу попросить вас помоч мне и наверника многим начинаюшим.Как вы предложыли бы изучить Visual Basic?Какими методами,с чего начать?Я например читаю книги о Visual Basic-ке но чуствою что ,эффект не очень хорошый.
Заранее благодарень за ответ:)
Советую приобрести книгу "Программирование на VBA 2002", автор В.Г.Кузьменко, там очень много как справочной информации, так и примеров по программированию на VBA и VB6, лично мне эта книга очень помогла.
В архиве - готовый экзешник и исходники.
Так как писал это дело на скорую руку, в экзешнике есть неточности (в частности, в модуле азбуки - там местами поменяны русские и латинские буквы). Но так как времени править нет, исходники сюда кладу и неточности не критичны, то выкладываю как есть.
Думаю, тебе стои попробовать пользоваться этим транслитератором для того, чтобы посты сюда выкладывать, а то очень неудобно расшифровывать каждый раз транслит...;)
P.S. ВНИМАНИЕ! ИЗ ОКНА ТРАНСЛИТЕРИРОВАННОГО ТЕКСТА РУССКИЙ ТЕКСТ СЮДА (на CodeNet) ТЕКСТ НУЖНО КОПИРОВАТЬ ЧЕРЕЗ FAR ИЛИ ДРУГОЕ ПРИЛОЖЕНИЕ, КОТОРОЕ ТЕКСТ В DOS-КОДИРОВАКУ ПЕРЕВОДИТ, ИНАЧЕ ТУТ КРАКОЗЯБРЫ ПОЛЕЗУТ!!!!
Mojet tak?Et toje rabotayet
[COLOR=blue]Private x1 As Integer
Private x2 As Integer
Private p As Integer
Private q As Integer
Sub Command1_click()
p = Text1.Text
q = Text2.Text
resheniye (intx)
Text3 = x1
Text4 = x2
End Sub
Sub resheniye(intx)
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
End Sub[/COLOR]
значит так, Sub resheniye(intx) - вообще непонятно что такое, имхо ты некорректно объявляешь функцию.
Второе: объявление
Private x2 As Integer
Private p As Integer
Private q As Integer
это объявление глобальных переменных, которое запрещено по условию задачи. Все переменные что ты используешь должны объявляться внутри функций или процедур.
Знать так. Надеюсь, у тебя корректно поддерживаются русские шрифты, потому как я выкладываю сюда транслитератор, которым советую пользоваться. Как он работает - думаю разберёшься. Набираешь в поле текст, даёшь команду перевести на нужный язык и он у тебя в другом поле переводится. Вобщем, попробуешь.
В архиве - готовый экзешник и исходники.
Так как писал это дело на скорую руку, в экзешнике есть неточности (в частности, в модуле азбуки - там местами поменяны русские и латинские буквы). Но так как времени править нет, исходники сюда кладу и неточности не критичны, то выкладываю как есть.
Думаю, тебе стои попробовать пользоваться этим транслитератором для того, чтобы посты сюда выкладывать, а то очень неудобно расшифровывать каждый раз транслит...;)
P.S. ВНИМАНИЕ! ИЗ ОКНА ТРАНСЛИТЕРИРОВАННОГО ТЕКСТА РУССКИЙ ТЕКСТ СЮДА (на CodeNet) ТЕКСТ НУЖНО КОПИРОВАТЬ ЧЕРЕЗ FAR ИЛИ ДРУГОЕ ПРИЛОЖЕНИЕ, КОТОРОЕ ТЕКСТ В DOS-КОДИРОВАКУ ПЕРЕВОДИТ, ИНАЧЕ ТУТ КРАКОЗЯБРЫ ПОЛЕЗУТ!!!!
Да,у меня были некоторые проблемы с шрифтами,но это случалось тока с Oper-ой.И так-как я уже привык к нему,решил писать английскими буквами.А с этого момента буду пользоватся с прогой которую вы дали, шас уже испытательний срок:)(Но должен сказать что *.exe работает но *.vbp не работает, translator.dll отсуствоет,если можно подкинте и его,pls) .Пасиба
Советую приобрести книгу "Программирование на VBA 2002", автор В.Г.Кузьменко, там очень много как справочной информации, так и примеров по программированию на VBA и VB6, лично мне эта книга очень помогла.
А можно ли его найти в инете?
значит так, Sub resheniye(intx) - вообще непонятно что такое, имхо ты некорректно объявляешь функцию.
Второе: объявление
Private x2 As Integer
Private p As Integer
Private q As Integer
это объявление глобальных переменных, которое запрещено по условию задачи. Все переменные что ты используешь должны объявляться внутри функций или процедур.
:( Насчeт локалниx переменниx я понел ,исправился уже
шас начинаю читать и о Sub-аx,если что вам скажу:)
А можно ли его найти в инете?
Sorry. Transliterator.dll - моя библиотека (ну не совсем моя - её в большей степени товарищь по работе писал). Но, вроде, он не должен требоваться....
Ща проверю....
Правда, не требуется...
Я тут выложу dll, но посмотри код ещё раз - не должна dll требоваться вроде как... Я специально её не включал, чтобы ты код модуля посмотреть мог...
К тому же в dll ошибочка есть - не все латинские буквы транслитерирует. Перекомпилить ща некогда, поэтому кладу как есть, но ты погляди ещё раз проект, ладно... Не должен он требоваться...
Так, нашёл!
1. Открой файл Travsliterator.vbp при помощи Notepad
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT\system32\stdole2.tlb#OLE Automation
Class=Language; Language.cls
Startup="(None)"
HelpFile=""
!--------------------------------!
!Title="Transliterator" !
!ExeName32="Transliterator.dll" !
!Path32="C:\WINNT\system32" !
!--------------------------------!
Command32=""
Name="Transliterator"
HelpContextID="0"
Description="Осуществляет транслитерацию и обратную транслитерацию строк"
!-------------------------------------------------------!
!CompatibleMode="2" !
!CompatibleEXE32="C:\WINNT\system32 Transliterator.dll" !
!VersionCompatible32="1" !
!-------------------------------------------------------!
MajorVer=1
MinorVer=0
RevisionVer=5
AutoIncrementVer=1
ServerSupportFiles=0
VersionCompanyName="VKO-Travel"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=1
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
ThreadingModel=1
DebugStartupOption=0
[MS Transaction Server]
AutoRefresh=1
Строки, который я в рамочку выделил, нужно удалить - должно помочь...
Если не поможет, будем дальше искать...
P.S. Не забудь перед выполнением удаления сделать резервную копию VBP-шника!!!
Так, тут всё, что может понадобиться и даже намного больше.
Да Я Пробовал, Шас Все Рулит ,спасибо ,суперская Прога,мне Оно Очен Помогает
Но Ест Одна Проблема ,почемута Все Слова Начинаются С Болшой Буквы
Да Я Пробовал, Шас Все Рулит ,спасибо ,суперская Прога,мне Оно Очен Помогает
Но Ест Одна Проблема ,почемута Все Слова Начинаются С Болшой Буквы
если внимательно посмотришь модуль Language, то в Public Function Russify в самом конце найдёшь строку Russify = Proper(strus). Если её заменить на Russify = strus, то буквы не будут менять регистр.
У меня вот какая проблема,обьевляю переменниx вне процедуры все Ок,но когда обевляю иx внутри процедуры почемута всегда ответы получаються как ноль,вчем дело?
приведи код, как ты их используешь.
приведи код, как ты их используешь.
[COLOR=blue]Private Sub Button_click()
dim x1 As Integer
dim x2 As Integer
dim p As Integer
dim q As Integer
p = Text1.Text
q = Text2.Text
resheniye (intx)
Text3 = x1
Text4 = x2
End Sub
Sub resheniye(intx)
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
End Sub
[/COLOR]
[COLOR=blue]Private Sub Button_click()
dim x1 As Integer
dim x2 As Integer
dim p As Integer
dim q As Integer
p = Text1.Text
q = Text2.Text
resheniye (intx)
Text3 = x1
Text4 = x2
End Sub
Sub resheniye(intx)
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
End Sub
[/COLOR]
ага, ошибка с пониманием области видимости переменных (scope).
Теория: Для каждой переменной определена так называемая область видимости. Переменная существует только в своей области видимости, когда ты пытаешься обратится к ней из участка программы, который не входит в область видимости - переменная считается неопределенной и в VB она создается заново но уже в другой области видимости. Надеюсь хоть что-то понятно :):)
Если переменная объявлена внутри функции (локальная), то ты можешь использовать ее для хранения значений только внутри этой функции. Из других функций эта переменная видна не будет.
Практика:
Т.о. в твоем коде, когда во второй функции ты пытаешься присвоить значения переменным х1 и х2 - компилятор уже не видит переменных, что ты объявил в первой функции, поэтому он создает 2 другие переменные с такими же именами. Все операции присвоения во второй функции происходят с этими новыми переменными и никак не влияют на переменные из первой функции. Точно так же и с коэффициентами q и р, они доступны из первой функции, но не доступны из второй (во второй функции компилятор создает другие переменные и при присвоении автоматически присваивает им значения 0).
Чтобы посмотреть как это все работает ты можешь воспользоваться дебаггером. поставь точку останова на вызове функции reshenie(intx) (она должна выделится жирным шрифтом) и точку останова на х2=...
и когда во время выполнения программа прервется просто наведи курсор на переменные q и p - ты увидишь какие-то значения в первой функции. нажми на F5 и программа остановится второй раз в функции решение - наведи курсор на р и q - значения теперь 0.
Подсказка:
чтобы р и q не были равны 0 в функции решение, их надо в нее передать...
[COLOR=blue]Private Sub Button_click()
dim x1 As Integer
dim x2 As Integer
dim p As Integer
dim q As Integer
p = Text1.Text
q = Text2.Text
resheniye (intx)
Text3 = x1
Text4 = x2
End Sub
Sub resheniye(intx)
x1 = -p / 2 + Sqr(((p / 2) ^ 2) - q)
x2 = -p / 2 - Sqr(((p / 2) ^ 2) - q)
End Sub
[/COLOR]
Насчот проседури Суб ,ну как читал в книге () здес должен бит или переменний или же константы ,а почему надо иx писат здесь?,я имею в виду для чего можно использовать ети переменные (в Проседуре), ешо читал что иx можно оставит пустыми (и Ето Тоже Обыесните ,пожалюста)