Lxf74-75 gambas

Тайните и трикове

В последната статия от тази поредица Кинг GUI д-р Марк Александър Beyn (д-р Марк Александър Бейн) разкрива тайните си в този подобен на Visual Basic език за програмиране.

Винаги оставяйте път за отстъпление

Казвал съм го и преди и Повтарям: преди да добавите нещо, за да си Gambas-образни приложат, за да го затворите правилно. Това може да бъде един бутон или елемент от менюто, като натиснете върху която кодът работи

Комбинирайте процедури в модули

Например, можете да сложите всичко, което се отнася до базата данни, модул на данни.

Не забравяйте за зависимостите при повторно използване на код

Ако използвате по-рано писмено код за ново заявление, не забравяйте да се свържете компонентите, на които кодът е специфичен. Например, ако използвате модула, за да се свърже с базата данни, ще трябва gb.db компонент, и така нататък.

Създаване на допълнителни функционални параметри и използването на техните стойности по подразбиране

В хода на проекта, който често ще създаде функция, която не изисква никакви параметри. Например, една проста рутинна да се свърже с базата данни (не го пишете, то е дадено тук само за да илюстрира идеята!):

Тази програма ще работи само ако сървърът на базата данни се намира на същия компютър, където програмата е кабелно поведение на кода. Но тъй като можете да пишете на процедура, която е на името на сървъра на базата данни като параметър:

Сега на сървъра не е хваната с кода на режима, но трябва винаги да го посочите, когато се обаждате рутината. Всъщност, вашата кандидатура ще се срине, ако изведнъж доведе до процедурата за свързване към база данни, без да уточнява задължително параметър, така:

Но вие можете да съчетава най-добрите качества на двете опции с помощта на допълнителен параметър с стойност по подразбиране.

Сега, рутината ще работи правилно, независимо от това дали сте го е посочено, прикрепен към кой сървър или не (свързване към Localhost ще бъде направено в този случай).

Хвани грешки и не им позволявайте да падне си програма

Ако се опитате да добавите последната опция, че аз просто видях в молбата си и да го изпълним, то определено ще се понижат. Това ще се случи, защото аз не мине достатъчно вр данни обект - с изключение на името на сървъра, той се нуждае от повече и база данни тип, името му, както и потребителското име и паролата си.

Не е много хубаво да се види как вашата програма се срива поради такива прости неща. Много по-добре да се справят с грешката, информира потребителя за това и да затвори правилно, и е по-добре - да се даде възможност на потребителя да направи това, което той все още може да се направи. За да направите това, ви е необходим TRY оператор. Ето един пример на готовия процедурата за свързване към базата данни, с обработка на грешки, и незадължителни параметри със стойности по подразбиране:

Сега, дори ако връзката към базата данни ще бъде, по някаква причина е невъзможно, приложението просто показва съобщение за грешка и да продължи да работи. Без използване на базата данни, разбира се.

свойства на използване

Ако просто трябва да зададете и прочетете ценности, а след това сте доволни от обичайните променливи. Но имоти (имот) имат характеристики, които понякога ги правят много полезен. Те включват _Read функции и подпрограми _Write. Така че, се опита да отгатне точката, в която те се извършват? Тук е домакин на определението свойства:

Моля, обърнете внимание, само обществен елемент е домакин, всичко останало е скрит от потребителя на модула. Вижте как функцията е дефинирана в Host_Read стойност за този имот по подразбиране.

Проучване на възможностите за командния ред

В нашите примери, всички стойности на параметрите (като името на базата данни или потребителското име) е ушит в рамките на програмата. Но вие не сте длъжни да го направят, ако не ви харесва. Промяна на ценности, можете лесно да премине от параметрите на командния ред. Разбира се, вие трябва да напишете малко код, нещо, което да се отнасяме към тях правилно. Всичко, което сте въвели в Gambas прилагането на командния ред, наречен аргумент, и се съхранява в Application.Args масив. Ето един прост пример за работа с него (тази функция може да се постави в модула Startup).

Ако след това се създаде изпълним заявление и да го стартирате от конзолата като преминават редица опции за командния ред, той показва поредица от съобщения, по един за всеки параметър. Това не е най-полезно приложение в света, но тя дава представа за това от коя страна да се доближава параметрите на методите.

Следващият пример е малко по-интелигентни. Тази програма очаква от вас да го давате два параметъра (в правилния ред), и съхранява стойностите в глобални променливи:

Както казах и преди, в този случай, редът е важно. Но ако използвате знамената, това не е толкова важно:

Сега можете да се обадите молбата си като Моето приложение -u / Localhost -d MySQL или Моето приложение -d MySQL -u / Localhost. резултатът не се променя.

Работещи Gambas без графичен потребителски интерфейс

Мисля, че сте се обърне внимание на това, когато четете предишното трик - не е нужно да се използват само за Gambas GUI приложения. Можете също да създадете приложение за конзола или заявление за команден ред. В действителност, когато създавате нова молба Gambas, трябва да посочи дали е необходим ви графичен интерфейс (по подразбиране е, че това ще отнеме).

Ако решите да се създаде приложение конзола, вие ще откриете, че в папката Форми на свойствата на проекта не е на всички - и с право, защото вие не се нуждаете от GUI. Но преди всичко, това означава, че няма къде да покаже информацията, с изключение на стандартния изход на конзолата.

Извинявам се за включването в този урок банален пример «Hello World», но това са условията на договора ми, аз трябва да го представи най-малко веднъж на всеки цикъл в статии. Това е още една от европейската директива.

Тук е задължителна програма «Здравей, свят» на Gambas:

Конзолата приложения могат да използват всички компоненти на Gambas, но изображение, разбира се.

Използвайте INPUT, за предаване на информация в приложение за конзолата.

Вече видяхме как да използвате Gambas опции за командния ред. Тя работи добре с едно искане за GUI и конзола. В графична форма обикновено има повече и входни полета за предаване на данните за приложения. В конзолата, можете да използвате една и съща за оперативния вход:

Превръщането на прилагането на конзолата в графичен и обратно

Когато Gambas ви задава въпрос, графичен дизайн или заявление за конзола, за да го създаде, вие имате право да поискате - каква е разликата? Отговорът е прост - разликата в един елемент Gambas - gb.qt. Ако го свържете към проекта на конзолата приложение, ще бъде на разположение на графичния потребителски интерфейс. И обратното, ако изключите графичен дизайн gb.qt, ще получите проект конзола програма. Simple.

Извличане на информация от файлове

В предишна статия разгледахме как да извлечете информация от базата данни. Да видим сега как да го чете от обикновен файл. Всичко, което трябва да се направи - е да отворите файл в един от четирите режима: прочетете (прочети), пише (запис), създаване (създаване) или добавете (прикрепянето в края). Мисля, че това е съвсем проста, за да предполагам, че го прави всеки един от тези методи, въпреки че следва да се изясни разликата между парене и. напиши запис режим, чисти и въведете отново съществуващия файл. създаде се създаде режим може да създадете файл, ако тя не съществува, но ако тя е вече там - действа точно като запис. Ето един прост пример:

Този код се чете файла / и т.н. / ако съществува и я показва на съдържанието на екрана.

Използвайте Динамични масиви Gambas на всички цилиндри

Това заглавие може да бъде малко ви подвежда, защото в действителност във всички Gambas масиви - динамичен. Нека да разгледаме как можете да ги използвате. Дефиниция на масив изглежда така:

Там се създава масив от линии, които не съдържат който и да е елемент. Макар да остава празен, не можете да го зададете никаква стойност. Така например, по следния начин:

вие получавате съобщение за грешка "Няма масив» (извън границите). Вместо това, използвайте метода за добавяне на:

Това е предизвикателство да се добави още един елемент в края на масива. Но можете да добавяте елементи от самото начало:

По този начин можете да вмъкнете нов елемент във всяка позиция в масива. Ако имате масив от десет елемента, следния код ще въведе още едно точно в средата:

Масиви индекси започнат от нула, така че елементът с индекса 4 ще бъде петата подред, но само в масива вече ще бъдат 11 линии. Убеден съм, че веднага ще се опитам да напиша

Gambas просто ще добави нов ред след последния елемент.

Rapid масив измерване

Ако ние говорим за редица елементи, нека се запитаме - и това е, колко е голям масив? Отговорът е прост. Масиви Gambas имат две свойства - mArray.count и mArray.length. И двете тези свойства показват едни и същи и се връщат от общия брой на елементите в масива.

Можете да използвате всеки от тях да мине през всички елементи:

Този код просто създава масив от десет клетки, след това показва всеки елемент в отделно съобщение. Това може да ви изненада, че след като индексът аз бях аз-1, вместо аз. Но, както вече споменах, индексите на масиви започват от нула, така че в масив с десет елемента са номерирани 0-9, а не от 1 до 10. Ако не ми харесва аз-1, е възможно да се използва друг метод:

Този път се започва от нулата и да се спре на номера на индекса mArray.Count - 1, който е индекс номер девет (като mArray.Count е десет).

Добавянето на няколко елемента

Да, знам какво искате да кажете, че не искате да добавите елементи един по един. Просто искам незабавно да създаде необходимия брой елементи, а след това да ги попълните в реда, в който ти е удобно. Няма проблем!

В този пример, аз създадох масив, за да се определи нейния размер на 10 елемента (по метода на Resize) и задайте стойността на шестия елемент (забележете как се справиха с мъжествено на изкушението да използва петият елемент!).

Интересното е, че можете да намалите размера на масива. За да направите това, използвайте методите Resize или премахване. Как Resize можете да се досетите, и премахване - това е точно обратното метод за добавяне, това означава, че премахва последния елемент, или елемент с индекс, който той почина.

масив от съвети

Ако запазите данните във файл, ще трябва подходящ символ за разделяне на отделните секции от друг. Comma - доста често срещан избор, но трябва да се избегне, ако някой случайно влезе в текстово поле линия с точка и запетая в "база данни" ще бъде ненужно поле. Използвайте нещо по-необичайно, като вертикална черта (|).

Съществуват няколко метода, които можете да намерите много полезна, когато използвате Gambas масиви. Първият от тях - е Сортирайте. Виж това:

Този код изпълва масив от десет елементи с номера от 1 до 10. Тя след това сортира във възходящ и низходящ, показване на мястото на първия член 10 и 1, съответно. Ще бъде интересно да се види какво се промени, ако искаме да замени дефиницията на масива на String []. По това време, програмата ще покаже 9 и 1. Защо? Защото Gambas правилно идентифицира типа на променливите в масив и сортира числа в аритметична ред, както и линии - в лексикографски. Друг интересен метод на масиви Gambas - е обратно (за плащане). Познай какво върши? И последното - е Намерете (намерите). Трябва обяснение? Мисля, че не. Нека вместо просто Нека разгледаме един пример:

Този пример използва кода за четене на данни от файл, който разглежда по-рано. По това време, имена на потребители и техните домашни директории от / и т.н. / ако съществува се зареждат в масиви. В края на потребителското име се търси съответен идентификатор, както и за това, от своя страна, показва собствената директория.

Има само един ред код, който изглежда е необходимо да ми обясни: lArray = Split (LLinE, «:»). Тя разделя LLinE низ на отделни елементи с помощта на дистанционния (в този случай -. Обърнете внимание на дебелото черво страничната лента "Съвети" по-горе), а след това се зарежда с частите на низ в масив lArray.

Запазване на персонални настройки

Сега ние знаем как да получите достъп до параметрите на командния ред на Gambas приложения. Това ще даде възможност на потребителя да зададете режим на работа, освен ако не е съгласен да влезе напълно всички опции всеки път, когато започва нашата програма. Възможно ли е да се автоматизира това? Разбира се, ключът към решението е конфигурационен файл, който се чете при стартиране. След това, стойностите, посочени в конфигурационния файл, сменете настройките по подразбиране, направени в програмата.

И накрая да кажа ...

Пълният код за прилагане разработени в това ръководство могат да бъдат намерени на CD-ROM. Той съчетава всички техники и трикове, които сме обсъдени, и това показва колко лесно става трудна задача, ако ръката е Gambas.