Aina ya data ya kamba. Kufanya kazi na wahusika na masharti. Kuingiza kamba ndogo kwenye mfuatano

p»ї Shirika la Kuaminika la SEO India linaweza Kuongeza Mapato ya Biashara Ndogo

Watumiaji 80% hutafuta kwenye Google na injini nyingine za utafutaji kabla ya kufanya ununuzi na zaidi ya 50% ya maswali yanayotokana na injini za utafutaji hubadilishwa. Takwimu hizi mbili zinathibitisha umuhimu wa Uboreshaji wa Injini ya Utafutaji. Kuna takwimu na ukweli nyingi kama hizi ambazo huweka hoja wazi: biashara yoyote ndogo, ya kati au kubwa inahitaji huduma za kitaalamu za SEO. Biashara ndogo ndogo na zinazoanzishwa mara nyingi hukabiliana na maswala ya bajeti. Wanaweza kuchukua usaidizi wa wakala wowote wa kuaminika wa SEO kutoka India kupata huduma bora ya SEO katika bajeti yao ili kuongeza mapato yao.
Utafutaji una athari kubwa kwa akili za watumiaji. Kulingana na takwimu mbalimbali zinazoshirikiwa na wataalam wakuu wa uboreshaji wa injini ya utafutaji kwenye tovuti mbalimbali zilizoidhinishwa kama vile Injini ya Utafutaji Land, Moz, SEO Journal, Digital Marketers India, Hubspot, n.k. SEO inachukua viongozi wengi. Pia, miongozo inayotoka kwa matokeo ya utafutaji wa kikaboni ina kiwango cha juu cha ubadilishaji. Takwimu hizi na tabia ya watumiaji huweka wazi uhakika kwamba huduma bora ya SEO sio anasa, lakini ni hitaji la biashara yoyote.
Ili kuepuka ushindani na kuongeza ukuaji wa biashara kila shirika linahitaji kutumia huduma za Uboreshaji wa Injini ya Utafutaji. Chapa kubwa zinaweza kuwekeza pesa za kutosha kwa huduma ya SEO ya kitaalam inayotolewa na kampuni ya juu ya SEO au mtaalamu wa SEO, lakini wamiliki wa biashara ndogo mara nyingi huhatarisha ubora wa huduma hii kwa sababu ya bajeti ndogo. Ni ukweli mgumu kwamba biashara ndogo ndogo na wanaoanzisha huishia kuacha fursa zinazoweza kuundwa na huduma ya kitaalamu ya SEO au kutumia huduma ya bei nafuu ya SEO ambayo haitoi matokeo chanya.
Wamiliki wa biashara ndogo ndogo na wanaoanza wanaweza kufaidika na huduma za kitaalamu za SEO hata katika bajeti ndogo. Suluhisho bora ni kutafuta kampuni ya kuaminika ya SEO iliyo nje ya India. Nchini India, kuna wataalam wengi wa SEO ambao wanafanya kazi na wakala wa uuzaji wa kidijitali na wanatoa huduma bora zaidi katika tasnia. Wanaweza kukupa huduma za SEO zinazohitajika katika bajeti yako. Mishahara inaweza kujadiliwa na wakala wa SEO India ili kupata huduma bora kwa viwango vya chini. Walakini, usianguke kwa huduma ya bei nafuu ya SEO ambayo inatoza kidogo na kuahidi kutoa zaidi kwani utaalam unakuja kwa gharama yake yenyewe. Lazima uone kwingineko au uulize maswali yanayofaa kabla ya kupata kandarasi ya kampuni kwa biashara yako.
Wataalamu wa SEO nchini India wana ujuzi wa mbinu bora za uboreshaji wa injini ya utafutaji. Pia, kuna baadhi ya wataalamu wa SEO nchini India kama vile Ash Vyas, ambao wana utaalam katika kuunda mkakati bora wa uboreshaji wa injini ya utaftaji kwa biashara katika bajeti iliyobainishwa. Wataalamu wa SEO wataunda mpango wazi na pia watashiriki kile ambacho kinaweza kuwa matokeo yanayotarajiwa. Kwa njia hii unaweza kufahamu vyema uwekezaji wako na mapato. Hii husaidia katika kufanya uamuzi bora wa biashara.
Wazo zuri ni kupata na kandarasi ya kampuni ya kuaminika ya SEO kutoka India ambayo inatoa huduma bora za SEO haraka iwezekanavyo. Unaweza pia kuanza na bajeti ndogo na shughuli chache ili kuanza kupata Kurasa zako za Wavuti kwenye faharasa na kuongeza maneno yako muhimu katika injini za utafutaji. Usingoje wakati mwafaka au siku ambayo utakuwa na maelfu ya dola ili kuwekeza katika huduma bora za SEO. Kuanza mapema kutakusaidia kupata matokeo ya haraka wakati unaweza kuwa mkali na mbinu yako ya uuzaji. Kampuni inayoaminika ya SEO iliyotoka India itakusaidia kufafanua mipango yako ya sasa na ya baadaye ili kutoa matokeo mazuri. Kurasa zaidi zilizoorodheshwa zilikuza viwango na chapa inayoaminika ya biashara yako iliyotengenezwa kwa mbinu endelevu za kitaalamu za SEO itaongeza maswali mara mbili, biashara na mapato. Biashara yoyote ndogo inaweza kuanza na uwekezaji wa tarakimu mbili katika huduma za kitaalamu za SEO. Kuna mashirika mengi ya SEO nchini India ambayo hutoa bajeti ya chini bado matokeo kutoka kwa huduma za Uboreshaji wa Injini ya Utafutaji.

tafiti kutoka uhamishoni

  • CraigWew

    12.04.2018

    p»їUmuhimu wa Kuanzisha Urafiki na Mteja katika Mali isiyohamishika na Mauzo ya Jumla

    Umuhimu wa kuanzisha maelewano na mteja.
    Kuanzisha urafiki na mteja kunapaswa kupatikana na lazima kushughulikiwe kama sehemu muhimu ya mchakato wa mauzo.
    Ili kupata mteja na wewe mwenyewe kuhusiana kwa misingi ya moja kwa moja, inahusisha mambo mawili!
    Kwanza, itabidi kufahamu na kuwa huko! Pili lazima uelewe kwamba kuna hatua mbili tofauti ambazo zitatokea wakati wa mchakato huu.
    A-Be there-inamaanisha nini?
    o Watu wengi hawasikilizi kabisa mtu mwingine wanapozungumza. Kwa ujumla wao wana shughuli nyingi sana katika kuunda jibu au kauli yao inayofuata hivi kwamba wasingeweza kusikiliza kwa kweli.
    o Ikiwa hii inaonekana kama wewe, kuwa hapo kunamaanisha nyamaza na usikilize!
    B-Hatua ya kwanza au ya mwanzo ni ipi?
    o Kwa ujumla una dakika chache tu za kujiimarisha katika akili ya wateja kama mtu wanayetaka kushughulika naye.
    o Unapokuwa na mashaka ni vyema kwanza kuuliza maswali ambayo yatawavutia na kujizungumzia wao wenyewe.
    o Pia ni salama kila wakati kuonekana kama mtaalamu-Simaanishi stoic au kavu, lakini mtu ambaye anajua anachofanya na kuzungumza na kuangalia sehemu.
    C-Hatua nyingine
    o Kadiri muda unavyosonga, kupitia mazungumzo na maswali watakayokuwa nayo, utathibitisha uwezo wako au la.
    o Fahamu kuwa pengine watakuwa wanakupima kwa muda. Habari njema ni kwamba wakati fulani, ikiwa umefaulu kuanzisha urafiki-watapumzika na nyote mnaweza kuzingatia kutafuta au kuuza nyumba.
    Ni nini kingine kinachoweza kunisaidia kukuza urafiki?
    o Kwa kujaribu kuelewa aina tofauti za haiba na kisha kwa kusema na kuuliza maswali yanayofaa.
    o Ikiwa una maelewano mazuri (pata urefu wa wimbi sawa na mteja) basi uuzaji umekwisha, sasa ni suala la kutafuta nyumba sahihi au kujaza karatasi za kuorodhesha.
    Vipi kuhusu haiba tofauti
    o Kwa kuwa hiki si kitabu cha magonjwa ya akili, kwa sasa elewa tu aina mbili kuu.
    o Kuna watu waliojiingiza na waliotoka nje.
    o Unajua aina. Fikiria kuhusu watu watatu unaowajua wanaolingana na kila uainishaji.
    Vipi kuhusu lugha ya mwili na mifumo ya usemi?
    o Ikiwa wanazungumza haraka au polepole, jaribu kuiga mifumo yao ya usemi.
    o Ikiwa wanazungumza kwa sauti kubwa au laini, fanya vivyo hivyo. Je, wanaegemea mbele au nyuma?
    o Bila shaka, kuna vitabu vingi vilivyoandikwa kuhusu somo hili. Fahamu tu kwamba ni jambo muhimu—hasa unapoketi katika chumba cha mikutano au kwenye nyumba ya mtu ukijadili mpango wa $400,000.
    Kukuza urafiki ni ujuzi ambao unaweza kujifunza na kuboreshwa.
    o Sote tumepitia muuzaji ambaye alituuzia kitu na bado hatukuhisi kuwa tunauzwa. Sababu ni yeye, alikufanya ujisikie vizuri pale ulipowaamini.
    Je, tunakuzaje urafiki?
    o Tumia macho na masikio yako na uulize maswali. Kueleza
    o Tumia macho:
    o Angalia mavazi yao-gari lao-mali zao za kibinafsi na ninamaanisha waangalie sana na utambue kile ambacho kinakuambia kuwahusu.
    o Tumia masikio:
    o Sikiliza wanachosema na uulize maswali ili kupata undani wa MOTISHA yao halisi!
    Sasa wakati wa mazungumzo haya yote, pengine kutakuwa na jambo moja au mbili utagundua kuwa mnafanana nazo. (Familia, maeneo ya kijiografia, uvuvi, n.k) Unapokutana na mambo ambayo mnakubaliana, wajulishe mnayafahamu kisha chukua dakika moja kuyajadili.
    Lengo ni nini?
    o Mara tu watakapokukubali kama mmoja wao uko katika nafasi ya kuwa na uzoefu mzuri katika uuzaji kwani sasa mnafanya kazi pamoja wakati huo kama timu - wewe sio muuzaji tena uko katika nafasi ya ushauri. .
    o Kumbuka, mteja atakuruhusu au hatakuruhusu kuingia katika ulimwengu wake. Ikiwa unaelewa hili na kufanya kazi kwa bidii ili kuwa na huruma naye, unaweza kupata nafasi ya kuaminiwa. Mara nyingi, utawaona wamepumzika (lugha ya mwili) wakati hii itafanyika uko njiani.
    o Ili kudhihirisha hili, je, umewahi kutoa hotuba na kugundua kwamba unapoungana na mshiriki wa hadhira watakubali kwa kutikisa kichwa. Mambo haya yote yanaweza kuonekana kuwa madogo lakini sivyo.
    Kwa kumalizia, ikiwa unaweza kupata uaminifu wa wateja, kuuza bidhaa au huduma ni rahisi zaidi na uzoefu unaweza kuwa mzuri kwa kila mtu anayehusika.
    Daima kumbuka kuwa Kushinda/Kushinda ndio hali bora zaidi.

Alama

Ishara ni ishara moja. Yoyote - barua, nambari, ishara ya hesabu au nafasi, alama za uakifishaji au kusisitiza... Na pia herufi maalum - mstari mpya, BackSpace, ishara ya dola au asilimia. Aina ya "mhusika" katika Delphi inaonyeshwa na Char:

ShowMessage("Umeingiza" + c);

ShowMessage("Hamisha hadi mpya" + c + "mstari");

Tayari tumesema kwamba alama zinachukuliwa kutoka kwa meza ya ishara ANSI au UNICODE. Alama nyingi hutumiwa, alama zingine ni msaidizi. Tafadhali kumbuka kuwa herufi kubwa "A" na herufi ndogo "a" ni alama tofauti! Pia, "s" za Kilatini na "s" za Kirusi ni alama tofauti, ingawa zinafanana na mbaazi mbili kwenye ganda.

Herufi batili haitumiki, imehifadhiwa kama batili kamili. Watayarishaji programu wamepata matumizi yanayofaa kwa herufi hii, wakiitumia katika matukio ya uingizaji maandishi wakati wanahitaji kumzuia mtumiaji asiingize herufi zozote. Hatuwezi kuona vibambo vya huduma katika maandishi shamba. Alama za huduma ni , <Ingiza>, <Kichupo> na wengine. Kila herufi inachakatwa na kompyuta kama nambari kutoka 0 hadi 255, kwa hivyo neno"HELLO" kwenye kumbukumbu ya mashine itaonekana kama seti ya nambari: "207 208 200 194 197 210".

Kazi za Alama

Katika mazoezi, mara nyingi ni muhimu kusindika wahusika binafsi. Vigezo vya aina ya Char vinaweza kupewa maadili kwa njia ifuatayo:

Kwa kuwa kwa kompyuta ishara ni nambari, data ya mfano inaweza kulinganishwa na kila mmoja. Katika kesi hii, ishara kubwa zaidi itakuwa ile ambayo nambari yake kwenye jedwali la ishara ni kubwa zaidi. Kwa mfano, "i" itakuwa kubwa kuliko "a":

ikiwa b > c basi ShowMessage("Kweli!")

mwingine ShowMessage("Uongo!");

Wakati wa kufanya kazi na vigezo vya tabia, kazi za Chr() na Ord() hutumiwa mara nyingi. Kazi Chr() huchukua nambari kama kigezo, na kurejesha herufi inayolingana na nambari hiyo kwenye jedwali ANSI:

kazi Chr (X: Byte): Char;

Kazi Ord() hufanya kinyume kabisa, inachukua mhusika kama paramu, na inarudisha nambari ambayo herufi hii imehifadhiwa kwenye jedwali. ANSI:

kazi Agizo (C: Char): Byte;

Vigezo vya wahusika vinaweza kutumika na kazi hizi:

Katika mstari wa kwanza, katika kigezo a tuliandika ishara "NA", ambayo inalingana na nambari 200 kwenye jedwali la ishara. Katika nambari ya pili, nambari kamili, tuliandika nambari 200, kwani ishara iliyo na nambari hii iliandikwa. kutofautisha a, ambayo tulipitisha kama kigezo . Mwishowe, katika mstari wa tatu tuliandika nambari 102 kwa kutofautisha nzima; nambari hii inalingana na ishara "f".


Mstari

Mfuatano ni seti ya wahusika. Mfuatano unaweza kuwakilishwa kama safu tuli au inayobadilika ya data ya wahusika. Tayari tumejadili aina za mifuatano katika "Kudhibiti jenga ikiwa, kwa kitanzi": AnsiString - kamba kutoka ANSI- ishara, na WideString- safu ya UNICODE - wahusika.

Aina ya Kamba sio aina tofauti; inabadilika kuwa AnsiString. Hata hivyo, inaweza pia kusanidiwa upya kwa WideString, ingawa hii sio lazima. Kwa hivyo jisikie huru kutaja anuwai za kamba kama Kamba:

s:= "Hii ni mistari mingi" + #13 + "kamba";

Kama unaweza kuona kutoka kwa mfano, kamba inaweza kujumuishwa na vifungu vidogo kadhaa, na hata herufi za kibinafsi zinaweza kuongezwa kwake. Katika mfano, tuliongeza nambari ya mhusika 13, hii ndio herufi mpya ya mstari. Kama matokeo ya kutekeleza nambari hii, utaratibu wa ShowMessage() utaonyesha ujumbe uliogawanywa katika mistari miwili:

Hii ni multiline

ShortString- kamba fupi kutoka ANSI- ishara. Inaweza kuwa na kuanzia herufi 0 hadi 255. Inatumika mara chache. Kwa kweli, unaweza kutangaza aina ya Kamba na saizi iliyoainishwa mapema:

Kama unaweza kuona, kamba inatangazwa na faharisi ya nambari, karibu kama safu. Kweli, kamba ya tabia na kuna safu data ya wahusika, na unaweza kuishughulikia kwa njia ile ile. Kuweka faharasa wahusika katika mstari huanza na moja, yaani, index 1 inalingana na tabia ya 1 ya mstari.

string:= "Hujambo";

string := "a"; // ilibadilisha herufi ya 5 ya mstari

ShowMessage(kiharusi); // matokeo: kamba "Binafsi"

Hii pia ni kamba, na tutalazimika kukabiliana nayo katika siku zijazo. Kamba hii inafanya kazi tofauti kabisa na Kamba. Kamba inawakilisha safu herufi, kipengele cha sifuri ambacho kina nambari kwaheri, zilizotengwa chini ya mstari huu. A kutofautiana aina PChar- hii sio mstari yenyewe, lakini pointer hadi mwanzo wa mstari, yaani kutofautiana huelekeza kwa herufi ya kwanza ya mfuatano kwenye kumbukumbu ya kompyuta. Wapi basi PChar wingi wa maduka kwaheri katika mstari?! Na mahali popote! Tayari tumezungumza juu ya meza ya ishara ANSI, na kugundua kuwa herufi batili haina kitu. Huyu hapa mhusika wa mwisho PChar ni ishara hii ambayo huhifadhi, na kompyuta, baada ya kuipata, inazingatia kuwa mstari umekwisha.

Na masharti PChar ni ngumu sana kufanya kazi nayo, lakini itabidi tufanye hivi tunapofanya kazi na kazi za WinAPI moja kwa moja. WinAPI kazi ni kazi ya Windows, sio Delphi. Walakini, Delphi hukuruhusu kuzitumia. Wakati mwingine hii ni muhimu, kwa mfano, wakati zana za Delphi hazitoshi kukamilisha kazi iliyokusudiwa. Kutumia kazi hizo si rahisi kila wakati, lakini zinatekelezwa na processor kwa kasi zaidi, kwa kuwa ziko kwenye mfumo wa uendeshaji yenyewe. Mfano - kazi Sanduku la Ujumbe().

Je, tayari umezoea kuonyesha ujumbe kwa kutumia kipengele cha ShowMessage() cha Delphi? Zoee kipengele kipya!

Application.MessageBox("line 1", "line 2",[ vifungo + window_type]);

· mstari wa 1 - huonyesha maandishi ndani ya dirisha.

· mstari wa 2 - maandishi katika kichwa cha dirisha.

Ikiwa hutabainisha [vifungo + window_type], basi dirisha rahisi na kifungo cha OK litaonekana, kama katika kazi ya ShowMessage().

Kufanya kazi na Kamba na Wahusika

Usindikaji wa maandishi ni mojawapo ya kazi za kawaida za programu. Ikiwa unahitaji kusindika data yoyote ya maandishi, basi huwezi kufanya bila ujuzi wa nyenzo ambazo zitawasilishwa hapa chini. Hasa ikiwa data haikutolewa na wewe binafsi, lakini na programu ya mtu wa tatu au mtu mwingine.

Alama

Tabia ni kitengo kimoja cha maandishi. Hii ni barua, nambari, aina fulani ya ishara. Jedwali la msimbo wa tabia lina nafasi 256, i.e. kila herufi ina msimbo wake wa kipekee kutoka 0 hadi 255. Herufi yenye msimbo fulani N imeandikwa hivi: #N. Hivi ndivyo alama zinavyoonyeshwa kwenye nambari ya programu. Kwa kuwa msimbo wa ishara ni nambari isiyo zaidi ya 255, ni dhahiri kwamba ishara inachukua 1 byte katika kumbukumbu. Kama unavyojua, hakuna kipimo chini ya baiti. Kwa usahihi zaidi, ipo - ni kidogo, lakini hatuwezi kufanya kazi na bits katika programu: byte ni kitengo cha chini. Unaweza kutazama jedwali la alama na nambari zao kwa kutumia matumizi ya kawaida ya "Jedwali la Alama" iliyojumuishwa kwenye Windows (njia ya mkato iko kwenye menyu ya Mwanzo - Programu - Vifaa - Vyombo vya Mfumo). Lakini hivi karibuni tutaandika kitu kama hicho sisi wenyewe.

Kamba

Mfuatano, unaojulikana pia kama maandishi, ni seti ya herufi, mlolongo wao wowote. Ipasavyo, herufi moja pia ni kamba, pia maandishi. Mfuatano wa maandishi una urefu fulani. Urefu wa mfuatano ni idadi ya vibambo vilivyomo. Ikiwa herufi moja inachukua baiti 1, basi mfuatano wa herufi N huchukua ka N.

Kuna majedwali mengine ya msimbo ambayo herufi 1 inawakilishwa sio na byte moja, lakini na mbili. Hii ni Unicode. Jedwali la Unicode lina herufi kutoka lugha zote za ulimwengu. Kwa bahati mbaya, kufanya kazi na Unicode ni ngumu sana na msaada wake ni wa kawaida tu. Delphi haitoi uwezo wa Unicode. Kuna sehemu ya programu, lakini hapa ni vipengele vya kuona - fomu, vifungo, nk. haiwezi kuonyesha maandishi katika umbizo la Unicode. Hebu tumaini kwamba msaada huo utaonekana katika siku za usoni. 2 byte pia huitwa neno. Kwa hivyo jina la aina inayolingana ya data ya nambari - Neno (nambari inayochukua ka 2 kwenye kumbukumbu, maadili kutoka 0 hadi 65535). Idadi ya "seli" kwenye jedwali la Unicode ni 65536 na hii inatosha kuhifadhi lugha zote za ulimwengu. Ikiwa unaamua kuwa "1 byte - 256 maadili, basi 2 byte - 2 * 256 = 512 maadili," nakushauri kukumbuka mfumo wa binary na kanuni ya kuhifadhi data kwenye kompyuta.

Aina za data

Wacha tuendelee moja kwa moja kwenye programu. Kuna aina za data zinazolingana za kufanya kazi na wahusika na kamba:

· Char - tabia moja (yaani 1 byte);

· Kamba - kamba ya tabia, maandishi (N bytes).

Rasmi, mifuatano inaweza kushikilia herufi 255 pekee, lakini huko Delphi unaweza kuandika mengi zaidi kwa kila mfuatano. Ili kuhifadhi maandishi makubwa na maandishi na wahusika maalum, kuna aina maalum za data AnsiString na WideString (mwisho, kwa njia, ni mbili-byte, yaani kwa Unicode).

Ili kutaja maadili ya maandishi katika Pascal, nukuu moja hutumiwa (sio nukuu mbili!). Wale. Unapotaka kugawa thamani kwa utofauti wa kamba, unapaswa kuifanya kama hii:

Wahusika wameainishwa kwa njia ile ile, kuna mhusika mmoja tu katika nukuu.

Ikiwa unataka kuweka kikomo kwa urefu wa maandishi yaliyohifadhiwa kwenye utaftaji wa kamba, unaweza kuifanya kama hii:

Kwa kuwa kila mstari ni mlolongo wa wahusika, kila mhusika ana nambari yake ya mfululizo. Katika Pascal, hesabu ya wahusika katika mistari huanza kutoka 1. I.e. katika kamba "ABC" tabia "A" ni ya kwanza, "B" ni ya pili, nk.

Nambari ya serial ya mhusika kwenye mstari haikuvumbuliwa kwa bahati, kwa sababu ni kwa nambari hizi, fahirisi, kwamba vitendo hufanywa kwenye mistari. Unaweza kupata herufi yoyote kutoka kwa mfuatano kwa kubainisha nambari yake katika mabano ya mraba karibu na jina la kutofautisha. Kwa mfano:

var s: kamba; c: char; ... s:="Habari!"; c:=s; //c = "e"

Baadaye kidogo, tunaposoma safu, itakuwa wazi kuwa kamba ni safu ya wahusika. Hii ina maana ya namna ya kushughulikia alama binafsi.

Usindikaji wa Kamba

Hebu tuendelee kwenye kazi na taratibu za usindikaji wa masharti.

Urefu wa mfuatano unaweza kupatikana kwa kutumia kitendakazi cha Length(). Kazi inachukua parameter moja - kamba, na inarudi urefu wake. Mfano:

var Str: Kamba; L: Nambari kamili; ( ... ) Str:="Hujambo!"; L:=Urefu(Str); //L = 6

Kutafuta kamba ndogo katika mfuatano

Jukumu la asili ni kupata kamba ndogo katika mfuatano. Wale. shida imeundwa kama ifuatavyo: kuna kamba S1. Amua kutoka kwa nafasi gani kamba S2 inaingia ndani yake. Haiwezekani kufikiria usindikaji wowote bila kufanya operesheni hii.

Kwa hivyo, kwa utaftaji kama huo kuna Pos() kazi. Kazi inachukua vigezo viwili: ya kwanza ni kamba ndogo ambayo inahitaji kupatikana, ya pili ni kamba ambayo kutafuta. Utafutaji unafanywa kwa kuzingatia kesi ya wahusika. Ikiwa chaguo za kukokotoa hupata tukio la mfuatano mdogo katika mfuatano, hurejesha nambari ya nafasi ya utokeaji wake wa kwanza. Ikiwa hakuna ingizo linalopatikana, chaguo la kukokotoa linarudi 0. Mfano:

var Str1, Str2: Kamba; P: Nambari kamili;( ... ) Str1:="Hi! Unaendeleaje?"; Str2:="fanya"; P:=Pos(Str2, Str1); //P = 9

Kuondoa sehemu ya mstari

Unaweza kufuta sehemu ya kamba kwa kutumia Delete() utaratibu. Ikumbukwe kwamba hii ni utaratibu, sio kazi - hufanya vitendo moja kwa moja kwenye kutofautiana ambayo hupitishwa kwake. Kwa hivyo, parameta ya kwanza ni kutofautisha kwa aina ya kamba ambayo kipande kinafutwa (kigeu halisi! Thamani maalum haijawekwa, kwani utaratibu haurudishi matokeo), parameta ya pili ni nambari ya herufi kutoka kwa mhusika. kipande kinahitaji kufutwa, paramu ya tatu ni idadi ya wahusika wa kuondoa. Mfano:

var Str1: Kamba; ( ... ) Str1:="Hujambo, ulimwengu!"; Futa (Str1, 6, 7); // Str1 = "Habari!"

Ikumbukwe kwamba ikiwa urefu wa fragment iliyofutwa ni kubwa zaidi kuliko idadi ya wahusika katika mstari, kuanzia nafasi maalum (yaani, "hebu tuende zaidi ya makali"), kazi itafanya kazi kwa kawaida. Kwa hiyo, ikiwa unahitaji kuondoa kipande kutoka kwa kamba kutoka kwa tabia fulani hadi mwisho, huna haja ya kuhesabu idadi ya wahusika hawa. Njia bora itakuwa kuweka urefu wa kamba hii yenyewe.

Hapa kuna mfano. Wacha tuseme unataka kupata herufi ya kwanza "a" kwenye mfuatano na ufute sehemu ya mfuatano wake. Hebu tufanye kama ifuatavyo: tunapata nafasi ya barua kwenye mstari kwa kutumia Pos () kazi, na kufuta kipande kwa kutumia Delete () kazi.

var Str: Kamba; ( ... ) Str:="Huu ni mtihani."; Futa(Str,Pos("a",Str),Urefu(Str));

Wacha tujaribu kubadilisha maadili na tuone ni nini kinachopitishwa kwa kazi ya Futa. Barua ya kwanza "a" kwenye mstari iko kwenye nafasi ya 9. Urefu wa mstari mzima ni wahusika 15. Kwa hivyo simu ya kazi huenda kama hii: Futa (Str,9,15). Inaweza kuonekana kuwa kutoka kwa barua "a" hadi mwisho wa mstari kuna wahusika 7 tu ... Lakini kazi itafanya kazi yake, licha ya tofauti hii. Matokeo, bila shaka, itakuwa kamba "Hii ni". Mfano huu wakati huo huo ulionyesha mchanganyiko wa kazi kadhaa.

Kunakili (kuchimba) sehemu ya mfuatano

Kazi nyingine muhimu ni kunakili sehemu ya kamba. Kwa mfano, kutoa maneno ya kibinafsi kutoka kwa maandishi. Unaweza kuchagua kipande cha mstari kwa kuondoa sehemu zisizohitajika, lakini njia hii haifai. Copy() kazi hukuruhusu kunakili sehemu maalum kutoka kwa kamba. Kazi inachukua vigezo 3: maandishi (kamba) ambayo kunakili, nambari ya tabia ambayo kunakili na idadi ya wahusika wa kunakili. Matokeo ya kazi itakuwa kipande cha kamba.

Mfano: tuseme unataka kuchagua neno la kwanza kutoka kwa sentensi (maneno yametenganishwa na nafasi). Kwenye fomu tutaweka Edit1 (TEdit), ambayo sentensi itaingizwa. Operesheni itafanywa kwa kubonyeza kitufe. Tuna:

Katika kesi hii, kipande kutoka mwanzo hadi nafasi ya kwanza kinakiliwa kutoka kwa kamba. Idadi ya wahusika inachukuliwa kuwa moja chini, kwa sababu vinginevyo nafasi pia itanakiliwa.

Kuingiza kamba ndogo kwenye mfuatano

Ikiwa ungependa kuingiza mfuatano mwingine kwenye mfuatano uliopo, unaweza kutumia utaratibu wa Insert(). Parameta ya kwanza ni mstari wa kuingizwa, pili ni kutofautiana iliyo na mstari ambapo unataka kuingiza, ya tatu ni nafasi (nambari ya tabia) kuanzia ambayo mstari utaingizwa. Mfano:

utaratibu TForm2.Button1Click(Mtumaji: TObject); var S: Kamba; anza S:="1234567890"; Ingiza("000",S,3); ShowMessage(S) mwisho;

Katika kesi hii, matokeo yatakuwa kamba "1200034567890".

Mfano "zito zaidi".

Mifano hapo juu inaonyesha tu kanuni ya kufanya kazi na mifuatano kwa kutumia Length(), Pos(), Futa() na Copy() kazi. Sasa hebu tutatue tatizo ngumu zaidi, ambalo litahitaji matumizi ya pamoja ya kazi hizi.

Kazi: vunja maandishi yaliyoingia kwenye uwanja wa Memo kwa maneno na uwaonyeshe kwenye OrodhaBox, moja kwa kila mstari. Maneno hutenganishwa kutoka kwa kila mmoja kwa nafasi, vipindi, koma, alama za mshangao na alama za kuuliza. Kwa kuongeza, onyesha jumla ya idadi ya maneno katika maandishi na mrefu zaidi ya maneno haya.

Hiyo ni kweli ... Kazi sio rahisi hata kidogo. Kwanza, unapaswa kutambua mara moja kwamba unahitaji kutumia loops. Hakuna njia bila wao, kwa sababu hatujui ni maandishi gani yatahamishiwa kwenye programu ya usindikaji. Pili, maneno yanatenganishwa na alama tofauti - hii inaleta shida zaidi. Naam, twende kwa utaratibu.

Kiolesura: Memo1 (TMemo), Button1 (TButton), ListBox1 (TListBox), Label1, Label2 (TLabel).

Kwanza, hebu tuhamishe maandishi yaliyoingizwa kwenye kigezo. Ili kuchukua maandishi yote kutoka kwa Memo mara moja, hebu tugeukie kipengele cha Lines.Text:

var Maandishi: kamba; anza Nakala:=Memo1.Lines.Text; mwisho;

Sasa hebu tuendelee kwenye usindikaji. Jambo la kwanza unahitaji kufanya ni kukabiliana na wahusika wa delimiter. Ukweli ni kwamba alama hizo zinaweza kuja kwa urahisi mfululizo, kwa sababu baada ya koma, vipindi na wahusika wengine kuna nafasi. Unaweza kuzunguka ugumu huu kwa njia hii rahisi: badala ya wahusika wote wanaotenganisha na moja, kwa mfano, comma. Ili kufanya hivyo, hebu tuende kupitia wahusika wote na kufanya uingizwaji muhimu. Kuamua ikiwa herufi ni kitenganishi, tunaandika vikomo vyote katika muundo tofauti wa kamba (mara kwa mara), na kisha utafute kila herufi kwenye mfuatano huu kwa kutumia Pos() kazi. Ubadilishaji huu wote utafanywa kwa kutofautisha ili maandishi asilia kwenye Memo (yaani kwenye skrini) yasiathiriwe. Hata hivyo, ili kuangalia matokeo ya kati ya kazi, ni mantiki kutoa maandishi yaliyosindika mahali fulani. Kwa mfano, kwa uwanja mwingine wa Memo. Ili kupitia wahusika wote, tutatumia kitanzi cha FOR, ambapo kutofautiana kutapitia nambari za serial za wahusika wote, i.e. kutoka 1 hadi urefu wa mstari wa maandishi:

utaratibu TForm1.Button1Click(Mtumaji: TObject); const DelSym = ".,!?"; var Maandishi: kamba; i: nambari kamili; ikiwa Pos(Text[i],DelSym) > 0 basi Maandishi[i]:=","; Memo2.Nakala:=Maandishi; mwisho;

Sasa tunahitaji kuondokana na kuingiliwa. Kwanza, tabia ya kwanza haipaswi kuwa delimiter, i.e. ikiwa herufi ya kwanza ni koma, lazima iondolewe. Ifuatayo, ikiwa kuna koma kadhaa mfululizo, zinahitaji kubadilishwa na moja. Hatimaye, ili kuchakata maandishi yote kwa usahihi, herufi ya mwisho lazima iwe koma.

ikiwa Nakala = "," kisha Futa (Nakala,1,1); huku Pos(",",Nakala) > ikiwa Nakala<>"," basi Maandishi:=Nakala+",";

Hapa uingizwaji unafanywa kama ifuatavyo: mzunguko unapangwa ambapo moja ya koma hufutwa, lakini hii hutokea mradi tu kuna koma mbili mfululizo katika maandishi.

Kweli, sasa hakuna kitu cha ziada kilichobaki katika maandishi - maneno tu yaliyotengwa na koma. Kwanza, tutahakikisha kwamba programu inachukua neno la kwanza kutoka kwa maandishi. Ili kufanya hivyo, tutapata comma ya kwanza, nakala ya neno kutoka mwanzo wa maandishi hadi comma hii, na kisha ufute neno hili kutoka kwa maandishi pamoja na comma. Ufutaji huo unafanywa ili uweze kisha, baada ya kufanya operesheni sawa, kukata neno linalofuata.

var Neno: kamba; (...)

Sasa katika kutofautisha kwa Neno tuna neno kutoka kwa maandishi, na katika maandishi ya maandishi tunayo maandishi mengine. Neno lililokatwa sasa linaongezwa kwa ListBox kwa kupiga ListBox.Items.Add(line_to_add).

Sasa tunahitaji kupanga kitanzi ambacho kitaturuhusu kukata maneno yote kutoka kwa maandishi, na sio tu ya kwanza. Katika kesi hii, REPEAT inafaa zaidi kuliko WHILE. Hali inapaswa kuwa Urefu (Nakala) = 0, i.e. kumaliza kitanzi wakati maandishi yanakuwa tupu, i.e. tunapokata maneno yote.

kurudia Neno:=Nakili(Maandishi,1,Pos(",",Maandishi)-1); Futa(Maandishi,1,Urefu(Neno)+1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu(Nakala) = 0;

Kwa hivyo, kwa sasa tunayo:

utaratibu TForm1.Button1Click(Mtumaji: TObject); const DelSym = ".,!?"; var Nakala,Neno: kamba; i: nambari kamili; anza Nakala:=Memo1.Lines.Text; kwa i:= 1 hadi Length(Nakala) kufanya ikiwa Pos(Text[i],DelSym) > 0 basi Maandishi[i]:=","; ikiwa Nakala = "," kisha Futa (Nakala,1,1); huku Pos(",",Nakala) > 0 fanya Futa(Nakala,Pos(",",Nakala),1); kurudia Neno:=Nakili(Maandishi,1,Pos(",",Maandishi)-1); Futa(Maandishi,1,Urefu(Neno)+1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu(Nakala) = 0; mwisho;

Ikiwa utaendesha programu sasa, utaona kwamba kila kitu kinafanya kazi vizuri. Isipokuwa kwa jambo moja - baadhi ya mistari tupu ilionekana mwishoni mwa Orodha ya Orodha ... Swali linatokea: walitoka wapi? Utajifunza kuhusu hili katika sehemu inayofuata ya somo, lakini kwa sasa hebu tutekeleze kile kinachohitajika hadi mwisho.

Ni rahisi sana kuamua idadi ya maneno katika maandishi - huna haja ya kuandika chochote tena. Kwa sababu Tuna maneno yaliyoorodheshwa katika OrodhaBox; inatosha kujua kwa urahisi ni mistari mingapi - ListBox.Items.Count.

Sasa unahitaji kupata neno refu zaidi la maneno yote. Algorithm ya kupata nambari ya juu ni kama ifuatavyo: tunachukua nambari ya kwanza kama ya juu. Kisha tunaangalia nambari zingine zote kwa njia hii: ikiwa nambari ni kubwa kuliko ile iliyoandikwa sasa kama kiwango cha juu, tunafanya nambari hii kuwa ya juu zaidi. Kwa upande wetu, tunahitaji kutafuta urefu wa juu wa neno. Ili kufanya hivyo, unaweza kuongeza msimbo kwenye kitanzi cha kukata maneno kutoka kwa maandishi au kufanya utafutaji baada ya kuongeza maneno yote kwenye Orodha ya Orodha. Wacha tuifanye kwa njia ya pili: panga kitanzi kupitia mistari ya ListBox. Ikumbukwe kwamba mistari imehesabiwa kutoka sifuri, sio kutoka kwa moja! Tutahifadhi neno refu zaidi katika kigezo tofauti. Inaweza kuonekana kuwa tunahitaji pia kuhifadhi urefu wa juu wa neno ili tuwe na kitu cha kulinganisha na ... Lakini hakuna haja ya kuunda tofauti tofauti kwa hili, kwa sababu tunaweza kujua urefu wa neno kila wakati. kwa kutumia Length() kitendakazi. Kwa hivyo tuseme neno la kwanza ndio refu zaidi ...

Kwa nini ujiunge na ListBox.Items.Count-1, na sio tu hadi Hesabu, tambua mwenyewe :-)

Sasa kila kitu kiko tayari!

utaratibu TForm1.Button1Click(Mtumaji: TObject); const DelSym = ".,!?"; var Maandishi,Neno,Neno refu zaidi: kamba; i: nambari kamili; anza Nakala:=Memo1.Lines.Text; kwa i:= 1 hadi Length(Nakala) kufanya ikiwa Pos(Text[i],DelSym) > 0 basi Maandishi[i]:=","; ikiwa Nakala = "," kisha Futa (Nakala,1,1); huku Pos(",",Nakala) > 0 fanya Futa(Nakala,Pos(",",Nakala),1); Maandishi:=AnsiReplaceText(Text,Chr(13),""); Maandishi:=AnsiReplaceText(Text,Chr(10),""); kurudia Neno:=Nakili(Maandishi,1,Pos(",",Maandishi)-1); Futa(Maandishi,1,Urefu(Neno)+1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu(Nakala) = 0; Label1.Caption:="Idadi ya maneno katika maandishi: "+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Items; kwa i:= 1 hadi ListBox1.Items.Count-1 kufanya ikiwa Urefu(ListBox1.Items[i]) > Urefu(LongestWord) basi LongestWord:=ListBox1.Items[i]; Label2.Caption:="Neno refu zaidi: "+LongestWord+" ("+IntToStr(Length(LongestWord))+" herufi)"; mwisho;

Kufanya kazi na Alama

Kwa kweli, kufanya kazi na alama kunakuja hadi kutumia kazi kuu mbili - Ord() na Chr(). Tayari tumekutana nao. Kazi ya Ord() inarudisha nambari ya herufi maalum, na Chr() kazi, kinyume chake, inarudisha mhusika na nambari maalum.

Je! unakumbuka "Jedwali la Alama"? Hebu tufanye wenyewe!

Matokeo yatafanywa katika TStringGrid. Kijenzi hiki ni jedwali ambapo kila seli ina thamani ya maandishi. Sehemu iko kwenye kichupo cha Ziada (kwa chaguo-msingi huja baada ya Kawaida). Kwanza kabisa, hebu tuweke ishara yetu. Tunahitaji safu mbili tu: kwa moja tutaonyesha msimbo wa ishara, na kwa nyingine - ishara yenyewe. Idadi ya safu wima imewekwa katika sifa iliyo na jina la kimantiki la ColCount. Weka kwa 2. Kwa chaguo-msingi, StringGrid ina safu moja ya kudumu na safu moja ya kudumu (zinaonyeshwa kwa kijivu). Hatuhitaji safu, lakini safu ni muhimu sana, kwa hivyo tunaweka FixedCols = 0, na kuondoka FixedRows = 1.

Kujaza kutafanywa moja kwa moja wakati wa kuanza programu, i.e. Hatutasakinisha vitufe vyovyote. Kwa hivyo, wacha tuunde kidhibiti cha tukio la OnCreate() la fomu.

Idadi ya wahusika katika jedwali la msimbo ni 256, pamoja na kichwa - jumla ya 257. Hebu tuweke idadi ya mistari kwa utaratibu (ingawa unaweza pia kuiweka katika Kikaguzi cha Kitu):

utaratibu TForm1.FormCreate(Mtumaji: TObject); anza StringGrid1.RowCount:=257; mwisho;

Hitimisho hufanywa kwa urahisi sana - kwa kutumia kitanzi. Tunapitia nambari kutoka 0 hadi 255 na kuonyesha ishara inayolingana. Pia tunaonyesha maandishi kwenye kichwa. Seli za StringGrid hufikiwa kwa kutumia sifa ya Seli: Visanduku[safu_nambari, nambari_mlalo]. Nambari za safu wima na safu (kuanzia sifuri) zimeonyeshwa kwenye mabano ya mraba. Thamani ni maandishi.

Hebu tuzindue na tuangalie.

Alama maalum

Ukiangalia kwa makini meza yetu, utaona kwamba alama nyingi zinaonekana kama miraba. Hapana, hizi si aikoni. Hivi ndivyo wahusika ambao hawana onyesho la kuona huonyeshwa. Wale. ishara, kwa mfano, na kanuni 13 ipo, lakini haionekani. Ishara hizi hutumiwa kwa madhumuni ya ziada. Kwa mfano, herufi #0 (yaani, mhusika aliye na msimbo 0) mara nyingi hutumiwa kuonyesha kutokuwepo kwa mhusika. Pia kuna mifuatano inayoitwa null-terminated - hizi ni nyuzi zinazoishia na herufi #0. Kamba kama hizo hutumiwa katika lugha ya C.
Vibonye vya ufunguo vinaweza kutambuliwa kwa misimbo. Kwa mfano, kitufe cha Ingiza kina msimbo wa 13, Escape - 27, Space - 32, Tab - 9, nk.

Wacha tuongeze kwenye programu yetu uwezo wa kujua nambari ya ufunguo wowote. Ili kufanya hivyo, tutachakata tukio la fomu ya OnKeyPress(). Ili utaratibu huu ufanye kazi, lazima uweke Muhtasari Mkuu wa fomu = Kweli.

Hapa tunaonyesha dirisha na maandishi. Tukio lina tofauti ya Ufunguo ambayo huhifadhi herufi inayolingana na kitufe kilichobonyezwa. Kutumia kazi ya Ord (), tunapata msimbo wa tabia hii, na kisha kwa kazi ya IntToStr () tunabadilisha nambari hii kuwa kamba.

Mfano "zito zaidi" - iliendelea

Turudi kwenye mfano wetu. Ni wakati wa kujua ni wapi safu tupu zinatoka kwenye ListBox. Jambo ni kwamba wao si tupu kabisa. Ndio, kwa kuibua ni tupu, lakini kwa kweli kila moja yao ina herufi 2 maalum. Hizi ni herufi zilizo na misimbo 13 na 10 (yaani mstari #13#10). Katika Windows, mlolongo huu wa wahusika hawa wawili wasioonekana unamaanisha mwisho wa mstari wa sasa na mwanzo wa mstari mpya. Wale. Katika faili yoyote na mahali popote kwa ujumla, mapumziko ya mstari ni wahusika wawili. Na maandishi yote, ipasavyo, yanabaki kuwa mlolongo unaoendelea wa wahusika. Wahusika hawa wanaweza (na hata wanapaswa) kutumika katika hali ambapo unahitaji kuingiza mapumziko ya mstari.

Wacha tuchukue programu yetu ya utaftaji wa maneno kwa hitimisho lake la kimantiki. Kwa hiyo, ili kuondokana na mistari tupu, tunahitaji kuondoa wahusika # 13 na # 10 kutoka kwa maandishi. Hii inaweza kufanywa kwa kutumia kitanzi, sawa na jinsi tulivyobadilisha koma mbili na moja:

huku Pos(Chr(13),Text) > 0 kufanya Futa(Maandishi,Pos(Chr(13),Maandishi),1); huku Pos(Chr(10),Text) > 0 kufanya Futa(Maandishi,Pos(Chr(10),Maandishi),1);

Kweli, sasa mpango huo unafanya kazi kikamilifu!

Kazi za ziada za kufanya kazi na masharti - moduli ya StrUtils

Moduli ya nyongeza ya StrUtils.pas ina vitendaji vya ziada vya kufanya kazi na mifuatano. Miongoni mwa kazi hizi kuna nyingi muhimu. Hapa kuna maelezo mafupi ya kazi zinazotumiwa sana:

PosEx(substring, line, indent) - kazi sawa na Pos () kazi, lakini kutafuta kutoka nafasi maalum (yaani indented kutoka mwanzo wa mstari). Kwa mfano, ikiwa unataka kupata nafasi ya pili kwenye kamba, na sio ya kwanza, huwezi kufanya bila kazi hii. Ili kutafuta nafasi ya pili kwa mikono, lazima kwanza ukate sehemu ya kamba asili.

AnsiReplaceStr, AnsiReplaceText(kamba, text_1, text_2) - vitendaji vinabadilisha mfuatano wa maandishi_1 na maandishi_2 kwenye mfuatano. Kazi hutofautiana tu kwa kuwa ya kwanza inachukua uingizwaji kwa kuzingatia kesi ya wahusika, na ya pili - bila hiyo.

Katika programu yetu, tunaweza kutumia vitendaji hivi kukata herufi #13 na #10 kutoka kwa mfuatano kwa kubainisha mfuatano tupu kama maandishi mbadala. Hapa kuna suluhisho katika safu moja ya nambari:

Maandishi:=AnsiReplaceText(AnsiReplaceText(Text,Chr(13)),""),Chr(10),"");

DupeString(kamba, nambari_ya_marudio) - huunda kamba inayojumuisha kamba kwa kurudia idadi maalum ya nyakati.

ReverseString(kamba) - inageuza kamba ("123" -> "321").

Pia inafaa kutaja ni kazi za ubadilishaji wa rejista.

Herufi kubwa(kamba) - hubadilisha kamba kwa kesi ya juu; Herufi ndogo(kamba) - Hugeuza mfuatano kuwa herufi ndogo.

Ili kubadilisha wahusika binafsi, unapaswa kutumia kazi sawa.

Maelezo ya kina kuhusu kila kazi yanaweza kupatikana kwa kuingiza jina lake mahali popote kwenye kihariri cha msimbo, kuweka mshale kwenye jina hili (au kuangazia) na kubonyeza F1.

Picha za skrini za programu zilizoelezwa katika makala

Hitimisho

Lilikuwa somo refu. Kwa hivyo, leo tulifahamiana na kamba na wahusika na tukajifunza jinsi ya kufanya kazi nao. Mbinu zilizojifunza hutumiwa karibu kila mahali. Usiogope kufanya majaribio - boresha ujuzi wako wa kupanga programu peke yako!

Neno "ishara" lina maana nyingi; hasa, ishara katika Adobe Illustrator inaeleweka kama kitu vekta ambayo ni kuhifadhiwa katika palette Alama(Alama) (Mchoro 1), kufunguliwa kwa amri Dirisha=>Alama(Dirisha=>Alama), na imekusudiwa kutumika mara kwa mara. Kufanya kazi na alama ni kukumbusha kwa vitu vya cloning, lakini kwa mtazamo wa kwanza tu, kwa kuwa hizi ni teknolojia tofauti na uwezo tofauti na madhumuni. Kitu pekee cha kawaida ni kwamba ishara yoyote kutoka kwa palette Alama inaweza kuzidishwa mara nyingi.

Miongoni mwa uwezekano wa kufanya kazi na vitu vya mfano katika Adobe Illustrator sio tu uingizaji wa mara kwa mara wa ishara fulani kutoka kwa palette. Alama, lakini pia manipulations mbalimbali nayo. Alama zinaweza kunyunyiziwa kama rangi ya dawa, kupanuliwa, kupunguzwa na kuzungushwa, mpangilio wa alama katika kikundi, msongamano wa vitu vya ishara, kiwango cha uwazi na kivuli, nk. Kwa madhumuni haya, programu ina kundi la zana maalum za ishara Chombo cha Alama, ambayo inajumuisha zana Kinyunyizio cha Alama(Mnyunyizio wa Tabia), Shifter ya Alama(Mabadiliko ya tabia), Scruncher ya Alama((Uzito wa kitu), Ukubwa wa Alama(Ukubwa wa wahusika), Spinner ya Alama(Mzunguko wa wahusika), Alama ya Stainer(Toning ya Tabia), Kichunguzi cha Alama(Uwazi wa Tabia) na Mtindo wa Alama(Stylization ya tabia) (Mchoro 2). Na nini muhimu zaidi ni kwamba kwa kubadilisha ishara, ikiwa ni lazima, unaweza kusasisha mara moja nakala zake zote kwenye picha iliyoundwa; na haijalishi mabadiliko uliyofanya yalikuwa muhimu kiasi gani.

Inafaa kumbuka kuwa utumiaji wa vitu vya mfano kwenye picha una faida nyingi: kwa sababu ya ukweli kwamba alama zinawakilisha vitu sawa na kila mmoja (hii inamaanisha kuwa kila kitu kwenye picha kinarejelea sampuli yake ya asili ya ishara), jumla ya kiasi cha picha. picha imepunguzwa, ambayo ni muhimu kama wakati wa kuunda picha za wavuti, na vile vile wakati wa kuunda uhuishaji, picha za katuni, nk. Kwa kuongeza, kufanya kazi na picha hurahisishwa kwa kiasi kikubwa, kwa kuwa mabadiliko yoyote ya ishara kwenye palette ya Alama husababisha moja kwa moja. uhariri unaoendana wa vitu vyote vya picha vilivyojengwa kwa msingi wake kwenye picha, ambayo ni muhimu huharakisha maendeleo. Mwisho ni muhimu hasa kwa wabunifu wanaohusika katika maendeleo ya vitu vya katuni - ramani, michoro na michoro iliyo na idadi kubwa ya vipengele sawa vinavyofanya jukumu la alama. Hii huwaokoa wabunifu kutokana na shughuli za kunakili na kubandika mara kwa mara, pamoja na uhariri wa mwongozo wa kila herufi ya aina moja. Kitaalam, mchakato mzima wa kuendeleza, kwa mfano, ramani ni rahisi sana, na idadi ya hatua muhimu imepunguzwa. Matokeo yake, ili kuunda picha ya katuni, inatosha kuweka vitu vya alama katika maeneo sahihi, na sifa zao nyingine zote zinaweza kusanidiwa baadaye, na wakati huo huo kwa vipengele vyote vya aina moja vinavyohusika katika picha.

Alama zinazotolewa ziko katika maktaba kadhaa (ingawa idadi yao jumla si kubwa (Mchoro 3)), na ufikiaji wa maktaba inayohitajika unaweza kupatikana kwa kutumia amri. Dirisha=>Maktaba ya Alama(Dirisha=>Maktaba ya Alama). Idadi ya alama inaweza kuongezeka mara nyingi, wote kwa kupakua alama zinazohitajika kwa kazi kutoka kwenye mtandao, na kwa kuunda alama mpya kwa mikono yako mwenyewe. Kwa kweli, kitu chochote, kikundi cha vitu, au picha nzima inaweza kuhifadhiwa kama ishara, iwe ni pamoja na vipengele vilivyochorwa, maandishi, picha zilizopachikwa, au mchanganyiko wa vipengele hivi. Hii ni rahisi sana, kwani hukuruhusu kupanua maktaba yako. Alama vipengele vya picha ambavyo hutumiwa mara kwa mara katika maendeleo maalum.

Kufanya kazi na alama za kibinafsi kwenye paji la Alama

Kuweka herufi binafsi kwenye hati

Kwa mfano, fikiria hali rahisi wakati algorithm fulani inahitaji kuwakilishwa kwa namna ya mchoro. Unda hati mpya na ufungue maktaba ya ishara Chati kwa kutumia amri Dirisha=>Maktaba ya Alama=>Chati(Dirisha=>Maktaba ya Alama=>Ramani). Kisha buruta kwa mtiririko alama zinazohitajika kutoka kwa paji la alama hadi kwenye mchoro ulioundwa na uziweke kama unavyotaka. Kuna njia nyingine ya kuhamisha ishara kwenye picha - unaweza kuchagua ishara na bonyeza kitufe Weka Mfano wa Alama(Weka Mfano wa Alama) ubao Alama, ambayo itasababisha mfano mmoja wa ishara kuonekana katikati ya picha. Kisha ishara iliyoingizwa inaweza kuhamishwa kwa njia ile ile, baada ya kuichagua kwanza na chombo Uteuzi(Kuangazia) au Uchaguzi wa moja kwa moja(Uteuzi wa sehemu).

Mwishoni mwa kazi, ili kufikia ulinganifu fulani wa vipengele vya mzunguko, utahitaji kuchagua sequentially na chombo cha Uchaguzi wa moja kwa moja wakati unashikilia ufunguo. Shift alama hizo ambazo zinahitaji kuwekwa katikati ya hati, ama kwa usawa au kwa wima, na ubofye vifungo vya palette vinavyolingana. Pangilia(Mpangilio). Matokeo yake yanaweza kufanana na mchele. 4.

Ikiwa saizi za vitu vingine hazikufaa, basi zinaweza kubadilishwa kwa urahisi kwa kuchagua kitu maalum cha mfano na zana. Uteuzi, ambayo itaingiza moja kwa moja kitu kwenye chombo cha dimensional, na kurekebisha ukubwa kwa njia ya kawaida - kwa kuvuta moja ya alama za chombo (Mchoro 5).

Ikiwa unahitaji kubadilisha muundo wa alama zote au baadhi tu, njia rahisi ni kutumia moja ya mitindo iliyojengwa. Ili kufanya hivyo, chagua vitu vya kuhaririwa na chombo Uteuzi(Mchoro 6) na ubofye mtindo unaofaa katika palette Mitindo(Mitindo) katika mfano huu mtindo ulichaguliwa Goo la Bluu(Mchoro 7).

Ikiwa hakuna mtindo wowote wa kubuni unaofaa kwako katika hali hii, basi utahitaji kuvunja uhusiano na vipengele vya mfano vya palette. Alama, kuchagua vitu vya picha na zana Uteuzi na kubofya kitufe Vunja Kiungo cha Alama Alama. Kuonekana kwa eneo lililochaguliwa litabadilika mara moja: alama zitafungwa kwenye vyombo vikubwa na kugeuka kuwa vitu vya kawaida vya vector (Mchoro 8). Hii itamaanisha kwamba unaweza kubadilisha vipengele vya kujaza na mpaka wa kipengele chochote, kwa mfano kwa kuweka kujaza gradient, na kufanya mabadiliko mengine yoyote pamoja nao (Mchoro 9).

Mchele. 8. Kubadilisha asili ya uteuzi wa vipengele vya mzunguko baada ya kuvunja uhusiano

Kunakili herufi kwenye hati

Vipengee vya herufi ni rahisi kunakili kama vitu vya kawaida vya vekta kwa kubonyeza kitufe tu Alt. Kwa mfano, buruta alama yoyote kutoka kwa palette Alama kwa karatasi. Ikiwa ni lazima, rekebisha ukubwa wake na bonyeza kitufe Alt mara kwa mara, kuanza kurudia kwa kusonga panya huku ukishikilia kifungo cha kushoto (Mchoro 10).

Kuhariri herufi za kibinafsi kwenye hati

Vipengee vya ishara vilivyopachikwa kwenye picha vinaweza kubadilishwa (kubadilishwa ukubwa, kuzungushwa, kuonyeshwa, n.k.), kama vile vitu vya kawaida vya vekta, na kupangiliwa kwa kutumia vitufe vya palette. Pangilia(Alignment), mabadiliko ya uwazi na kuchanganya mode katika palette Uwazi(Uwazi) (Kielelezo 11 na 12) na kupamba kwa mitindo mbalimbali kutoka kwa palette Mitindo(Mitindo).

Mchele. 12. Matokeo ya kuanzisha mfululizo wa alama katika picha mbaya na mabadiliko yao ya baadaye, kubadilisha kiwango cha uwazi na hali ya kuchanganya.

Shukrani kwa uwepo wa zana maalum za ishara kutoka kwa kikundi Chombo cha Alama Unaweza kuhariri herufi za kibinafsi kwa njia tofauti kabisa; katika hali zingine hii inageuka kuwa rahisi zaidi kuliko, kwa mfano, chaguzi za mabadiliko ya kawaida. Kutathmini uwezo wa zana kutoka kwa kikundi Chombo cha Alama, wacha tujaribu nao kidogo kwa kutumia mfano wa kuunda picha mpya. Kwanza, hebu tuondoke kwenye palette Alama ishara ya moto (Mchoro 13). Washa chombo kwenye palette ya zana Ukubwa wa Alama(Ukubwa wa wahusika) na bofya kwenye ishara iliyoingia mara kadhaa mpaka ukubwa wa picha inakuwa kubwa ya kutosha (Mchoro 14). Baadhi ya faida ya maombi Ukubwa wa Alama ikilinganishwa na uteuzi wa kawaida wa kitu na chombo Chaguo na kurekebisha ukubwa unaofuata kwa kusogeza sehemu za mpaka za kontena lenye mwelekeo ni kwamba kurekebisha ukubwa sawia hakuna haja ya kushikilia ufunguo. Shift, kwani kwa chaguo-msingi zana imesanidiwa kurekebisha ukubwa sawia.

Baada ya hayo, chukua chombo Shifter ya Alama(Alama za Shift) na buruta ishara kwenye kona ya chini ya kulia (Mchoro 15). Kutumia chombo Spinner ya Alama(Zungusha alama) zungusha kidogo kitu cha alama (Mchoro 16), ongeza ishara nyingine kutoka kwa maktaba ya ishara hadi mbele. Asili, kufungua ambayo tumia amri Dirisha=>Maktaba ya Alama=>Asili(Dirisha=>Maktaba ya Alama=>Asili) (Kielelezo 17). Kisha tutabadilisha tonality ya rangi ya ishara ya moto na chombo Alama ya Stainer(Toning herufi) kufanya hivyo, chagua tabia na chombo Chaguo, weka rangi inayofaa kwenye dirisha Jaza(Jaza) na ubonyeze kwenye ishara. Kama matokeo, muonekano wa picha utabadilika mara moja: mabadiliko ya rangi yatahifadhiwa, lakini tonality yao itakuwa tofauti, ikikaribia rangi iliyoainishwa kwenye dirisha. Jaza(Mchoro 18). Tafadhali kumbuka kuwa kwa kutumia zana za mfano unaweza kubadilisha tonality, lakini sio rangi ya kujaza au mpaka wa vitu vya mfano, mwisho unawezekana tu baada ya kuvunja uhusiano kati ya ishara kwenye palette. Alama na nakala yake kwenye picha (amri Vunja Kiungo cha Alama Vunja unganisho na ishara).

Hatimaye, hebu tupunguze kidogo uwazi wa ishara ya moto. Ili kufanya hivyo, chagua ishara na uchague chombo Kichunguzi cha Alama(Uwazi wa Tabia) na ubadilishe vigezo vyake kwanza, kwani kwa chaguo-msingi hupunguza sana uwazi. Bonyeza mara mbili kwenye chombo Kichunguzi cha Alama na kupunguza ukubwa wa athari za zana kwa kupunguza thamani kwenye uwanja Uzito(Intensiteten) kutoka 8, kwa mfano, hadi 2 (Mchoro 19). Hebu tubofye ishara ya moto, na matokeo yanaweza kufanana na picha. 20.

Sasa hebu tugeuze picha kwenye kuchora penseli kwa kubadilisha stylization ya vitu kwa kutumia chombo Mtindo wa Alama(Mtindo wa wahusika). Chagua herufi zote mbili ukitumia zana Uteuzi, washa chombo Mtindo wa Alama, na kisha uamsha mtindo uliotaka katika mfano huu, mtindo ulichaguliwa 1-pt Kiharusi cha Nje(Mchoro 21).

Mchele. 21. Mchoro wa penseli unaoundwa kwa misingi ya vitu vya mfano

Kuunda Alama Mpya

Kama ilivyobainishwa, alama zinaweza kuundwa kutoka kwa kitu chochote kinachotumiwa katika Adobe Illustrator, ikiwa ni pamoja na njia rahisi na mchanganyiko, vitu vya maandishi, picha za pikseli zilizoagizwa, meshes za upinde rangi na vikundi vya vitu, pamoja na alama zenyewe.

Kuunda ishara mpya kutoka kwa kitu changamano na kujaza gradient

Hebu sema tayari una kitu cha vector kwa namna ya kifungo na mesh ya gradient (Mchoro 22). Ili kuunda ishara kulingana na hiyo na kuiweka kwenye palette Alama, unahitaji kuchagua kitu na chombo Uteuzi na uiburute kwa palette au ubofye kitufe Alama Mpya(Alama mpya) kwenye paji Alama(Mchoro 23). Kwa njia hiyo hiyo, tutaunda picha nyingine inayofanana - kifungo sawa, lakini kijani (tutahitaji alama zote mbili katika kazi zaidi) (Mchoro 24). Ikiwa inahitajika kwa ishara hii wakati huo huo kuwa ishara kwenye picha, ambayo ni, ili unganisho utoke kati ya ishara na kitu kinacholingana kwenye picha, basi wakati wa kuvuta, lazima ushikilie ufunguo. Shift.

Mchele. 22. Picha asili (kitufe na palette ya Tabaka zinazolingana)

Ni sawa ikiwa ishara iliyowekwa kwenye paji haifaulu - ni rahisi kuiondoa kwa kuichagua kwenye paji. Alama na kubofya kitufe Futa Alama(Futa ishara) ya palette hii.

Tafadhali kumbuka kuwa unapofungua au kuunda picha mpya, palette inayofungua Alama itakuwa na mwonekano wake wa asili, yaani, alama mpya zilizoundwa hazitakuwapo. Kwa hiyo, ni muhimu kuokoa picha na alama mpya katika palette kwa njia ya kawaida kwa kutumia amri Faili=>Hifadhi(Faili=>Hifadhi) na kiendelezi cha *ai. Baada ya hayo, palette iliyohifadhiwa inaweza kufunguliwa kama maktaba inayolingana na kutumika katika kazi yako.

Sasa hebu tujaribu kutumia ishara iliyoundwa kwa kutumia mfano wa kutoa picha ya katuni. Fungua ramani ya awali (Mchoro 25), ambayo unahitaji kuongeza maeneo ya miji na resorts kwa namna ya icons maalum. Hebu tufungue palette Alama na amri ya alama mpya iliyoundwa Dirisha=>Maktaba ya Alama=>Maktaba Nyingine(Dirisha=>Maktaba ya Alama=>Maktaba Zingine), na kisha uweke vitufe vya samawati kwa mpangilio katika maeneo ya miji (Mchoro 26), vifungo vya kijani kwenye vituo vya mapumziko (Mchoro 27).

Mchele. 27. Muonekano wa mwisho wa picha iliyoundwa ya katuni yenye miji na vituo vya mapumziko

Ikiwa umeunda picha ambayo ina nakala nyingi za alama na unataka kubadilisha baadhi yao, kwa mfano, kupunguza uwazi wa baadhi ya alama (zitalingana na hoteli za gharama nafuu), basi hatua hii inafanywa kwa hatua mbili. . Kwanza unahitaji kuchagua kwenye picha na chombo Uchaguzi wa moja kwa moja vitu vya herufi vinavyoweza kuhaririwa na kisha kupunguza uwazi wao kwenye ubao Uwazi(Mchoro 28). Kwa njia hiyo hiyo, unaweza kubadilisha ukubwa wa vipengele vya tabia kwa kupiga amri Badilisha=>Kipimo(Mabadiliko=>Ukubwa) kutoka kwa menyu ibukizi (Kielelezo 29), na idadi ya vigezo vingine. Ikiwa mabadiliko makubwa zaidi yanahitajika, kwa mfano kubadilisha kujaza, itabidi kwanza ugeuze ishara kuwa kitu cha vekta na kisha tu kuihariri.

Mchele. 28. Matokeo ya kubadilisha wakati huo huo uwazi wa vitu kadhaa vya ishara (picha na palette ya Uwazi)

Mchele. 29. Matokeo ya kubadilisha ukubwa kwa wakati mmoja wa vitu kadhaa vya ishara (picha na dirisha la Mizani)

Kuunda ishara mpya kwa kutumia mpito wa Mchanganyiko

Sasa hebu tuangalie chaguo ngumu zaidi. Tuseme kazi yetu ni kuunda maelekezo ya kuendesha gari kwa ramani, kwa mfano, kwa ofisi ya kampuni (leo ramani zinazofanana zinapatikana kwenye mtandao kwenye tovuti nyingi). Ikiwa, wakati wa kuandaa ramani kama hiyo, utofauti wa usanifu hauzingatiwi, na majengo yote yanaonyeshwa kwa namna ya majengo ya kawaida ya stylized, basi kwa msaada wa vitu vya mfano katika mpango wa Adobe Illustrator hii inaweza kupatikana haraka sana. .

Ili kuunda jengo la kawaida, tutaunda njia mbili za vector za mstatili na kuziunganisha kwa kutumia mpito wa Mchanganyiko, kuweka chaguo. Rangi Laini(Mpito wa rangi laini) (Mchoro 30), matokeo yatakuwa parallelepiped, ambayo itaonyesha jengo hilo. Kisha tutaongeza madirisha kwake, na kwa kuzingatia kwamba tutalazimika kuteka madirisha mengi, itakuwa rahisi kwanza kuunda ishara inayolingana na kuiweka kwenye palette. Alama(Mchoro 31). Baada ya hayo, tutaongeza madirisha kwenye jengo la stylized kwa kuvuta tu ishara ya dirisha kwenye jengo (Mchoro 32).

Kama ilivyoelezwa tayari, ramani iliyopendekezwa ya schematic itakuwa na majengo yanayofanana kabisa, kwa sababu ambayo jengo lililoundwa linapaswa kuokolewa kama ishara kwenye palette. Alama, baada ya kuichagua hapo awali na zana Uteuzi(Mchoro 33). Baada ya hayo, kuanza kuunda ramani haitakuwa ngumu tena; itakuwa ya kutosha kuingiza alama za nyumba kwenye sehemu muhimu za ramani, kuzipanga kulingana na kituo (kifungo). Pangilia Wima Katikati palettes Pangilia) na jamaa kwa kila mmoja (vifungo Kituo cha Usambazaji Wima Na Kituo cha Usambazaji cha Mlalo palettes Pangilia), ongeza nambari kwa nyumba, na uunda mitaa na maeneo ya kijani kati yao. Labda, mwanzoni mwa kazi, ramani ya mpangilio itaonekana kitu kama ile iliyo kwenye Mtini. 34.

Kuunda ishara mpya kutoka kwa brashi

Katika hatua inayofuata ya kuunda mchoro, unahitaji kuonyesha njia ya ofisi, ambayo inafanywa kwa urahisi zaidi kwa kutumia mishale. Unaweza tu kuunda muhtasari wa njia kama hiyo na kuitengeneza kwa brashi inayofaa kwa namna ya mshale, lakini chaguo hili lina "buts" mbili: kwanza, njia mara nyingi huonekana kuwa haifanyiki (haswa, lazima uruke majina ya mitaani. , nk), kama matokeo ambayo utahitaji kuunda mtaro kadhaa na, wakati wa kuunda kila contour, rekebisha mipangilio ya brashi, ambayo haifai, na pili, inawezekana kabisa kwamba hutaki kutumia moja kwa moja. brashi yenye umbo la mshale, kwani contour iliyoundwa kwa msaada wake haitavutia vya kutosha.

Unaweza, bila shaka, kuunda mpya kulingana na brashi inayofaa, lakini kuna njia nyingine, ambayo ni ya haraka na rahisi zaidi: unda ishara maalum kulingana na brashi yenye umbo la mshale na uihariri kwa kupenda kwako. Hebu tuangalie chaguo hili kwa undani: kutoka kwa maktaba ya brashi, fungua palette Sampuli ya Mshale kwa kutumia amri Dirisha=>Maktaba ya Brashi=>Sampuli ya Kishale(Dirisha=>Maktaba ya Alama=>Miundo ya Mishale), chagua brashi inayofaa (katika kesi hii, brashi ya Kishale 144 inatumiwa) na uunda kipande cha mshale (Kielelezo 35). Buruta kwa palette Alama wakati ufunguo unasisitizwa Shift ili muundo kwenye picha ugeuke kiotomati kuwa ishara hii itakuwa ishara ya muda " Mshale" Kisha kupunguza ukubwa wake kwa njia ya kawaida, kuvunja uhusiano na palette Alama kwa kubofya kitufe Vunja Kiungo cha Alama(Kuvunja uhusiano na ishara) iko chini ya palette Alama, na kuongeza, kwa mfano, mpaka kwa mshale (unaweza pia kutumia kitu cha kuvutia zaidi - tumia chujio kinachofaa, unda mpito wa Mchanganyiko, nk). Baada ya hayo, buruta tena kwenye palette Alama, na ufute ishara ya muda ya "Mshale" kwa kuichagua na kubofya kitufe Futa Alama(Futa ishara) ya palette hii (Mchoro 36). Mwishowe, chora njia kuelekea ofisini kwa kutumia ishara uliyounda hivi punde " Mshale" Usisahau kwamba itakuwa haraka kuzidisha alama sio kwa kuzivuta mara kwa mara kutoka kwa palette Alama, na kwa kusogeza alama kwenye picha huku ukibonyeza kitufe Alt. Inawezekana kwamba mwisho picha itachukua fomu iliyoonyeshwa kwenye Mtini. 37.

Ubadilishaji otomatiki wa wahusika kwenye mchoro

Ikiwa picha iliyoundwa tayari hutumia alama fulani (kutoka kwa zile zilizojumuishwa kwenye uwasilishaji au iliyoundwa kwa mikono) na wakati wa kazi zinageuka kuwa zingine zinahitaji kubadilishwa na zingine zinazopatikana kwenye palette. Alama, basi hatua hii itachukua suala la sekunde. Ili kufanya hivyo, katika Mtini. 27 chagua kwa zana Uchaguzi wa moja kwa moja herufi zinazoweza kubadilishwa, kwenye paji Alama s chagua ishara unayotaka kubadilisha na uchague Badilisha amri kutoka kwa menyu ya palette Alama(Badilisha ishara) (Mchoro 38) alama zote zilizochaguliwa zitabadilishwa.

Mchele. 38. Matokeo ya kubadilisha vitu kadhaa vya ishara (picha na palette ya Alama)

Kuhariri alama katika ubao wa Alama

Hebu tuchukue kwamba baadhi ya alama za palette Alama(bila kujali kama ni sehemu ya moja ya maktaba au iliundwa na wewe) inahitaji kubadilishwa kwa kiasi kikubwa. Hii inawezekana tu baada ya uunganisho kuvunjika, kwa hiyo chagua moja ya alama za kifungo ambazo tayari tumeunda na bonyeza kitufe. Vunja Kiungo cha Alama(Kuvunja uhusiano na ishara) iko chini ya palette Alama. Alama itakuwa tena kitu cha kawaida cha vekta, na itakuwa rahisi kuibadilisha. Hebu tubadilishe, kwa mfano, rangi ya kifungo kutoka kijani hadi nyekundu (Mchoro 39).

Mchele. 39. Kibao cha Alama Zilizobadilishwa na alama za vitufe vilivyopachikwa na ishara iliyohaririwa katika mfumo wa kipengee cha vekta (hii inaweza kuonekana kutoka kwa alama za uteuzi)

Ili kuchukua nafasi ya ishara kwenye palette Alama toleo lake lililohaririwa, chagua ishara iliyobadilishwa, uamsha ishara ya asili kwenye palette Alama na kisha kutoka kwa menyu ya palette chagua amri Fafanua Upya Alama(Refine Alama) (Kielelezo 40) Hii itabadilisha ishara katika palette (Mchoro 41). Tafadhali kumbuka kuwa ikiwa ulihariri ishara kwenye picha ambayo ilitumiwa, kwa upande wetu, kwa mfano, katika palette iliyobadilishwa. Alama(tazama Mchoro 27), kisha kufafanua upya ishara kutaongoza moja kwa moja sio tu kwa uingizwaji wake katika palette. Alama, lakini pia kusasisha nakala zake zote kwenye picha (Mchoro 42).

Mchele. 42. Picha ya katuni baada ya kufafanua upya ishara iliyotumiwa hapo awali kuonyesha maeneo ya mapumziko, kwa mujibu wa ubao wa Alama.

Kufanya kazi na Vikundi vya Wahusika

Ikiwa tunazungumza juu ya uwekaji wa wakati mmoja na usindikaji unaofuata wa sio moja, lakini matukio kadhaa ya ishara sawa (yaani, kikundi cha alama), basi zana maalum za ishara zitahitajika. Chombo cha Alama: Kinyunyizio cha Alama(Mnyunyizio wa Tabia), Shifter ya Alama(Mabadiliko ya tabia), Scruncher ya Alama((Uzito wa kitu), Ukubwa wa Alama(Ukubwa wa wahusika), Spinner ya Alama(Mzunguko wa wahusika), Alama ya Stainer(Toning ya Tabia), Kichunguzi cha Alama(Uwazi wa Tabia) na Mtindo wa Alama(Mtindo wa wahusika). Kila chombo katika kikundi hiki kina mipangilio yake, ambayo imefafanuliwa kwenye sanduku la mazungumzo Chaguzi za Zana ya Alama(Chaguo za Zana ya Vitu vya Tabia) kwa kubofya mara mbili.

Vikundi vile vya alama vinawakilisha kitu kimoja (Mchoro 43), na mabadiliko yote yanayofuata yanayowezekana kuhusiana nao: mabadiliko, mabadiliko ya kueneza, rangi, eneo, ukubwa, mzunguko, uwazi na ufunikaji wa mitindo hutumiwa mara moja kwa vipengele vyote vya kikundi.

Kunyunyizia kundi la wahusika

Kwa mfano, hebu tufungue picha (Mchoro 44) na jaribu kunyunyiza theluji za theluji juu yake mfano unaofaa wa theluji unapatikana kwenye maktaba ya ishara. Asili. Ikilinganishwa na saizi ya picha ya asili, sampuli ya theluji ni kubwa sana, kwa hivyo kwanza ingiza mfano wake kwa njia ya kawaida, ukiivuta kutoka kwa palette hadi kwenye mchoro (Mchoro 45). Kisha kuamsha chombo Uteuzi na, bila kutengua theluji, punguza ukubwa wake kwa saizi inayokubalika (Mchoro 46) huku ukibonyeza kitufe. Shift kudumisha uwiano. Buruta alama mpya ya theluji kwenye ubao Alama na uiache hapo kama ishara inayotumika.

Baada ya hayo, chagua chombo Kinyunyizio cha Alama na kupamba picha kwa kunyunyizia vifuniko vya theluji juu ya muundo; sio ngumu, haswa kwani teknolojia ya kufanya kazi nayo Kinyunyizio cha Alama sawa na kufanya kazi na bunduki ya dawa kwenye kifurushi chochote cha picha. Inawezekana kabisa kwamba baadhi ya theluji za theluji zitaisha nje ya picha (Mchoro 47); katika kesi hii, chagua kikundi kizima cha theluji na chombo cha Uteuzi na urekebishe kwa njia ya kawaida (Mchoro 48).

Mchele. 47. Kama matokeo ya kunyunyizia alama kwa chombo cha Symbol Sprayer, baadhi ya vipande vya theluji viliishia nje ya picha.

Ikiwa mipangilio ya zana Kinyunyizio cha Alama haujaridhika (kwa msingi, maadili ya wastani huchukuliwa kwa mipangilio yake yote), basi inaweza kusahihishwa kwa urahisi kwa kubonyeza mara mbili kwenye chombo na kufanya marekebisho sahihi kwenye dirisha. Chaguzi za Zana ya Alama. Hebu tuchukue, kwa mfano, kwamba hatujaridhika na rangi ya theluji za theluji na wiani wa mpangilio wao. Ili kubadilisha rangi, au tuseme kuhakikisha kwamba alama zinaundwa kwa kuzingatia rangi iliyochaguliwa kwenye dirisha Jaza(Jaza), katika orodha Doa(Kuchorea) chaguo itahitaji kusakinishwa Mtumiaji Amefafanuliwa(Mtumiaji amefafanuliwa). Na kuongeza wiani, unapaswa kuongeza thamani ya parameter Msongamano wa Seti ya Alama(Msongamano wa kuweka wahusika), kwa mfano, kama kwenye Mtini. 49. Matokeo yanaweza kufanana na mchele. 50.

Mchele. 50. Baada ya kuunda vitu vya ziada vya mfano, theluji za theluji hutawanywa zaidi mnene na kuwa na kivuli giza kwa mujibu wa rangi iliyowekwa kwenye dirisha la Jaza.

Kati ya mipangilio, unaweza kubadilisha maadili ya vigezo vifuatavyo:

  • Scrunch(Object density) msongamano wa jamaa wa vitu kwa kuzingatia ukubwa wa asili wa ishara;
  • Ukubwa(Ukubwa) ukubwa wa alama zilizopigwa, kwa kuzingatia ukubwa wa ishara ya awali;
  • Spin(Mzunguko) uamuzi wa mzunguko wa wahusika unaozalishwa kwa kuzingatia harakati ya mshale wa panya;
  • Skrini(Uwazi) kwa kuzingatia kiwango cha uwazi wa alama;
  • Mtindo(Mtindo) uamuzi wa muundo wa tabia ya alama, kwa kuzingatia vigezo vya mtindo wa kazi.

Kwa kila moja ya vigezo hivi, mipangilio miwili inawezekana: Wastani(Kati) inaongeza mfano mpya wa ishara na thamani ya wastani ya vigezo, na Mtumiaji Amefafanuliwa(Ufafanuzi wa Mtumiaji) hutoa kizazi cha alama kulingana na mipangilio maalum ya mtumiaji.

Katika shamba Kipenyo(Kipenyo) huweka kipenyo cha mduara wa ushawishi wa chombo, kwenye shamba Uzito(Intensity) huamua kiwango cha mabadiliko katika herufi zinazozalishwa kadri thamani inavyokuwa juu, ndivyo kiwango cha mabadiliko kinavyoongezeka.

Pia, ni bora kufanya kazi na kisanduku cha kuteua kimewashwa Onyesha Ukubwa na Ukali wa Brashi(Onyesha ukubwa wa brashi na ukubwa) katika kesi hii, saizi ya dawa ya ishara huonyeshwa kwenye skrini kwa namna ya duara, ambayo huamua eneo la athari ya chombo.

Kuhariri kikundi cha wahusika

Hebu tuchukue Mtini. kama taswira asili. 51, nyunyiza alama za nyasi kutoka kwa maktaba ya alama katika sehemu yake ya chini Asili na uhariri saizi ya kundi linalotokana la wahusika kwa mujibu wa ukubwa wa picha ya awali (Mchoro 52). Kisha, ili kuongeza msongamano wa vitu katika kundi hili la alama, piga orodha ya zana Scruncher ya Alama(Uzito wa Kitu) kwa kubofya mara mbili kwenye chombo na kuongeza thamani ya parameter Msongamano wa Seti ya Alama(Msongamano wa kuweka wahusika), kwa mfano kama kwenye Mtini. 53. Kisha, bofya kwenye kikundi kilichochaguliwa cha alama, ambacho kitasababisha kuunganishwa kwao (Mchoro 54).

Hebu tumalize picha kwa kunyunyizia makundi machache zaidi ya alama za nyasi, na kuongeza vitu viwili vya mfano kwa namna ya mawe. Wacha tuhamishe mwisho chini ya nyasi kwa hili unahitaji kuchagua kila moja ya vitu, bonyeza-kulia juu yake na uchague amri. Panga=>Tuma Nyuma ( Sogeza=>Sogea nyuma) (Kielelezo 55).

Mchele. 55. Picha baada ya kuongeza makundi kadhaa ya wahusika na wahusika wawili moja

Wacha tufanye nyasi kwenye kona ya chini ya kulia ya picha kuwa nyeusi kwa kutumia zana Alama ya Stainer(Kivuli cha wahusika). Chagua kikundi kinacholingana cha alama na chombo Chaguo, weka rangi ya dirisha kuwa kijani kibichi Jaza(Jaza) na ubofye kikundi cha alama (Mchoro 56) kwa athari kubwa zaidi, unaweza kusonga panya juu ya kikundi cha alama, ambayo itasababisha uwekaji upya wa rangi polepole wa alama. Kama matokeo, alama za nyasi zitabaki, lakini sauti yao ya rangi itabadilika ili kufanana na rangi iliyoainishwa kwenye dirisha. Jaza(Mchoro 57).

Mchele. 56. Athari za zana ya Uchafuzi wa Alama kwenye kundi la alama

Baada ya hayo, punguza nyasi kwenye kona ya juu kushoto. Hii inaweza kufanywa kwa kutumia njia iliyoelezwa hapo juu, ikiwa imeweka rangi ya kijani kibichi kwenye palette, au kwa kubadilisha kiwango cha uwazi wa kikundi kinacholingana cha alama na zana. Kichunguzi cha Alama(Uwazi wa tabia). Wacha tutumie njia ya pili, ambayo ni, chagua kikundi cha alama na ubonyeze kwenye kikundi (au buruta juu yake; inategemea ni alama ngapi na zitaathiriwa kwa kiwango gani) na zana. Kichunguzi cha Alama(Mchoro 58). Inawezekana kwamba baada ya mabadiliko picha itaanza kufanana na Mtini. 59.

Mchele. 58. Athari za zana ya Kichunguzi cha Alama kwenye kundi la alama

Utangulizi

Usindikaji wa maandishi ni mojawapo ya kazi za kawaida za programu. Ikiwa unahitaji kusindika data yoyote ya maandishi, basi huwezi kufanya bila ujuzi wa nyenzo ambazo zitawasilishwa hapa chini. Hasa ikiwa data haikutolewa na wewe binafsi, lakini na programu ya mtu wa tatu au mtu mwingine.

Alama

Tabia ni kitengo kimoja cha maandishi. Hii ni barua, nambari, aina fulani ya ishara. Jedwali la msimbo wa wahusika lina 256 nafasi, i.e. kila mhusika ana yake kanuni ya kipekee kutoka 0 hadi 255. Herufi iliyo na msimbo fulani N iandike hivi: #N. Hivi ndivyo alama zinavyoonyeshwa kwenye nambari ya programu. Kwa kuwa msimbo wa tabia ni nambari isiyozidi 255, ni dhahiri kwamba katika kumbukumbu mhusika huchukua baiti 1. Kama unavyojua, hakuna kipimo chini ya baiti. Kwa usahihi zaidi, ipo - ni kidogo, lakini hatuwezi kufanya kazi na bits katika programu: byte ni kitengo cha chini. Unaweza kutazama jedwali la alama na nambari zao kwa kutumia matumizi ya kawaida " meza ya ishara", pamoja na Windows (njia ya mkato iko kwenye menyu Anza - Programu - Vifaa - Vyombo vya Mfumo) Lakini hivi karibuni tutaandika kitu kama hicho sisi wenyewe.

Kamba

Line, aka maandishi ni seti ya wahusika, mlolongo wao wowote. Ipasavyo, herufi moja pia ni kamba, pia maandishi. Mfuatano wa maandishi una urefu fulani. Urefu wa mfuatano ni idadi ya vibambo vilivyomo. Ikiwa herufi moja inachukua baiti 1, basi mfuatano wa herufi N huchukua ka N.
Kuna majedwali mengine ya msimbo ambayo herufi 1 inawakilishwa sio na byte moja, lakini na mbili. Hii Unicode (Unicode) Jedwali la Unicode lina herufi kutoka lugha zote za ulimwengu. Kwa bahati mbaya, kufanya kazi na Unicode ni ngumu sana na msaada wake ni wa kawaida tu. Delphi haitoi uwezo wa Unicode. Kuna sehemu ya programu, lakini hapa ni vipengele vya kuona - fomu, vifungo, nk. haiwezi kuonyesha maandishi katika umbizo la Unicode. Hebu tumaini kwamba msaada huo utaonekana katika siku za usoni. 2 ka pia inaitwa kwa neno moja (neno) Kwa hivyo jina la aina ya data ya nambari inayolingana - Neno(nambari ambayo inachukua ka 2 kwenye kumbukumbu, maadili kutoka 0 hadi 65535). Idadi ya "seli" kwenye jedwali la Unicode ni 65536 na hii inatosha kuhifadhi lugha zote za ulimwengu. Ikiwa unaamua kuwa "1 byte - 256 maadili, basi 2 byte - 2 * 256 = 512 maadili," nakushauri kukumbuka mfumo wa binary na kanuni ya kuhifadhi data kwenye kompyuta.

Aina za data

Wacha tuendelee moja kwa moja kwenye programu. Kuna aina za data zinazolingana za kufanya kazi na wahusika na kamba:

Char - tabia moja (yaani 1 byte);
Kamba - kamba ya tabia, maandishi (N bytes).

Rasmi, mifuatano inaweza kushikilia herufi 255 pekee, lakini huko Delphi unaweza kuandika mengi zaidi kwa kila mfuatano. Kuna aina maalum za data za kuhifadhi maandishi makubwa na maandishi yenye herufi maalum. AnsiString Na WideString(mwisho, kwa njia, ni mbili-byte, yaani kwa Unicode).

Ili kuweka maadili ya maandishi katika Pascal, tumia nukuu moja(sio mara mbili!). Wale. Unapotaka kugawa thamani kwa utofauti wa kamba, unapaswa kuifanya kama hii:

S:="maandishi" ;

Wahusika wameainishwa kwa njia ile ile, kuna mhusika mmoja tu katika nukuu.

Ikiwa unataka kuweka kikomo kwa urefu wa maandishi yaliyohifadhiwa kwenye utaftaji wa kamba, unaweza kuifanya kama hii:

var s: kamba [10];

Upeo wa urefu wa mstari umeonyeshwa kwenye mabano.

Uendeshaji wa Kamba

Operesheni kuu na masharti ni kuongeza. Kama nambari, mifuatano inaweza kuongezwa. Na ikiwa huwezi kuongeza viti na machungwa kwa idadi, basi unaweza kwenye mistari. Kuongeza kamba ni kuchanganya tu. Mfano:

var s: kamba; ... s :="123" +"456" ; //s = "123456"

Kwa kuwa kila mstari ni mlolongo wa wahusika, kila mhusika ana nambari yake ya mfululizo. Katika Pascal, hesabu ya wahusika katika mistari huanza kutoka 1. I.e. katika mstari " ABC"ishara" A"- kwanza," B"- pili, nk.
Nambari ya serial ya mhusika kwenye mstari haikuvumbuliwa kwa bahati, kwa sababu ni kwa nambari hizi, fahirisi, kwamba vitendo hufanywa kwenye mistari. Unaweza kupata herufi yoyote kutoka kwa mfuatano kwa kubainisha nambari yake katika mabano ya mraba karibu na jina la kutofautisha. Kwa mfano:

var s: kamba; c: sura; ... s :="Hujambo!" ; c:=s[2]; //c = "e"

Baadaye kidogo, tunaposoma safu, itakuwa wazi kuwa kamba ni safu ya wahusika. Hii ina maana ya namna ya kushughulikia alama binafsi.

Usindikaji wa Kamba

Hebu tuendelee kwenye kazi na taratibu za usindikaji wa masharti.

Urefu wa kamba

Urefu wa kamba unaweza kupatikana kwa kutumia kazi Urefu(). Kazi inachukua parameter moja - kamba, na inarudi urefu wake. Mfano:

var Str : Kamba ; L: Nambari kamili; ( ... ) Str :="Hujambo!" ; L:=Urefu(Str); //L = 6

Kutafuta kamba ndogo katika mfuatano

Jukumu la asili ni kupata kamba ndogo katika mfuatano. Wale. shida imeundwa kama ifuatavyo: kuna kamba S1. Amua kutoka kwa nafasi gani kamba inaingia ndani yake S2. Haiwezekani kufikiria usindikaji wowote bila kufanya operesheni hii.
Kwa hivyo, kwa kutafuta vile kuna kazi Pos(). Kazi inachukua vigezo viwili: ya kwanza - kamba ndogo, ambayo inahitaji kupatikana, ya pili - mstari, ambayo unataka kutafuta. Utafutaji unafanywa kwa kuzingatia kesi ya wahusika. Ikiwa chaguo za kukokotoa hupata tukio la mfuatano mdogo katika mfuatano, hurejesha nambari ya nafasi ya utokeaji wake wa kwanza. Ikiwa hakuna ingizo linalopatikana, chaguo la kukokotoa linarudi 0. Mfano:

var Str1, Str2: Kamba; P: Nambari kamili; ( ... ) Str1:="Hi! Unaendeleaje?" ; Str2:="fanya" ; P:=Pos (Str2, Str1); //P = 9

Kuondoa sehemu ya mstari

Unaweza kufuta sehemu ya mstari kwa kutumia utaratibu Futa (). Ikumbukwe kwamba hii ni utaratibu, sio kazi - hufanya vitendo moja kwa moja kwenye kutofautiana ambayo hupitishwa kwake. Kwa hivyo, parameta ya kwanza ni kutofautisha kwa aina ya kamba ambayo kipande kinafutwa (kigeu halisi! Thamani maalum haijawekwa, kwani utaratibu haurudishi matokeo), parameta ya pili ni nambari ya herufi kutoka kwa mhusika. kipande kinahitaji kufutwa, paramu ya tatu ni idadi ya wahusika wa kuondoa. Mfano:

var Str1: Kamba ; ( ... ) Str1:="Hujambo, ulimwengu!" ; Futa (Str1, 6, 7); // Str1 = "Habari!"

Ikumbukwe kwamba ikiwa urefu wa fragment iliyofutwa ni kubwa zaidi kuliko idadi ya wahusika katika mstari, kuanzia nafasi maalum (yaani, "hebu tuende zaidi ya makali"), kazi itafanya kazi kwa kawaida. Kwa hiyo, ikiwa unahitaji kuondoa kipande kutoka kwa kamba kutoka kwa tabia fulani hadi mwisho, huna haja ya kuhesabu idadi ya wahusika hawa. Njia bora itakuwa kuweka urefu wa kamba hii yenyewe.

Hapa kuna mfano. Wacha tuseme unataka kupata herufi ya kwanza " kwenye mfuatano a" na ufute sehemu ya mstari unaofuata. Wacha tuifanye kama ifuatavyo: pata nafasi ya herufi kwenye mstari na kazi. Pos(), na ufute kipande kwa kutumia chaguo la kukokotoa Futa ().

var Str : Kamba ; ( ... ) Str :="Huu ni mtihani." ; Futa (Str ,Pos ("a" ,Str ) ,Length (Str ));

Wacha tujaribu kubadilisha maadili na tuone ni nini kinachopitishwa kwa kazi Futa. Barua ya kwanza" a" katika mstari iko kwenye nafasi ya 9. Urefu wa mstari mzima ni vibambo 15. Hii ina maana kwamba simu ya chaguo la kukokotoa ni kama ifuatavyo: Futa(Str,9,15). Inaweza kuonekana kuwa kutoka kwa herufi " a"kuna wahusika 7 tu hadi mwisho wa mstari ... Lakini kazi itafanya kazi yake, licha ya tofauti hii. Matokeo, bila shaka, itakuwa mstari " Hii ni". Mfano huu kwa wakati mmoja ulionyesha mchanganyiko wa vitendaji kadhaa.

Kunakili (kuchimba) sehemu ya mfuatano

Kazi nyingine muhimu ni kunakili sehemu ya kamba. Kwa mfano, kutoa maneno ya kibinafsi kutoka kwa maandishi. Unaweza kuchagua kipande cha mstari kwa kuondoa sehemu zisizohitajika, lakini njia hii haifai. Kazi Nakili() hukuruhusu kunakili sehemu maalum kutoka kwa kamba. Kazi inachukua vigezo 3: maandishi (kamba) ambayo kunakili, nambari ya tabia ambayo kunakili na idadi ya wahusika wa kunakili. Matokeo ya kazi itakuwa kipande cha kamba.

Mfano: tuseme unahitaji kuchagua neno la kwanza kutoka kwa sentensi (maneno yanatenganishwa na nafasi). Tutaweka kwenye fomu Hariri1 (Thariri) ambamo sentensi itaingizwa. Operesheni itafanywa kwa kubonyeza kitufe. Tuna:

utaratibu TForm1.Button1Bonyeza (Mtumaji: TObject); var s,neno: kamba; anza s:=Hariri1.Nakala ; neno:=Nakili (s,1 ,Pos (" " ,s) -1 ) ; ShowMessage("Neno la kwanza: " +neno) ; mwisho;

Katika kesi hii, kipande kutoka mwanzo hadi nafasi ya kwanza kinakiliwa kutoka kwa kamba. Idadi ya wahusika inachukuliwa kuwa moja chini, kwa sababu vinginevyo nafasi pia itanakiliwa.

Kuingiza kamba ndogo kwenye mfuatano

Ikiwa unataka kuingiza safu nyingine kwenye safu iliyopo, unaweza kutumia utaratibu Ingiza(). Parameta ya kwanza ni mstari wa kuingizwa, pili ni kutofautiana iliyo na mstari ambapo unataka kuingiza, ya tatu ni nafasi (nambari ya tabia) kuanzia ambayo mstari utaingizwa. Mfano:

utaratibu TForm2.Button1Bonyeza (Mtumaji: TObject) ; var S: Kamba; start S:="1234567890" ; Ingiza("000" ,S,3); ShowMessage(S) mwisho ;

Katika kesi hii, matokeo yatakuwa kamba "1200034567890".

Mfano "zito zaidi".

Mifano iliyotolewa hapo juu inaonyesha tu kanuni ya kufanya kazi na kamba kwa kutumia kazi Urefu(), Pos(), Futa () Na Nakili(). Sasa hebu tutatue tatizo ngumu zaidi, ambalo litahitaji matumizi ya pamoja ya kazi hizi.

Kazi: vunja maandishi yaliyoingia kwenye uwanja wa Memo kwa maneno na uwaonyeshe kwenye ListBox, moja kwa kila mstari. Maneno hutenganishwa kutoka kwa kila mmoja kwa nafasi, vipindi, koma, alama za mshangao na alama za kuuliza. Kwa kuongeza, onyesha jumla ya idadi ya maneno katika maandishi na mrefu zaidi ya maneno haya.

Hiyo ni kweli ... Kazi sio rahisi hata kidogo. Kwanza, unapaswa kutambua mara moja kwamba unahitaji kutumia loops. Hakuna njia bila wao, kwa sababu hatujui ni maandishi gani yatahamishiwa kwenye programu ya usindikaji. Pili, maneno yanatenganishwa na alama tofauti - hii inaleta shida zaidi. Naam, twende kwa utaratibu.

Kiolesura: Memo1 (TMemo), Kitufe1 (Kitufe), OrodhaBox1 (TListBox), Lebo1, Lebo2 (TLabel).

Kwanza, hebu tuhamishe maandishi yaliyoingizwa kwenye kigezo. Ili kuchukua maandishi yote kutoka kwa Memo mara moja, wacha tugeuke kwenye mali Mistari.Maandishi:

utaratibu TForm1.Button1Bonyeza (Mtumaji: TObject); var Maandishi: kamba ; anza Nakala:=Memo1.Lines .Nakala ; mwisho;

Sasa hebu tuendelee kwenye usindikaji. Jambo la kwanza unahitaji kufanya ni kukabiliana na wahusika wa delimiter. Ukweli ni kwamba alama hizo zinaweza kuja kwa urahisi mfululizo, kwa sababu baada ya koma, vipindi na wahusika wengine kuna nafasi. Unaweza kuzunguka ugumu huu kwa njia hii rahisi: badala ya wahusika wote wanaotenganisha na moja, kwa mfano, comma. Ili kufanya hivyo, hebu tuende kupitia wahusika wote na kufanya uingizwaji muhimu. Kuamua ikiwa herufi ni kikomo, tunaandika vitenganishi vyote katika muundo tofauti wa kamba (mara kwa mara), na kisha utafute kila herufi kwenye safu hii iliyo na chaguo la kukokotoa. Pos(). Ubadilishaji huu wote utafanywa kwa kutofautisha ili maandishi asilia kwenye Memo (yaani kwenye skrini) yasiathiriwe. Hata hivyo, ili kuangalia matokeo ya kati ya kazi, ni mantiki kutoa maandishi yaliyosindika mahali fulani. Kwa mfano, kwa uwanja mwingine wa Memo. Ili kupitia wahusika wote, tumia kitanzi KWA, ambapo kutofautisha kutapitia nambari za serial za wahusika wote, i.e. kutoka 1 hadi urefu wa mstari wa maandishi:

utaratibu TForm1.Button1Bonyeza (Mtumaji: TObject); const DelSym = ".,!?" ; var Maandishi: kamba ; i: nambari kamili; anza Nakala:=Memo1.Lines .Nakala ; kwa i:= 1 hadi Length (Nakala) fanya ikiwa Pos (Text[ i] ,DelSym) > 0 kisha Text[ i] :="," ; Memo2.Nakala :=Maandishi; mwisho;

Sasa tunahitaji kuondokana na kuingiliwa. Kwanza, tabia ya kwanza haipaswi kuwa delimiter, i.e. ikiwa herufi ya kwanza ni koma, lazima iondolewe. Ifuatayo, ikiwa kuna koma kadhaa mfululizo, zinahitaji kubadilishwa na moja. Hatimaye, ili kuchakata maandishi yote kwa usahihi, herufi ya mwisho lazima iwe koma.

ikiwa Nakala[ 1 ] = "," basi Futa ( Nakala,1 ,1 ) ; huku Pos ("," ,Text) > 0 fanya Futa (Nakala,Pos ("," ,Text) ,1 ; ikiwa Nakala[ Urefu (Nakala)]<>"," kisha Nakala:=Text+"," ;

Hapa uingizwaji unafanywa kama ifuatavyo: mzunguko unapangwa ambapo moja ya koma hufutwa, lakini hii hutokea mradi tu kuna koma mbili mfululizo katika maandishi.

Kweli, sasa hakuna kitu cha ziada kilichobaki katika maandishi - maneno tu yaliyotengwa na koma. Kwanza, tutahakikisha kwamba programu inachukua neno la kwanza kutoka kwa maandishi. Ili kufanya hivyo, tutapata comma ya kwanza, nakala ya neno kutoka mwanzo wa maandishi hadi comma hii, na kisha ufute neno hili kutoka kwa maandishi pamoja na comma. Ufutaji huo unafanywa ili uweze kisha, baada ya kufanya operesheni sawa, kukata neno linalofuata.

var Neno: kamba ; (...) Neno:=Nakili (Nakala,1 ,Pos ("," ,Nakala) -1 ) ; Futa (Maandishi,1 ,Urefu (Neno) +1);

Sasa katika kutofautiana Neno tuna neno kutoka kwa maandishi, na katika kutofautiana Maandishi maandishi mengine. Neno lililokatwa sasa limeongezwa Orodha ya Sanduku, wito Orodha.Vipengee.Ongeza(mstari_wa_kuongeza).

Sasa tunahitaji kupanga kitanzi ambacho kitaturuhusu kukata maneno yote kutoka kwa maandishi, na sio tu ya kwanza. Katika kesi hii itakuwa ya kufaa zaidi RUDIA, vipi WAKATI. Hali inapaswa kuwa Urefu (Maandishi) = 0, i.e. kumaliza kitanzi wakati maandishi yanakuwa tupu, i.e. tunapokata maneno yote.

rudia Neno:=Nakili (Nakala,1 ,Pos ("," ,Nakala) -1 ) ; Futa (Maandishi,1 ,Urefu (Neno) +1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu (Nakala) = 0;

Kwa hivyo, kwa sasa tunayo:

utaratibu TForm1.Button1Bonyeza (Mtumaji: TObject); const DelSym = ".,!?" ; var Nakala,Neno: kamba; i: nambari kamili; anza Nakala:=Memo1.Lines .Nakala ; kwa i:= 1 hadi Length (Nakala) fanya ikiwa Pos (Text[ i] ,DelSym) > 0 kisha Text[ i] :="," ; ikiwa Nakala[ 1 ] = "," basi Futa ( Nakala,1 ,1 ) ; huku Pos ("," ,Text) > 0 fanya Futa (Nakala,Pos ("," ,Text) ,1 ; rudia Neno :=Copy (Nakala,1 ,Pos ("," ,Nakala) -1 ) ; Futa (Maandishi,1 ,Urefu (Neno) +1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu (Nakala) = 0; mwisho;

Ikiwa utaendesha programu sasa, utaona kwamba kila kitu kinafanya kazi vizuri. Isipokuwa kwa jambo moja - baadhi ya mistari tupu ilionekana mwishoni mwa Orodha ya Orodha ... Swali linatokea: walitoka wapi? Utajifunza kuhusu hili katika sehemu inayofuata ya somo, lakini kwa sasa hebu tutekeleze kile kinachohitajika hadi mwisho.

Ni rahisi sana kuamua idadi ya maneno katika maandishi - huna haja ya kuandika chochote tena. Kwa sababu Tunayo maneno yaliyoorodheshwa kwenye OrodhaBox, inatosha tu kujua ni mistari ngapi - Orodha.Vipengee.Hesabu.

Lebo1.Maelezo := "Idadi ya maneno katika maandishi"+IntToStr(ListBox1.Items.Count);

Sasa unahitaji kupata neno refu zaidi la maneno yote. Algorithm ya kupata nambari ya juu ni kama ifuatavyo: tunachukua nambari ya kwanza kama ya juu. Kisha tunaangalia nambari zingine zote kwa njia hii: ikiwa nambari ni kubwa kuliko ile iliyoandikwa sasa kama kiwango cha juu, tunafanya nambari hii kuwa ya juu zaidi. Kwa upande wetu, tunahitaji kutafuta urefu wa juu wa neno. Ili kufanya hivyo, unaweza kuongeza msimbo kwenye kitanzi cha kukata maneno kutoka kwa maandishi au kufanya utafutaji baada ya kuongeza maneno yote kwenye Orodha ya Orodha. Wacha tuifanye kwa njia ya pili: panga kitanzi kupitia mistari ya ListBox. Ikumbukwe kwamba mistari imehesabiwa kutoka sifuri, sio kutoka kwa moja! Tutahifadhi neno refu zaidi katika kigezo tofauti. Inaweza kuonekana kuwa tunahitaji pia kuhifadhi urefu wa juu wa neno ili tuwe na kitu cha kulinganisha na ... Lakini hakuna haja ya kuunda tofauti tofauti kwa hili, kwa sababu tunaweza kujua urefu wa neno kila wakati. kwa kutumia Length() kitendakazi. Kwa hivyo tuseme neno la kwanza ndio refu zaidi ...

var LongestWord: kamba ; (...) LongestWord:=ListBox1.Items [ 0] ; kwa i:= 1 hadi ListBox1.Items .Hesabu -1 fanya kama Urefu (ListBox1.Items [ i] ) > "Neno refu zaidi"+LongestWord+" (" +IntToStr (Urefu (LongestWord) ) +" herufi)" ;

Kwa nini mzunguko mpaka Orodha.Vipengee.Hesabu-1, si mpaka tu Hesabu, fikiria mwenyewe :-)

Sasa kila kitu kiko tayari!

utaratibu TForm1.Button1Bonyeza (Mtumaji: TObject); const DelSym = ".,!?" ; var Text,Neno,LongestWord: string ; i: nambari kamili; anza Nakala:=Memo1.Lines .Nakala ; kwa i:= 1 hadi Length (Nakala) fanya ikiwa Pos (Text[ i] ,DelSym) > 0 kisha Text[ i] :="," ; ikiwa Nakala[ 1 ] = "," basi Futa ( Nakala,1 ,1 ) ; huku Pos ("," ,Text) > 0 fanya Futa (Nakala,Pos ("," ,Text) ,1 ; Maandishi:=AnsiReplaceText(Text,Chr (13) ,"" ) ; Maandishi:=AnsiReplaceText(Text,Chr (10 ) ,"" ) ; rudia Neno :=Copy (Nakala,1 ,Pos ("," ,Nakala) -1 ) ; Futa (Maandishi,1 ,Urefu (Neno) +1); OrodhaBox1.Vipengee.Ongeza(Neno); mpaka Urefu (Nakala) = 0; Lebo1.Maelezo := "Idadi ya maneno katika maandishi"+IntToStr(ListBox1.Items.Count); LongestWord:=ListBox1.Items [ 0] ; kwa i:= 1 hadi ListBox1.Items .Hesabu -1 fanya ikiwa Urefu (ListBox1.Items [ i] ) > Urefu (LongestWord) kisha LongestWord:=ListBox1.Items [ i] ; Lebo2.Maelezo := "Neno refu zaidi"+LongestWord+" (" +IntToStr (Urefu (LongestWord) ) +" herufi)" ; mwisho;

Kufanya kazi na Alama

Kwa kweli, kufanya kazi na alama kunakuja kwa kutumia kazi kuu mbili - Agizo () Na Chr(). Tayari tumekutana nao. Kazi Agizo () inarudisha msimbo wa herufi maalum, na kazi Chr()- kinyume chake, inarudi tabia na kanuni maalum.

Kumbuka" Jedwali la ishara"? Hebu tufanye wenyewe!

Hitimisho linaweza kufanywa ndani TStringGrid. Kijenzi hiki ni jedwali ambapo kila seli ina thamani ya maandishi. Sehemu iko kwenye kichupo Ziada(chaguo-msingi moja kwa moja baada ya Kawaida). Kwanza kabisa, hebu tuweke ishara yetu. Tunahitaji safu mbili tu: kwa moja tutaonyesha msimbo wa ishara, na kwa nyingine - ishara yenyewe. Idadi ya safu wima imewekwa katika sifa iliyo na jina la kimantiki ColCount. Weka sawa na 2. Kwa chaguo-msingi, StringGrid safu moja iliyowekwa na safu moja iliyowekwa imebainishwa (zinaonyeshwa kwa kijivu). Hatuhitaji safu, lakini safu ni muhimu sana, kwa hiyo tunaweka FixedCols= 0, a FixedRows kuondoka = 1.

Kujaza kutafanywa moja kwa moja wakati wa kuanza programu, i.e. Hatutasakinisha vitufe vyovyote. Kwa hivyo, wacha tuunde kidhibiti cha hafla OnCreate() fomu.

Idadi ya wahusika katika jedwali la msimbo ni 256, pamoja na kichwa - jumla ya 257. Hebu tuweke idadi ya mistari kwa utaratibu (ingawa unaweza pia kuiweka katika Kikaguzi cha Kitu):

utaratibu TForm1.FormCreate (Mtumaji: TObject); anza StringGrid1.RowCount :=257 ; mwisho;

Hitimisho hufanywa kwa urahisi sana - kwa kutumia kitanzi. Tunapitia nambari kutoka 0 hadi 255 na kuonyesha ishara inayolingana. Pia tunaonyesha maandishi kwenye kichwa. Ufikiaji wa seli StringGrid kutekelezwa kwa kutumia mali hiyo Seli: Visanduku[nambari_ya_safu, nambari_mlalo]. Nambari za safu wima na safu (kuanzia sifuri) zimeonyeshwa kwenye mabano ya mraba. Thamani ni maandishi.

utaratibu TForm1.FormCreate (Mtumaji: TObject); var i: Nambari kamili; anza StringGrid1.RowCount :=257 ; StringGrid1.Cells [ 0 ,0 ] :="Msimbo" ; StringGrid1.Cells [ 1 ,0 ] :="Tabia" ; kwa i:= 0 hadi 255 huanza StringGrid1.Cells [ 0 ,i+1 ] :=IntToStr (i) ; StringGrid1.Cells [ 1 ,i+1 ] :=Chr (i) ; mwisho; mwisho;

Hebu tuzindue na tuangalie.

Alama maalum

Ukiangalia kwa makini meza yetu, utaona kwamba alama nyingi zinaonekana kama miraba. Hapana, hizi si aikoni. Hivi ndivyo wahusika ambao hawana onyesho la kuona huonyeshwa. Wale. ishara, kwa mfano, na kanuni 13 ipo, lakini haionekani. Ishara hizi hutumiwa kwa madhumuni ya ziada. Kwa mfano, herufi #0 (yaani, mhusika aliye na msimbo 0) mara nyingi hutumiwa kuonyesha kutokuwepo kwa mhusika. Pia kuna mistari inayoitwa kubatilishwa- hii ni mistari inayoishia na herufi #0. Kamba kama hizo hutumiwa katika lugha ya C.
Vibonye vya ufunguo vinaweza kutambuliwa kwa misimbo. Kwa mfano, kitufe cha Ingiza kina msimbo wa 13, Escape - 27, Space - 32, Tab - 9, nk.
Wacha tuongeze kwenye programu yetu uwezo wa kujua nambari ya ufunguo wowote. Ili kufanya hivyo, tutashughulikia tukio la fomu OnKeyPress(). Ili utaratibu huu ufanye kazi, unahitaji kuweka fomu Muhimu Preview = Kweli.

utaratibu TForm1.FormKeyPress (Mtumaji: TObject; var Key: Char); anza ShowMessage ( "Msimbo uliobonyezwa kwa ufunguo:"+IntToStr(Ord(Ufunguo))); mwisho;

Hapa tunaonyesha dirisha na maandishi. Tukio hilo lina tofauti Ufunguo, ambayo huhifadhi herufi inayolingana na kitufe kilichobonyezwa. Kwa kutumia kipengele Agizo () kujua kanuni ya ishara hii, na kisha kutumia kazi IntToStr() Wacha tubadilishe nambari hii kuwa mfuatano.

Mfano "zito zaidi" - iliendelea

Turudi kwenye mfano wetu. Ni wakati wa kujua ni wapi safu tupu zinatoka kwenye ListBox. Jambo ni kwamba wao si tupu kabisa. Ndio, kwa kuibua ni tupu, lakini kwa kweli kila moja yao ina herufi 2 maalum. Hizi ni herufi zilizo na misimbo 13 na 10 (yaani mstari #13#10). Katika Windows, mlolongo huu wa herufi hizi mbili zisizo za kuona huashiria mwisho wa mstari wa sasa na mwanzo wa mstari mpya. Wale. Katika faili yoyote na mahali popote kwa ujumla, mapumziko ya mstari ni wahusika wawili. Na maandishi yote, ipasavyo, yanabaki kuwa mlolongo unaoendelea wa wahusika. Wahusika hawa wanaweza (na hata wanapaswa) kutumika katika hali ambapo unahitaji kuingiza mapumziko ya mstari. Unaweza kusoma zaidi kuhusu hili katika makala. Ujuzi uliopatikana katika masomo yote ya awali, ikiwa ni pamoja na hili, ni wa kutosha kuelewa makala hii - ni mfupi sana.

Wacha tuchukue programu yetu ya utaftaji wa maneno kwa hitimisho lake la kimantiki. Kwa hiyo, ili kuondokana na mistari tupu, tunahitaji kuondoa wahusika # 13 na # 10 kutoka kwa maandishi. Hii inaweza kufanywa kwa kutumia kitanzi, sawa na jinsi tulivyobadilisha koma mbili na moja:

huku Pos (Chr (13 ) ,Text) > 0 fanya Futa (Text,Pos (Chr (13 ) ,Text) ,1 ) ; huku Pos (Chr (10 ) ,Text) > 0 fanya Futa (Text,Pos (Chr (10 ) ,Text) ,1 ) ;

Kweli, sasa mpango huo unafanya kazi kikamilifu!

Kazi za ziada za kufanya kazi na masharti - moduli ya StrUtils

Moduli ya ziada StrUtils.pas ina kazi za ziada za kufanya kazi na kamba. Miongoni mwa kazi hizi kuna nyingi muhimu. Baadhi ya kazi zinajadiliwa kwa undani zaidi katika makala. Hapa kuna maelezo mafupi ya kazi zinazotumiwa mara kwa mara:

PosEx(kamba ndogo, mstari, kujipenyeza) - kazi sawa na kazi Pos(), lakini kutafuta kutoka kwa nafasi maalum (yaani iliyoingizwa kutoka mwanzo wa mstari). Kwa mfano, ikiwa unataka kupata nafasi ya pili kwenye kamba, na sio ya kwanza, huwezi kufanya bila kazi hii. Ili kutafuta nafasi ya pili kwa mikono, lazima kwanza ukate sehemu ya kamba asili.

AnsiReplaceStr, AnsiReplaceText (mstari, maandishi_1, maandishi_2) - kazi hufanya uingizwaji katika kamba mstari mistari maandishi_1 juu maandishi_2. Kazi hutofautiana tu kwa kuwa ya kwanza inachukua uingizwaji kwa kuzingatia kesi ya wahusika, na ya pili - bila hiyo.
Katika programu yetu, tunaweza kutumia vitendaji hivi kukata herufi #13 na #10 kutoka kwa mfuatano kwa kubainisha mfuatano tupu kama maandishi mbadala. Hapa kuna suluhisho katika safu moja ya nambari:

Text:=AnsiReplaceText(AnsiReplaceText(Text,Chr (13 ) ) ,"" ) ,Chr (10 ) ,"" ) ;

DupeString(mstari, idadi_ya_marudio) - huunda kamba inayojumuisha kamba mstari kwa kurudia idadi maalum ya nyakati.

ReverseString(mstari) - inageuza kamba (" 123 " -> "321 ").

Pia inafaa kutaja ni kazi za ubadilishaji wa rejista.

Herufi kubwa(mstari) - hubadilisha kamba kwa herufi kubwa; Herufi ndogo(mstari) - hubadilisha kamba kuwa ndogo.

Ili kubadilisha wahusika binafsi, unapaswa kutumia kazi sawa.

Maelezo ya kina kuhusu kila kazi yanaweza kupatikana kwa kuingiza jina lake mahali popote kwenye kihariri cha msimbo, kuweka mshale kwenye jina hili (au kuangazia) na kubonyeza F1.

Picha za skrini za programu zilizoelezwa katika makala