Funkciók a szimbólumokkal való munkavégzéshez. Új szimbólum kialakítása egy összetett objektumból színátmenetes kitöltéssel

05.11.2019 hírek

Szimbólum

A szimbólum egy jel. Bármelyik – betű, szám, számtani jel vagy hely, írásjelek vagy aláhúzás... És speciális karakterek is - új sor, BackSpace, dollárjel vagy százalék. A Delphi "karakter" típusát Char jelöli:

ShowMessage("Beírtad" + c);

ShowMessage("Áthelyezés újba" + c + "sor");

Már említettük, hogy a szimbólumok a szimbólumtáblázatból származnak ANSI vagy UNICODE. A legtöbb szimbólumot használják, néhány szimbólum segédszimbólum. vegye figyelembe, hogy nagybetű Az "A" és a kis "a" különböző szimbólumok! Ezenkívül a latin „s” és az orosz „s” különböző szimbólumok, bár olyan hasonlóak, mint két borsó egy hüvelyben.

A null karakter nem használatos, teljes nullaként van fenntartva. A programozók megtalálták ennek a karakternek méltó felhasználását, amikor szövegbeviteli eseményekben használják, amikor meg kell akadályozniuk, hogy a felhasználó bármilyen karaktert beírjon. Nem látjuk a szolgáltatás karaktereit a szövegben terület. A szolgáltatás szimbólumok , <Belép>, <Tab> és mások. A számítógép minden karaktert 0 és 255 közötti számként dolgoz fel szó A „HELLO” a gép memóriájában úgy fog kinézni, mint egy számkészlet: „207 208 200 194 197 210”.

Szimbólum funkciók

A gyakorlatban gyakran szükséges az egyes karakterek feldolgozása. A Char karaktertípusú változókhoz a következő módon lehet értékeket rendelni:

Mivel a számítógép számára a szimbólum egy szám, a szimbolikus adatok összehasonlíthatók egymással. Ebben az esetben az lesz a legnagyobb szimbólum, amelynek a szimbólumtáblázatban szereplő száma nagyobb. Például az "i" nagyobb lesz, mint az "a":

ha b > c then ShowMessage ("Igaz!")

else ShowMessage("Hamis!");

Amikor karakteres változókkal dolgozik, gyakran használják a Chr() és Ord() függvényeket. Funkció A Chr() egy számot vesz paraméterként, és a táblázatban szereplő számnak megfelelő karaktert adja vissza ANSI:

függvény Chr (X: Byte): Char;

Funkció Az Ord() pont az ellenkezőjét teszi, egy karaktert vesz paraméterként, és visszaadja azt a számot, amely alatt ez a karakter a táblázatban található ANSI:

függvény Sorrend (C: Char): Byte;

A karakterváltozók a következő függvényekkel használhatók:

Az első sorba az a változóba az „ÉS” szimbólumot írtuk, amely a szimbólumtáblázatban szereplő 200-as számnak felel meg. A második, egész számú változóba a 200-as számot írtuk, mivel az ezzel a számmal rendelkező szimbólum az a változó, amelyet paraméterként adtunk át. Végül a harmadik sorban a 102-es számot írtuk a teljes változóba, ez a szám az „f” szimbólumnak felel meg.


Vonal

A karakterlánc karakterek halmaza. Egy karakterlánc ábrázolható karakteradatok statikus vagy dinamikus tömbjeként. A karakterláncok típusait már tárgyaltuk a „Control construct if, for loop” részben: AnsiString – egy karakterlánc ANSI– szimbólumok, és WideString– UNICODE – karaktersorozat.

A String típus nem különálló típus, alapértelmezés szerint az AnsiString. Azonban újra beállítható WideString, bár ez nem szükséges. Tehát nyugodtan adjon meg karakterlánc-változókat Stringként:

s:= "Ez többsoros" + #13 + "karakterlánc";

Ahogy a példából is látszik, egy karakterlánc több részkarakterláncból is összeállítható, és akár egyedi karakterek is hozzáadhatók hozzá. A példában a 13-as karaktert adtuk hozzá, ez az új sorkarakter. A kód végrehajtásának eredményeként a ShowMessage() eljárás két sorra bontott üzenetet jelenít meg:

Ez többsoros

ShortString– egy rövid karakterlánc a ANSI– szimbólumok. 0 és 255 karakter között lehet. Ritkán használt. Valójában egy karakterlánc típust deklarálhat előre megadott mérettel:

Amint látja, a karakterláncot numerikus indexszel deklarálják, majdnem úgy sor. Tulajdonképpen, karakterláncés van sor karakteradatokat, és ugyanúgy kezelheti. Indexelés a sorban lévő karakterek eggyel kezdődnek, vagyis az 1. index a sor 1. karakterének felel meg.

string:= "Szia";

string := "a"; //megváltoztatta a sor 5. karakterét

ShowMessage(stroke); //eredmény: string "Privát"

Ez is egy húr, és a jövőben is foglalkoznunk kell vele. Ez a karakterlánc teljesen másképp működik, mint a String. A karakterlánc képviseli sor karakterek, amelyek nulla eleme tartalmazza a számot byte, e sor alatt allokálva. A változó típus PChar– ez nem maga a vonal, hanem mutató a sor elejére, vagyis változó egy karakterlánc első karakterére mutat a számítógép memóriájában. Ahol aztán PChar mennyiséget tárol byte Sorban?! És sehol! A szimbólumtáblázatról már beszéltünk ANSI, és megállapította, hogy a null karakter üres. Itt az utolsó karakter PChar pontosan ez a szimbólum tárolja, és számítógép, miután megtalálta, úgy ítéli meg, hogy a sornak vége.

Húrokkal PChar nagyon kényelmetlen vele dolgozni, de ezt meg kell tennünk, ha közvetlenül WinAPI függvényekkel dolgozunk. A WinAPI függvények a ablakok, nem Delphi. A Delphi azonban lehetővé teszi ezek használatát. Néha erre van szükség, például amikor a Delphi eszközök nem elegendőek a tervezett feladat elvégzéséhez. Az ilyen funkciók használata nem mindig kényelmes, de a processzor sokkal gyorsabban hajtja végre őket, mivel a operációs rendszer. Példa - funkció MessageBox().

Megszokta már az üzenetek megjelenítését a Delphi ShowMessage() funkciójával? Szokjon hozzá az új funkcióhoz!

Application.MessageBox("1. sor", "2. sor",[ gombok + ablak_típusa]);

· 1. sor – szöveget jelenít meg az ablakon belül.

· 2. sor – szöveg az ablak címében.

Ha nem adjuk meg a [buttons + window_type] értéket, akkor egy egyszerű ablak jelenik meg egy OK gombbal, mint a ShowMessage() függvényben.

A "szimbólum" szónak sok jelentése van; különösen az in szimbólum alatt Adobe program Az Illustrator megérti a palettán tárolt vektorobjektumot Szimbólumok(Szimbólumok) (1. ábra), a parancs nyitja meg Ablak=>Szimbólumok(Window=>Symbols), és ismételt használatra készült. A szimbólumokkal való munka némileg a tárgyak klónozására emlékeztet, de csak első pillantásra, mivel ez alapvető különböző technológiák különböző képességekkel és célokkal. Az egyetlen közös dolog az, hogy bármely szimbólum a palettáról Szimbólumok sokszorosára szorozható.

Az Adobe Illustrator szimbolikus objektumokkal való munkavégzési lehetőségei között nemcsak egy adott szimbólum ismételt beillesztése szerepel a palettáról Szimbólumok, hanem különféle manipulációk is vele. A szimbólumok festékszóróhoz hasonlóan szórhatók, nagyíthatók, kicsinyíthetők és forgathatók, a szimbólumok csoportba rendeződése, a szimbolikus objektumok sűrűsége, az átlátszóság és az árnyékolás mértéke stb. Erre a célra a program speciális szimbolikus eszközök csoportjával rendelkezik Szimbólum eszköz, amely eszközöket tartalmaz Szimbólum permetező(Karakterpermetező), Szimbólumváltó(Karakterváltás), Symbol Scruncher((Tárgysűrűség), Szimbólumméretező(karakterméret), Szimbólum Spinner(a karakterek forgatása), Symbol Stainer(Karaktertónus), Szimbólumszűrő(Karakter átlátszóság) és Szimbólum Styler(Karakterstilizálás) (2. kép). És ami a legfontosabb, hogy ha megváltoztat egy szimbólumot, azonnal frissítheti annak összes példányát létrehozott kép; és nem számít, milyen jelentősek voltak a változtatások.

Érdemes megjegyezni, hogy a szimbolikus objektumok képekben való felhasználása számos előnnyel jár: mivel a szimbólumok egymáshoz hasonló tárgyakat ábrázolnak (ez azt jelenti, hogy a képen minden elem az eredeti szimbólummintájára vonatkozik), a kép teljes térfogata A kép lecsökken, ami fontos, mint a webes grafikák készítésekor, valamint az animációk, térképészeti képek stb. fejlesztésekor. Ezen túlmenően a képpel való munka jelentősen leegyszerűsödik, mivel a Szimbólumok palettán a szimbólumok bármilyen módosítása automatikusan a a képen az alapján épített összes grafikai objektum megfelelő szerkesztése, ami jelentősen felgyorsítja a fejlődést. Ez utóbbi különösen fontos a térképészeti objektumok fejlesztésében részt vevő tervezők számára - térképek, diagramok és diagramok, amelyek nagyszámú hasonló elemet tartalmaznak, amelyek szimbólumok szerepét töltik be. Ez megkíméli a tervezőket az ismételt másolási és beillesztési műveletektől, valamint az azonos típusú karakterek manuális szerkesztésétől. Technikailag például egy térkép fejlesztésének teljes folyamata nagymértékben leegyszerűsödik, és csökken a szükséges lépések száma. Ennek eredményeként a térképészeti kép elkészítéséhez elegendő a szimbólum objektumokat a megfelelő helyekre elhelyezni, és minden egyéb jellemzőjük később, egyidejűleg konfigurálható a képen szereplő összes azonos típusú elemhez.

A mellékelt szimbólumok több könyvtárban találhatók (bár összességük nem nagy (3. ábra)), és a kívánt könyvtárhoz a paranccsal lehet hozzáférni. Window=>Szimbólumtár(Window=>Szimbólumtár). A szimbólumok száma többszörösére növelhető, mind a munkához szükséges szimbólumok internetről történő letöltésével, mind új szimbólumok saját kezű készítésével. Valójában bármilyen objektum, objektumcsoport vagy teljes kép tárolható szimbólumként, függetlenül attól, hogy tartalmaz-e rajzolt elemeket, szöveget, beágyazott képeket vagy ezen elemek kombinációját. Ez nagyon kényelmes, mivel lehetővé teszi a könyvtár bővítését. Szimbólumok azokat a grafikai elemeket, amelyeket ismételten használnak egy adott fejlesztésben.

Egyedi szimbólumok kezelése a Szimbólumok palettán

Egyedi karakterek elhelyezése egy dokumentumban

Például fontolja meg a legegyszerűbb helyzet, amikor egy bizonyos algoritmust diagram formájában kell ábrázolni. Hozzon létre egy új dokumentumot, és nyissa meg a szimbólumtárat Diagramok parancs segítségével Window=>Szimbólumtár=>Diagramok(Ablak=>Szimbólumtár=>Térkép). Ezután egymás után húzza át a kívánt szimbólumokat a szimbólumpalettáról a létrehozott diagramba, és helyezze el őket tetszés szerint. Van egy másik módja annak, hogy egy szimbólumot áthelyezzen a képbe – kiválaszthatja a szimbólumot, és rákattinthat a gombra Helyezze el a szimbólumpéldányt(Place Symbol Instance) paletta Szimbólumok, ami miatt a szimbólum egy példánya megjelenik a kép közepén. Ezután a beszúrt szimbólum ugyanúgy mozgatható, miután először kiválasztotta az eszközzel Kiválasztás(Kiemelés) ill Közvetlen kiválasztás(Részleges kiválasztás).

A munka végén az áramköri elemek bizonyos szimmetriájának elérése érdekében egymás után kell kiválasztania a Közvetlen kijelölés eszközzel, miközben lenyomva tartja a billentyűt. Váltás azokat a szimbólumokat, amelyeket vízszintesen vagy függőlegesen a dokumentum közepére kell helyezni, és kattintson a megfelelő palettagombokra Igazítsa(Igazítás). Az eredmény a rizsre hasonlíthat. 4.

Ha egyes objektumok méretei nem felelnek meg Önnek, akkor könnyen megváltoztathatók, ha kiválasztunk egy adott szimbolikus objektumot az eszközzel Kiválasztás, amely automatikusan bezárja az objektumot egy méretes tárolóba, és a szokásos módon - az egyik konténerjelölő húzásával - beállítja a méretet (5. ábra).

Ha meg kell változtatnia az összes vagy csak néhány szimbólum kialakítását, a legegyszerűbb módja az egyik beépített stílus használata. Ehhez válassza ki az eszközzel a szerkeszteni kívánt objektumokat Kiválasztás(6. ábra), és kattintson a megfelelő stílusra a palettán Stílusok(Stílusok) ebben a példában a stílus lett kiválasztva Blue Goo(7. ábra).

Ha ebben a helyzetben egyik tervezési stílus sem felel meg Önnek, akkor meg kell szakítania a kapcsolatot a paletta szimbolikus elemeivel Szimbólumok, képobjektumok kiválasztása az eszközzel Kiválasztásés a gombra kattintva Törje meg a szimbólumra mutató hivatkozást Szimbólumok. A kiválasztott terület megjelenése azonnal megváltozik: a szimbólumok nagy konténerekbe kerülnek, és közönséges vektorobjektumokká alakulnak (8. ábra). Ez azt jelenti, hogy bármely elem kitöltési és szegély jellemzőit módosíthatja, például színátmenetes kitöltés beállításával, és bármilyen más átalakítást is végrehajthat velük (9. ábra).

Rizs. 8. Az áramköri elemek kiválasztásának jellegének megváltoztatása a kapcsolatok megszakítása után

Karakterek másolása egy dokumentumban

A karakteres objektumok egy gombnyomással ugyanolyan könnyen másolhatók, mint a hagyományos vektorobjektumok Alt. Például húzza át bármelyik szimbólumot a palettáról Szimbólumok a munkalaphoz. Ha szükséges, állítsa be a méretét, és nyomja meg a gombot Alt ismételten indítsa el a sokszorosítást az egér mozgatásával, miközben lenyomva tartja a bal gombot (10. ábra).

Egyedi karakterek szerkesztése egy dokumentumban

A képbe beágyazott szimbolikus elemek átalakíthatók (átméretezhetők, elforgathatók, megjeleníthetők stb.), mint a hagyományos vektorobjektumok, és a paletta gombjaival igazíthatók Igazítsa(Igazítás), módosítsa az átlátszóságot és a keverési módot a palettán Átláthatóság(Átlátszó) (11. és 12. ábra), és díszítse a palettáról különböző stílusokkal Stílusok(Stílusok).

Rizs. 12. Szimbólumok sorozatának raszteres képbe való beillesztésének eredménye, majd azok átalakításával, az átlátszóság mértékének és a keverési módnak a megváltoztatásával

Köszönhetően a csoport speciális szimbolikus eszközeinek Szimbólum eszköz Az egyes karaktereket teljesen más módon szerkesztheti; bizonyos esetekben ez kényelmesebbnek bizonyul, mint például a klasszikus átalakítási lehetőségek. A csoportból származó eszközök képességeinek értékelése Szimbólum eszköz, kísérletezzünk egy kicsit velük egy új kép létrehozásának példáján. Először is lépjünk át a palettáról Szimbólumok a tűz szimbóluma (13. kép). Aktiválja az eszközt az eszközpalettán Szimbólumméretező(Karakterek mérete) és kattintsunk többször a beágyazott szimbólumra, amíg a kép mérete elég nagy lesz (14. ábra). Az alkalmazás néhány előnye Szimbólumméretező az objektum szokásos eszközzel történő kiválasztásához képest Selectonés az ezt követő átméretezés a mérettároló határpontjainak mozgatásával az arányos átméretezéshez nem kell lenyomva tartani a gombot Váltás, mivel alapértelmezés szerint az eszköz arányos átméretezésre van beállítva.

Ezt követően vegye a szerszámot Szimbólumváltó(Shift szimbólumok), és húzza a szimbólumot a jobb alsó sarokba (15. ábra). Eszköz használata Szimbólum Spinner(Szimbólumok elforgatása) enyhén forgassa el a szimbólumobjektumot (16. ábra), adjon hozzá egy másik szimbólumot a szimbólumkönyvtárból az előtérbe Természet, amelyek megnyitásához használja a parancsot Ablak=>Szimbólumtár=>Természet(Ablak=>Szimbólumtár=>Természet) (17. ábra). Ezután az eszközzel megváltoztatjuk a tűz szimbólum színeinek tónusát Symbol Stainer(Toning karakterek) ehhez válassza ki a karaktert az eszközzel Selecton, állítsa be a megfelelő színt az ablakban Tölt(Kitöltés) és kattintson a szimbólumra. Végül is kinézet a kép azonnal megváltozik: a színátmenetek megmaradnak, de tónusuk más lesz, megközelítve az ablakban megadott színt Tölt(18. ábra). Kérjük, vegye figyelembe, hogy szimbolikus eszközökkel megváltoztathatja a tonalitást, de a kitöltés színét vagy a szimbolikus objektumok szegélyét nem, ez utóbbi csak a palettán lévő szimbólum közötti kapcsolat megszakítása után lehetséges. Szimbólumokés annak másolata a képen (parancs Törje meg a szimbólumra mutató hivatkozást Szakítsa meg a kapcsolatot a szimbólummal).

Végül kicsit csökkentsük a tűz szimbólum átlátszóságát. Ehhez válassza ki a szimbólumot, majd válassza ki az eszközt Szimbólumszűrő(Karakterek átlátszósága), és először módosítsa a paramétereit, mivel alapértelmezés szerint nagymértékben csökkenti az átlátszóságot. Kattintson duplán az eszközre Szimbólumszűrőés csökkentse az eszköz hatásának intenzitását azáltal, hogy csökkenti az értéket a területen Intenzitás(intenzitás) 8-tól például 2-ig (19. ábra). Kattintson a tűz szimbólumra, és a kapott eredmény hasonlíthat egy képre. 20.

Most alakítsuk át a képet ceruzarajzzá az objektumok stilizációjának módosításával az eszközzel Szimbólum Styler(Karakterstílus). Válassza ki mindkét karaktert az eszközzel Kiválasztás, kapcsolja be a hangszert Szimbólum Styler, majd aktiválja a kívánt stílust ebben a példában, a stílus lett kiválasztva 1-pont külső ütés(21. ábra).

Rizs. 21. Szimbolikus tárgyak alapján kialakított ceruzarajz

Új szimbólumok létrehozása

Mint már említettük, szimbólumok az Adobe Illustratorban használt bármely objektumból létrehozhatók, beleértve az egyszerű és összetett útvonalakat, szöveges objektumokat, importált pixelképeket, színátmenetes hálókat és objektumcsoportokat, valamint magukat a szimbólumokat.

Új szimbólum kialakítása egy összetett objektumból színátmenetes kitöltéssel

Tegyük fel, hogy már van egy vektorobjektum egy gomb formájában, gradiens hálóval (22. ábra). Szimbólum létrehozása ez alapján és a palettán való elhelyezése Szimbólumok, ki kell választania az objektumot az eszközzel Kiválasztásés húzza a palettára, vagy kattintson a gombra Új Szimbólum (Új szimbólum) a palettán Szimbólumok(23. ábra). Ugyanígy készítünk egy másik azonos képet egy hasonló gombbal, de zöld (mindkét szimbólumra szükségünk lesz további munka) (24. ábra). Ha szükséges, hogy ez a szimbólum egyidejűleg szimbólummá váljon a képen, azaz kapcsolat jöjjön létre a szimbólum és a képen látható megfelelő szimbolikus objektum között, akkor húzás közben le kell nyomni a gombot. Váltás.

Rizs. 22. Eredeti kép (gomb és a megfelelő Réteg paletta)

Nem baj, ha a palettán elhelyezett szimbólum sikertelennek bizonyul – a palettáról kiválasztva könnyen eltávolítható Szimbólumokés a gombra kattintva Szimbólum törlése(Törlés szimbólum) ezen a palettán.

Kérjük, vegye figyelembe, hogy amikor megnyit vagy új képet hoz létre, a paletta megnyílik Szimbólumok eredeti megjelenése lesz, vagyis a létrehozott új szimbólumok nem lesznek ott. Ezért szükséges a kép mentése az új szimbólumokkal a palettára a szokásos módon, a parancs segítségével Fájl=>Mentés(Fájl=>Mentés) *ai kiterjesztéssel. Ezt követően az elmentett paletta megnyitható megfelelő könyvtárként és felhasználható a munkájában.

Most próbáljuk meg felhasználni a létrehozott szimbólumot a térképészeti kép létrehozásának példájával. Nyissa meg az eredeti térképet (25. ábra), amelyhez speciális ikonok formájában kell hozzáadnia a városok és üdülőhelyek elhelyezkedését. Nyissuk meg a palettát Szimbólumok az újonnan létrehozott szimbólumok paranccsal Window=>Szimbólumtár=>Egyéb könyvtár(Window=>Symbol Library=>Other Libraries), majd helyezzen el egymás után kék gombokat a városok helyére (26. ábra), zöld gombokat az üdülőhelyekre (27. ábra).

Rizs. 27. Az elkészített térképészeti kép végleges megjelenése a megjelölt városokkal és üdülőhelyekkel

Ha olyan képet készített, amely több szimbólummásolatot tartalmaz, és néhányat módosítani szeretne, például csökkenteni szeretné egyes szimbólumok átlátszóságát (az olcsóbb üdülőhelyeknek felel meg), akkor ez a művelet két lépésben történik. . Először ki kell választania a képen egy eszközzel Közvetlen kiválasztás szerkeszthető karakterobjektumokat, majd csökkentse átlátszatlanságukat a palettán Átláthatóság(28. ábra). Ugyanígy módosíthatja a karakterelemek méretét a parancs meghívásával Transform=>Scale(Transformation=>Size) a felugró menüből (29. ábra), és számos egyéb paraméter. Ha komolyabb változtatásokra van szükség, például a kitöltés megváltoztatásához, először a szimbólumot kell vektorobjektummá alakítani, és csak azután szerkeszteni.

Rizs. 28. Több szimbolikus objektum átlátszóságának egyidejű megváltoztatásának eredménye (kép és Átlátszóság paletta)

Rizs. 29. Több szimbolikus objektum egyidejű átméretezésének eredménye (kép és lépték ablak)

Új szimbólum létrehozása keverési átmenet segítségével

Most nézzünk egy összetettebb lehetőséget. Tegyük fel, hogy az a feladatunk, hogy készítsünk egy térképes autós útvonaltervet, például egy cég irodájába (ma már sok helyen megtalálhatóak hasonló térképek az interneten). Ha egy ilyen térkép elkészítésekor nem veszik figyelembe az építészet sokszínűségét, és az összes épületet néhány stilizált szabványos épület formájában jelenítik meg, akkor az Adobe Illustrator program szimbolikus objektumai segítségével ez meglehetősen gyorsan megvalósítható. .

Egy tipikus épület létrehozásához két téglalap alakú vektorpályát hozunk létre, és összekapcsoljuk őket egy Blend átmenet segítségével, beállítva az opciót Sima szín(Kisimított színátmenet) (30. ábra), az eredmény egy paralelepipedon lesz, amely megjeleníti az épületet. Ezután ablakokat adunk hozzá, és mivel elég sok ablakot kell rajzolnunk, könnyebb lesz először létrehozni a megfelelő szimbólumot és elhelyezni a palettán Szimbólumok(31. ábra). Ezt követően ablakokat adunk a stilizált épülethez úgy, hogy egyszerűen ráhúzzuk az ablak szimbólumot az épületre (32. ábra).

Mint már említettük, a javasolt sematikus térkép teljesen azonos épületekből fog állni, aminek eredményeként a létrehozott épületet szimbólumként kell elmenteni a palettára Szimbólumok, miután előzőleg kiválasztotta az eszközzel Kiválasztás(33. ábra). Ezután már nem lesz nehéz elkezdeni a térképkészítést, elég lesz házszimbólumokat beszúrni a térkép szükséges részeibe, igazítani a középponthoz (gomb Függőleges igazítás középre paletták Igazítsa) és egymáshoz képest (gombok Függőleges elosztó központÉs Vízszintes elosztó központ paletták Igazítsa), adjon számokat a házakhoz, és hozzon létre utcákat és zöldterületeket közöttük. Talán a munka elején a vázlatos térkép valahogy úgy fog kinézni, mint az 1. ábrán. 34.

Új szimbólum kialakítása ecsettel

A diagram létrehozásának következő szakaszában meg kell jelölnie az irodába vezető útvonalat, amelyet legkényelmesebben nyilak segítségével lehet megtenni. Egyszerűen létrehozhat egy ilyen útvonal körvonalát, és megfelelő ecsettel megtervezheti nyíl formájában, de ennek a lehetőségnek két „de” van: először is, az útvonal gyakran nem folytonosnak tűnik (különösen az utcaneveket kell kihagyni stb.), aminek eredményeként több kontúrt kell létrehoznia, és minden kontúr létrehozásakor módosítania kell az ecsetbeállításokat, ami kényelmetlen, másodszor pedig lehetséges, hogy egyszerűen nem akarja közvetlenül használni a nyíl alakú ecset, mivel a segítségével létrehozott kontúr nem lesz elég vonzó.

Természetesen létrehozhatunk újat egy megfelelő ecset alapján, de van egy másik módszer is, ami gyorsabb és kényelmesebb: egy nyíl alakú ecset alapján hozzon létre egy speciális szimbólumot, és szerkessze azt ízlése szerint. Nézzük meg ezt a lehetőséget részletesen: az ecsetkönyvtárból nyissa meg a palettát Nyíl minta parancs segítségével Window=>Brush Library=>Nyíl minta(Window=>Symbol Library=>Arrow Patterns), válasszunk megfelelő ecsetet (ebben az esetben az Arrow 144 ecsetet használjuk), és alakítsuk ki a nyíl töredékét (35. ábra). Húzza a palettára Szimbólumok a gomb megnyomásakor Váltásígy a képen látható minta automatikusan szimbólummá változik, ez egy ideiglenes szimbólum lesz " Nyíl" Ezután a szokásos módon csökkentse a méretét, szakítsa meg a kapcsolatot a palettával Szimbólumok gombra kattintva Törje meg a szimbólumra mutató hivatkozást(Kapcsolat megszakítása a szimbólummal) a paletta alján található Szimbólumok, és adjon hozzá például egy szegélyt a nyílhoz (alkalmazhat valami érdekesebbet is - alkalmazhat megfelelő szűrőt, hozzon létre egy Blend átmenetet stb.). Ezután húzza vissza a palettára Szimbólumok, és törölje az ideiglenes „Nyíl” szimbólumot annak kiválasztásával és a gombra kattintva Szimbólum törlése(Törlés szimbólum) ezen a palettán (36. ábra). Végül rajzolja meg az irodához vezető utat az imént létrehozott szimbólum segítségével " Nyíl" Ne felejtse el, hogy gyorsabb lesz a szimbólumok szorzása, ha nem ismételten húzza őket a palettáról Szimbólumok, és a képen látható szimbólum mozgatásával, miközben lenyomva tartja a gombot Alt. Lehetséges, hogy a kép végül az ábrán látható formát ölti majd. 37.

Karakterek automatikus cseréje a rajzban

Ha az elkészített kép már használ néhány szimbólumot (a szállításban szereplő vagy manuálisan készített) szimbólumokat, és a munka során kiderül, hogy ezek egy részét ki kell cserélni a palettán található többire Szimbólumok, akkor ez a művelet néhány másodpercig tart. Ehhez a korábban létrehozott ábra. 27 válasszon szerszámmal Közvetlen kiválasztás cserélhető karakterek a palettán Szimbólum s válassza ki a lecserélni kívánt szimbólumot, és válassza ki a Csere parancsot a paletta menüjéből Szimbólum(Cserélje ki a szimbólumot) (38. ábra) az összes kiválasztott szimbólum lecserélődik.

Rizs. 38. Több szimbolikus objektum cseréjének eredménye (kép és Szimbólumok paletta)

Szimbólumok szerkesztése a Szimbólumok palettán

Tegyük fel, hogy néhány paletta szimbólum Szimbólumok(függetlenül attól, hogy az egyik könyvtár része, vagy Ön hozta létre) gyökeresen meg kell változtatni. Ez csak a kapcsolat megszakadása után lehetséges, ezért válasszon egyet a már létrehozott gomb szimbólumok közül, és kattintson a gombra Törje meg a szimbólumra mutató hivatkozást(Kapcsolat megszakítása a szimbólummal) a paletta alján található Szimbólumok. A szimbólum ismét normál vektorobjektummá válik, és könnyen megváltoztatható. Változtassuk meg például a gomb színét zöldről pirosra (39. ábra).

Rizs. 39. Módosított szimbólumok paletta beágyazott gombszimbólumokkal és egy vektorobjektum formájában szerkesztett szimbólummal (ez látható a kijelölési markerekből)

Szimbólum cseréje a palettán Szimbólumok szerkesztett változatát, válassza ki a módosított szimbólumot, aktiválja az eredeti szimbólumot a palettán Szimbólumok majd a paletta menüből válassza ki a parancsot Szimbólum újradefiniálása(Szimbólum újradefiniálása) (40. ábra) Ez megváltoztatja a szimbólumot a palettán (41. ábra). Felhívjuk figyelmét, hogy ha szerkesztette a szimbólumot azon a képen, ahol azt használták, esetünkben például a megváltozott palettán Szimbólumok(lásd 27. ábra), akkor egy szimbólum újradefiniálása automatikusan nem csak a palettán való cseréjéhez vezet Szimbólumok, hanem a képen látható összes másolatának frissítésére is (42. ábra).

Rizs. 42. Kartográfiai kép a korábban üdülőhelyek jelzésére használt szimbólum újradefiniálása után, a Szimbólumok palettával összhangban

Karaktercsoportokkal való munka

Ha nem egy, hanem ugyanazon szimbólum (vagyis egy szimbólumcsoport) egyidejű elhelyezéséről és későbbi feldolgozásáról beszélünk, akkor speciális szimbólumeszközökre lesz szükség. Szimbólum eszköz: Szimbólum permetező(Karakterpermetező), Szimbólumváltó(Karakterváltás), Symbol Scruncher((Tárgysűrűség), Szimbólumméretező(karakterméret), Szimbólum Spinner(a karakterek forgatása), Symbol Stainer(Karaktertónus), Szimbólumszűrő(Karakter átlátszóság) és Szimbólum Styler(Karakterstílus). Ebben a csoportban minden eszköznek megvannak a saját beállításai, amelyeket a párbeszédpanelen lehet megadni Szimbolizmus eszköz beállításai(Character Objects Tool Options) hívott dupla kattintás egerek.

Az ilyen szimbólumcsoportok egyetlen objektumot képviselnek (43. ábra), és a hozzájuk kapcsolódó minden későbbi lehetséges átalakítás: az átalakítás, a telítettség, a szín, a hely, a méret, az elforgatás, az átlátszóság és a stílusok átfedése azonnal alkalmazzák a stílusok összes elemére. a csoport.

Karaktercsoport permetezése

Például nyissuk meg a képet (44. ábra), és próbáljunk hópelyheket szórni rá. Természet. Az eredeti kép méretéhez képest a hópehely minta túl nagy, ezért először a szokásos módon illesszen be belőle egyetlen példányt, a palettáról ráhúzva a rajzra (45. ábra). Ezután aktiválja az eszközt Kiválasztásés a hópehely kijelölésének megszüntetése nélkül csökkentse a méretét elfogadható méretre (46. ábra), miközben lenyomja a gombot Váltás az arányok megtartására. Húzza az új hópehely szimbólummintát a palettára Szimbólumokés hagyja ott aktív szimbólumként.

Ezután válassza ki az eszközt Szimbólum permetezőés díszítse a képet úgy, hogy hópelyheket szór rá a designra; ez nem nehéz, különösen a munka technológiája miatt Szimbólum permetező nagyon hasonlít a szórópisztollyal végzett munkához bármilyen grafikus csomagban. Elképzelhető, hogy a hópelyhek egy része a képen kívülre kerül (47. ábra), ebben az esetben jelölje ki a teljes hópelyhek csoportját a Kijelölő eszközzel, és a szokásos módon méretezze át (48. ábra).

Rizs. 47. A Symbol Sprayer eszközzel szimbólumokat szórva a hópelyhek egy része a képen kívülre került

Ha a szerszámbeállítások Szimbólum permetező nem elégedett (alapértelmezés szerint az összes beállítás átlagértékét veszik fel), akkor könnyen kijavíthatók az eszközre való dupla kattintással és az ablakban a megfelelő beállítások elvégzésével Szimbolizmus eszköz beállításai. Tegyük fel például, hogy nem vagyunk megelégedve a hópelyhek színével és elrendezésük sűrűségével. A szín megváltoztatása, vagy inkább annak biztosítása, hogy a szimbólumok az ablakban kiválasztott szín figyelembevételével készüljenek Tölt(Kitöltés), a listában Folt(Színezés) opciót kell telepíteni Felhasználó által meghatározott(Felhasználó által meghatározott). A sűrűség növeléséhez pedig növelni kell a paraméter értékét Szimbólumkészlet sűrűsége(Karakterkészlet-sűrűség), például, mint az ábra. 49. Az eredmény rizsre emlékeztethet. 50.

Rizs. 50. További szimbolikus objektumok létrehozása után a hópelyhek sűrűbben oszlanak el, és a Kitöltés ablakban beállított színnek megfelelően sötétebb árnyalatot kapnak.

A beállítások között a következő paraméterek értékeit módosíthatja:

  • Szétmorzsol(Tárgyak sűrűsége) az objektumok relatív sűrűsége figyelembe véve eredeti méret szimbólum;
  • Méret a permetezett szimbólumok (Méret) mérete, figyelembe véve az eredeti szimbólumméretet;
  • Spin(Forgatás) a generált karakterek elforgatásának meghatározása az egérkurzor mozgásának figyelembevételével;
  • Képernyő(Átlátszóság), figyelembe véve a szimbólumok átláthatóságának mértékét;
  • Stílus Szimbólumok karaktertervének (stílus) meghatározása, az aktív stílus paramétereinek figyelembevételével.

Ezen paraméterek mindegyikéhez két beállítás lehetséges: Átlagos(Közepes) hozzáadja a szimbólum új példányát egy médiummal paraméterértékek, A Felhasználó által meghatározott(Felhasználó által meghatározott) szimbólumgenerálást biztosít a felhasználóspecifikus beállítások alapján.

A terepen Átmérő(Átmérő) beállítja a szerszám hatáskörének átmérőjét a mezőben Intenzitás Az (intenzitás) meghatározza a generált karakterek változásának mértékét, minél nagyobb az érték, annál nagyobb a változás mértéke.

Ezenkívül jobb, ha a jelölőnégyzet be van kapcsolva Ecsetméret és intenzitás megjelenítése(Ecsetméret és intenzitás megjelenítése) ebben az esetben a szimbólum spray mérete kör formájában jelenik meg a képernyőn, amely meghatározza a szerszám ütési területét.

Karaktercsoport szerkesztése

Vegyük eredeti képnek a. 51, permetező fű szimbólumok a szimbólumkönyvtárból annak alsó részén Természetés módosítsa a kapott karaktercsoport méretét az eredeti kép méretének megfelelően (52. ábra). Ezután az ebben a szimbólumcsoportban lévő objektumok sűrűségének növeléséhez hívja elő az eszközmenüt Symbol Scruncher(Objektumsűrűség) az eszközre dupla kattintással és a paraméter értékének növelésével Szimbólumkészlet sűrűsége(Karakterkészlet-sűrűség), például a 2. ábrán látható módon. 53. Ezután kattintson a kiválasztott szimbólumcsoportra, amely a tömörítéshez vezet (54. ábra).

Egészítsük ki a képet néhány további fűszimbólumcsoport szórásával, és adjunk hozzá kettőt karakter objektum kövek formájában. Vigyük át az utóbbit a fű alá, ehhez ki kell jelölni az egyes objektumokat, jobb gombbal kattintson rá és válassza ki a parancsot Elrendezés=>Visszaküldés ( Move=>Move backward) (55. ábra).

Rizs. 55. Kép ​​több karaktercsoport és két egyedi karakter hozzáadása után

Tegyük sötétebbé a kép jobb alsó sarkában lévő füvet az eszközzel Symbol Stainer(Karakterárnyékolás). Válassza ki a megfelelő szimbólumcsoportot az eszközzel Selecton, állítsa az ablak színét sötétzöldre Tölt(Kitöltés) és kattintson a szimbólumcsoportra (56. ábra) a nagyobb hatás érdekében vigye az egeret a szimbólumcsoport fölé, ami a szimbólumok további fokozatos átszínezéséhez vezet. Ennek eredményeként a fű szimbólumok megmaradnak, de színtónusuk megváltozik, hogy megfeleljen az ablakban meghatározott színnek Tölt(57. ábra).

Rizs. 56. A Symbol Stainer eszköz hatása egy szimbólumcsoportra

Ezt követően világosítsa meg a füvet a bal felső sarokban. Ez megtehető a fent leírt módszerrel, ha előzőleg a színt világoszöldre állította a palettán, vagy módosíthatja a megfelelő szimbólumcsoport átlátszósági fokát az eszközzel. Szimbólumszűrő(Karakter átlátszósága). Használjuk a második módszert, vagyis válasszunk ki egy szimbólumcsoportot, és kattintsunk rá (vagy húzzuk át rajta; attól függ, hogy hány szimbólumot és milyen mértékben érint) Szimbólumszűrő(58. ábra). Lehetséges, hogy az átalakítások után a kép kezd hasonlítani a 2. ábrára. 59.

Rizs. 58. A Symbol Screener eszköz hatása egy szimbólumcsoportra

Miután végigmentünk a tömbökön, megérthetjük, hogy mi a szöveg, mint egy programozási nyelv sajátos adatszerkezete: a szöveg karakterek halmaza vagy tömb, amelynek elemei a Chr karakteres adattípus. Például, ha a szövegünk 100 karakterből áll, akkor a következőképpen deklarálhatjuk: Type Text=rry of chr; Sok programozási nyelvben a szöveggel karaktertömbként dolgoznak, és minden karaktert külön dolgoznak fel. Ezek az eszközök egyrészt egyesítik a...


Ossza meg munkáját a közösségi hálózatokon

Ha ez a munka nem felel meg Önnek, az oldal alján található a hasonló művek listája. Használhatja a kereső gombot is


Karakterlánc adattípus. Karakterekkel és karakterláncokkal való munka.

A tömbök áttekintése után most már megérthetjük, hogy mi a szöveg, mint egy programozási nyelv sajátos adatszerkezete: a szöveg karakterek halmaza, vagy egy tömb, amelynek elemei a Char karakteres adattípus. Például, ha a szövegünk 100 karakterből áll, akkor a következőképpen deklarálhatjuk:

típus

Szöveg=karakter tömb;

Számos programozási nyelvben a szöveget karaktertömbként dolgozzák fel, minden karaktert külön-külön dolgozva fel. A TurboPascal programozási nyelv azonban kényelmesebb eszközöket biztosít a szöveggel való munkavégzéshez, mint néhány más nyelv, lehetővé téve a felhasználó számára, hogy alapvető műveleteket hajtson végre a szövegen: kifejezések, mondatok vagy szövegrészletek kombinálása, szavak törlése, szöveg hosszának kiszámítása, keresés és egy bizonyos szöveg beszúrása. töredék egy adott pozícióba, és más műveletek közvetlenül a nyelvben biztosított eszközök, funkciók és eljárások segítségével. Ezek az eszközök egyrészt egyesítik a szöveg fogalmát, mint karakterek tömbjét, másrészt lehetővé teszik, hogy a speciálisan deklarált szövegekkel dolgozzon.karakterlánc változó, mint egy egész szerkezetnél, egy egész résznél.

Egy karakterlánc adattípust egy fenntartott szó használatával deklarálunk Rövid húr:

a: rövidzsinór;

b: rövid húr;

Változó a egy karakterlánc-változó, amely legfeljebb 255 karakter hosszúságú karakterláncok bevitelére és műveletek végrehajtására szolgál (az 1-től a 255-ig). A karakterlánc nulla bájtja mindig az aktuális hosszának értékét tárolja. Ha a karakterlánc 255 karakternél kevesebbet tartalmaz, akkor a nulla bájt az aktuális hosszúságú bináris kódot tartalmazza, és a karakterlánc hosszát meghaladó számokkal nem lehet üres karaktereket elérni. Az aktuális karakterlánchossz mindig megtalálható egy speciális függvény segítségével Hossz , amelyről később lesz szó, vagy közvetlenül elérve a nulla bájtját.

Húr hossza b azonnal kijelölve 80 karakterrel. A valódi karakterlánc lehet kisebb ennél az értéknél, de nem haladhatja meg a 80 karaktert. Akkor van értelme korlátozni egy karakterláncot, ha tudjuk, hogy a karakterlánc-változónk bármelyik értékét tárolhatja, de soha nem lép túl egy bizonyos méretet. Például, ha egy egyértelmű választ tárol ("igen", "nem" vagy "nem tudom"), akkor ebben az esetben a számítógép memóriájának megtakarítása érdekében célszerű egy karakterekből álló karakterlánc-változót használni. (a leghosszabb „nem tudom” kifejezésre: 6 betű és még egy szóköz).

Miután létrehoztuk a karakterlánc-változókat, most hozzárendelhetők karakterlánc-értékek, amelyeket aposztrófok jeleznek, például:

a:=amikor a diákok beléptek az irodába;

a:=rugó BAL";

b:=a legénység összeállt, uram";

b:= LABDARÚGÁS ;

a:=#4$& *&^;

b:=15478 564 22; jdjjk;

a:=2547;

b:=igaz;

Meg kell különböztetnie a karakterláncokat a valós számoktól és értékektől. Például a vonallal a nem végezhetünk számtani műveleteket, mert a (2547) ebben az esetben csak egy karakterkészlet, nem egy szám. A jelentését is b nem logikai változó, hanem csak az „igaz” szó.

Amikor a program elején inicializáltuk a változókat, adtunk nekik valamilyen értéket, általában 0-t. A karakterláncok inicializálása üres operátorral történik‘’ . Ez az eljárás 0 karakterlánchosszúságú értéket ír a nullbájtba. Vegye figyelembe, hogy a szóköz és a null karakterlánc írása különböző műveletek. Vagyis a műtétek után a:= "; b:=; a. sor tartalmaz egy szóközt és egy sort b üres lesz, nem tartalmaz karaktereket.

Ha a billentyűzetről szeretne beírni egy karakterláncot, használhatja a szokásos read() operátort anélkül, hogy a hossza mentén hurkot rendezne (ellentétben a tömbök bevitelével):

olvasni egy);

readln(b);

A képernyőn megjelenő sorok kimenete hasonló:

írj egy);

writeln(b);

Egy karakterlánc karakterei közvetlenül elérhetők. Ebben az esetben a karakterlánc tömbként működik:

a:=ы;

ír(b);

Az első esetben a sor 10. karaktere a felveszi a "betű értékét" s ", a második esetben pedig a sor 3. karakterét adjuk ki b . Csak óvatosan: ha a sorok nem tartalmazzák ezeket a karaktereket (az aktuális hosszuk kisebb lesz, vagy üres lesz a sor), akkor a program hiba miatt megszakad, ezért adjon meg különféle lehetőségeket és mindig ellenőrizze az aktuális sorhosszt szoftver(a hosszan keresztül)!

Az összefűzés művelete karakterláncokra alkalmazható, az únösszefűzés . Ez a művelet több sort egyesít egyetlen nagy sorba. Több karakterlánc hozzáadásához a szokásos "+" hozzáadási operátort kell használnunk. Így néz ki a példákban:

a:=Hozzáadás + sorok; //a=Stringek hozzáadása

a:=+első +és+második+ sor hozzáadása;

//a=az első és a második sor összeadása

Magukat a karakterlánc-változókat is kombinálhatja, például:

a:=a+b;

String változókkal való munkavégzés Pascal nyelv A következő speciális eljárások és funkciók állnak rendelkezésre:

1. Hosszúság függvény:

Hossz(ok: karakterlánc): egész szám;

Ez a függvény az s karakterlánc aktuális hosszát adja vissza egy egész változóba.

Íme egy példa a függvény használatára:

N: egész szám;

A: rövid húr;

Kezdődik

a:=1. sor ;

n:=Hossz(a); //n=10

Vége.

2. Pos függvény:

Pos(Substring, s:string): bájt;

A Pos függvény egy Byte típusú egész számot ad vissza, amely megfelel az s karakterláncban megjelenő részstring első karakterének indexének. Ha az alkarakterláncot nem tartalmazza az s karakterlánc, akkor a függvény 0-t ad vissza.

Példa:

n:=Pos(karakterlánc, a) //n=5; (az értékek az első példából származnak)

3. Másolás funkció:

Copy(s: string; Index, Count: integer): string;

A Másolás funkció az s karakterlánc egy részét, az indexszámú karakterrel kezdve, a Count karakterek számához másolja.

Példa:

B: rövid húr;

Kezdődik

a := 1. sor;

b:=Másolás(a, 3, 5); //b a th oldalt tartalmazza

Vége.

4. Concat függvény:

Concat(s1; s2; …; sn): string;

Ez a függvény több karakterláncot fűz össze úgy, hogy az argumentumain összefűzési műveletet hajt végre. Ezt a műveletet a „+” addíciós operátor használatával is végrehajthatjuk, amint azt fent láttuk.

5. Val eljárás:

Val(s: string; Var v; Var Code: integer;);

s számsor, v típusú változó egész vagy valós

Az eljárás a függvényekkel ellentétben nem ad vissza semmilyen értéket, hanem egyszerűen megváltoztatja a paramétereit. Míg egy változóhoz funkcióértéket lehet rendelni, eljárásértéket nem.

Funkció Val változóban tér vissza v a karakterláncban található szám. Ebben az esetben a teljes sornak csak egy számot kell tartalmaznia. Ellenkező esetben, ha

a konverzió nem sikerült, a kódérték a sor azon pozíciójának számát tartalmazza, ahol az átalakítás során hiba történt, ellenkező esetben 0 értéket ad vissza.

Példa:

A: rövid húr;

V, m: egész szám;

Kezdődik

a:=2356;

Val(a, v, m); //v=2356, m=0

Vége.

6.Str eljárás:

Str(y; s: string);

Az y változó néhány numerikus adattípushoz tartozó szám.

Eljárás Str számot stringgé alakít s.

Példa:

Str(10254, a) //az a sor most 10254-et tartalmaz

7. Beszúrási eljárás:

Insert(s1: string; Var s2: string; index: integer);

Eljárás Beszúrás beszúrja az s1 karakterláncot az s2 karakterláncba, a pozíciótól kezdve index . Ha az eredményül kapott s2 karakterlánc 255 karakternél hosszabb lesz, akkor a végén nem szereplő karaktereket a rendszer egyszerűen eldobja.

Példa:

S1, s2: rövid húr;

Ind:integer;

Kezdődik

s1:=1-i;

s2:= string ;

Insert(s1, s2, 7); //s2= 1. sor

Vége.

8. Eljárás törlése:

Delete(Var s: string; Index: integer; Count: integer);

Eljárás Törlés eltávolítja egy karakterláncból s pozícióból kiinduló része index és folytatva a számára számoljon elemeket.

Példa:

A: rövid húr;

P, m: egész szám;

Kezdődik

a:=karakterlánc;

Törlés(a, 2, 3); //vonala kezdett tartalmazni ska

Vége.

Példák a string adattípus használatára szolgáló programokra.

1) Írjon programot, amely megkeresi a szövegben található „k” betűk számát!

program Pr_27_28_1;

($APPTYPE KONZOL)

használ

SysUtils;

A, a_save: string;

s:byte;

Const bukva="k";

Kezdődik

Writeln("Vedite szöveg");

Readln(a); // szöveg beírása

a_save:=a; //maga a szöveg megváltozik, ezért mentünk róla egy másolatot

s:=0; //a kezdőbetűt rögzítő "K" betűszámláló inicializálása

//értékek

Míg Pos("k",a)>0 mindaddig //add meg, amíg a "K" szerepel a szövegben

kezdődik

Törlés(a,Pos("k",a),1); //eltávolítja a "K" betűt (az új "K" betűk kereséséhez)

s:=s+1; //és növelje a számlálót 1-gyel

vége;

Writeln("Az Ön szövege: ",a_save, " soderjit ",s, " bukv "k""); // teszt kimenet és

Readln; //a benne található "K" betűk száma

Vége.

2) Most nézzük meg, hogyan emelhet ki néhány szót vagy szócsoportot a szövegben. Ha a programalgoritmus segítségével meg tudjuk határozni, hol vannak a szöveg szavai, akkor ezekkel a szavakkal és a szöveg egészével is végre tudjuk hajtani a szükséges műveleteket (másolás, módosítás, törlés, szimbólumok szavak közé adása és sok más művelet ).

Szövegünk hosszát a Length(s) függvény segítségével határozhatjuk meg. Így a ciklus, amely végigmegy a szövegünk összes karakterén, a következőképpen van írva (i integer típusú változó, s a mi szövegünk):

Miközben én

kezdődik

vége;

A szövegben minden szó egy bizonyos szimbólummal végződik, például szóközzel, ponttal, kettősponttal vagy valamilyen jellel (felkiáltójel, kérdőjel, idézőjel stb.). Feladatunk egyszerűsítése érdekében feltételezzük, hogy a szövegben minden szó szóközzel van elválasztva, és maga a szöveg ponttal végződik. Ahogy a Char karakter adattípusáról szóló leckében elhangzott, minden karakternek megvan a sajátja egyedi kód. Az összes kód listája az ASC2 táblázatban található, amelyben a szóköz a 32-es számnak felel meg. Bármely karakter eléréséhez meg kell adni magát a karaktert aposztrófokkal, vagy meg kell adni a kódját a hash jel után.# . A szóköz karakter egy nem megjeleníthető karakter, ezért ezt a karaktert így érjük el:#32 .

A szöveg bármely szavának kiemeléséhez meg kell találnunk ennek a szónak a végét: szóközt vagy pontot (az utolsó szóhoz). A szöveg minden szavát megtaláló ciklus a következőképpen íródik:

inach:=i;

míg (S[i]<>#32) és (S[i]<>".") tegye

kezdődik

St:=St+S[i]; inc(i);

vége;

I. változó tárolja az aktuális szövegkarakter számát, inach egy szó első karakterének számát tárolja (feladatunkhoz képest egy szót számnak és bármilyen megjelenített karakterkészletnek is tekinthetünk). Változó S tartalmazza a szövegünket, és in utca A kiemelt szavunk betűről betűre formálódik.

Ha törölni akarunk egy talált szót, például ha ez a szó több mint 8 betűt tartalmaz, akkor a következő programrészletet kell írnunk:

inach:=i;

míg (S[i]<>#32) és (S[i]<>".") tegye

kezdődik

St:=St+S[i]; inc(i);

Vége;

Ha i>8 akkor

Törlés(S, inach, i-1);

else inach:=inach+i-1;

Most írjunk egy programot, amely létrehoz egy új szöveget, amely tartalmazza forrásszöveg csak ugyanazzal a betűvel kezdődő és végződő szavak:

programText2z;

($APPTYPE KONZOL)

használ

SysUtils;

Var S,St: string;

Z: 0,50;

Inach,i: bájt;

B: char;

Kezdődik

Writeln("Predlogenie írása");

Readln(S);

i:=1; z:=0; St:=""; inach:=1; //inicializálás

Miközben én csinál //általános ciklust (amíg az összes szöveg be nem fejeződik)

kezdődik

b:=S[i]; //válaszd ki az első karaktert

míg (S[i]<>#32) és (S[i]<>".") do // ciklus kiválaszt egy szót

Kezdődik

St:=St+S[i]; inc(z); inc(i);

vége;

Ha b<>S akkor //ha a szó első és utolsó betűje nem egyenlő, akkordelete(St,inach,z) //törölni kell ezt a szót a generáltból

//szöveg

Más

kezdődik inach:=inach+z+1; St:=St+#32; vége; //egyébként tovább lehet lépni, //szóközzel a szó után

ha S[i]<>"." Ezután inc(i); z:=0; //ha nem érte el a szöveg végét, akkor állítsa vissza a számlálót a szó karaktereinek számára (z) és növelje az aktuális karakter számát 1-gyel

vége;

Writeln("Szükséges előírás:");

Writeln(St); //kiírja a kapott szöveget

Readln;

Vége.

Egyéb hasonló művek, amelyek érdekelhetik.vshm>

2764. String típus 22,07 KB
Memóriaábrázolás Egyes programozási nyelvek korlátozásokat írnak elő maximális hossza karakterláncok, de a legtöbb nyelven nincsenek ilyen korlátozások. A karakterlánc típusú gépi ábrázolás fő problémái: a karakterláncok mérete meglehetősen jelentős, akár több tíz megabájt is lehet; A méret idővel változik, ami megnehezíti a karakterek hozzáadását és eltávolítását. Karaktertömb ábrázolása Ebben a megközelítésben a karakterláncok karaktertömbként vannak ábrázolva; a tömb mérete egy külön...
7176. ADATBÁZISSZERVEZÉS ÉS ADATBÁZISKEZELŐ RENDSZEREK 116,07 KB
Például mint tájékoztatási rendszer Megnézheti a vonat menetrendjét vagy a rendelési könyvet. Bármely adathordozón rögzített attribútumot adatelemnek, adatmezőnek vagy egyszerűen mezőnek nevezzük. Az adatok feldolgozása során gyakran találkozunk azonos típusú, azonos tulajdonságokkal rendelkező objektumokkal.
8335. Analóg és diszkrét információk. Adattároló adathordozók. Műveletek adatokkal. Adatkódolás. Számrendszerek. Entrópia és információmennyiség 227,54 KB
Számrendszerek. Számrendszerek Az adatkódolást régóta használják: Morse-kód Braille tengeri jelábécé, stb. Az emberiség történetében két számrendszer ismert leginkább a számok kódolására: a nem-pozíciós és a pozíciós. Mindkét számrendszert a bázis jellemzi a számok írásához használt különböző számjegyek számával, például 0-tól 9 m-ig.
8334. Shannon és Hartley képletek. Az információ mennyiségének kiszámítása. Karakterek, grafikai és audio adatok kódolása. Az adatok strukturálják Shannon képletét 140,5 KB
Az inverz problémák megoldásához, ha a bizonytalanság (H) vagy az eltávolítása eredményeként kapott információ mennyisége (I) ismert, és meg kell határozni, hogy hány egyformán valószínű alternatíva felel meg ennek a bizonytalanságnak az előfordulásának, használja az inverzt. Hartley-képlet, amely a logaritmus definíciójának megfelelően származik, és még egyszerűbbnek tűnik ...
10584. Szótáron dolgozik 12,01 KB
A szókinccsel való munka az egyik fő cél és célkitűzés az idegen nyelvoktatás módszertanában, és egyben az egyik legnehezebb probléma több okból is, amelyek közül az egyik a szókincs dinamikus jellege. A modern lexikális összetételét illetően német nyelv akkor az anyanyelvi beszélők által a mindennapi kommunikáció során használt lexikai egységek száma Stndrtsprche 300-ig terjed. Nyilvánvaló, hogy egy ilyen kötet elsajátítása még egy anyanyelvi beszélő számára is nehéz, ha nem lehetetlen, nem beszélve...
19204. Munka a sajtóval 31 KB
Anyagok biztosítása a sajtó számára, amelyek alapján az újságírók üzeneteket, riportokat, cikkeket, esszéket készítenek; sajtómegkeresések megválaszolása és átfogó információs szolgáltatások nyújtása (lehetőségek az újságírók számára forrásinformációk gyűjtésére és technikai feldolgozására), nyomon követése - nyomon követése, elemzése, értékelése sajtó-, rádió- és televízióüzenetek. Intézkedések megtétele, ha szükséges, az üzenetek hibáinak kijavítására és a cáfolat kiadására.
3933. Tömbök használata PHP-ben 8,92 KB
Eltávolító és csere elemek beszúrása egy tömbbe Az rry_push függvény egy vagy több elemet ad a tömb végéhez, az rry_pop függvény pedig eltávolítja a tömb utolsó elemét. Az rry_splice függvény eltávolítja a tömbelemek hosszát az eltolástól kezdődően, és a harmadik paraméter megadása esetén a törölt elemeket tömbelemekkel helyettesíti, a replcement, ha a hossz paraméter nincs megadva, a tömb végéig eltávolítja az elemeket. Az rry_unique függvény eltávolítja az ismétlődő értékeket egy tömbből, és csak az egyiket hagyja meg. Az rry_merge függvény egyesül...
3696. Makroszkópos készítményekkel végzett munka 4,7 KB
Az orgona alakja megmarad vagy nem, ha nem, akkor mi a deformáció. A szerv mérete körülbelül hányszorosára nő és csökken. Orgona színe a felszínről.
3936. Munka a fájlrendszerrel PHP-ben 9,24 KB
Minden fájl a néven és a tartalomon kívül paraméterekkel rendelkezik, amelyek meghatározzák a jellemzőit (létrehozás ideje, tulajdonos azonosítója, hivatkozások száma ez a fájl V fájlrendszer stb.). Az alábbi funkciók hozzáférést biztosítanak ehhez az információhoz
6343. ENERGIA, MUNKA, ERŐ 59,23 KB
Az energia és a munka fogalmát széles körben használják a mindennapi életben. Ismeretes, hogy a munka az energiatartalék miatt történik, és éppen ellenkezőleg, a munka elvégzésével bármely eszközben növelheti az energiatartalékot. Például az óra tekercselésekor végzett munka során tavasszal energiatartalékot hozunk létre, aminek köszönhetően az óra jár. Az energia fogalma minden természeti jelenséget összekapcsol.

p»їA megbízható SEO Ügynökség India növelheti a kisvállalkozások bevételeit

A felhasználók 80%-a a vásárlás előtt keres a Google-on és más keresőmotorokon, és a keresőmotorokon keresztül generált megkeresések több mint 50%-a konvertálódik. Ez a két statisztika bizonyítja a keresőoptimalizálás fontosságát. Számos olyan statisztika és tény létezik, amelyek egyértelművé teszik: minden kis-, közepes vagy nagyméretű vállalkozásnak professzionális SEO-szolgáltatásra van szüksége. A kisvállalkozások és startupok gyakran szembesülnek költségvetési problémákkal. Bármely megbízható indiai SEO ügynökség segítségét igénybe vehetik, hogy a költségvetésükben a legjobb SEO szolgáltatást kapják bevételeik növelése érdekében.
A keresés nagy hatással van a fogyasztók elméjére. A fő keresőoptimalizálási szakértők által megosztott különféle statisztikák szerint különböző engedélyezett webhelyeken, mint például a Search Engine Land, a Moz, a SEO Journal, a Digital Marketers India, a Hubspot stb. A SEO megragadja a leadek többségét. Ezenkívül az organikus keresési eredményekből érkező leadek konverziós aránya magasabb. Ezek a statisztikák és a fogyasztói magatartás világosabb rámutat arra, hogy a legjobb SEO szolgáltatás nem luxus, hanem bármely vállalkozás szükséglete.
A verseny megkerüléséhez és az üzleti növekedés fokozásához minden szervezetnek igénybe kell vennie a keresőoptimalizálási szolgáltatásokat. A nagy márkák elegendő pénzt fektethetnek be egy kiváló SEO cég vagy SEO specialista által kínált szakértő SEO szolgáltatásba, de a kisvállalkozások tulajdonosai gyakran kompromisszumot kötnek ennek a szolgáltatásnak a minőségében a kisebb költségvetés miatt. Kemény tény, hogy a kisvállalkozások és a startupok végül elhagyják a professzionális SEO szolgáltatással megteremthető lehetőségeket, vagy igénybe vesznek egy olcsó SEO szolgáltatást, amely nem hoz pozitív eredményt.
A kisvállalkozások tulajdonosai és induló vállalkozások a korlátozott költségvetés mellett is igénybe vehetik a professzionális SEO szolgáltatásokat. A legjobb megoldás egy megbízható SEO cég keresése Indiában. Indiában sok SEO szakértő dolgozik a digitális marketing ügynökséggel, és az iparág legjobb szolgáltatásokat kínálja. Ők tudják biztosítani a szükséges SEO szolgáltatásokat a költségvetésben. A bérek tárgyalhatók egy indiai SEO ügynökséggel, hogy jobb szolgáltatásokat kapjanak alacsonyabb áron. Azonban ne dőljön be az olcsó SEO szolgáltatásnak, amely kevesebbet fizet, és többet ígér, mivel a szakértelem saját költségén jár. Meg kell tekintenie a portfóliót, vagy megfelelő kérdéseket kell feltennie, mielőtt céggel szerződne.
Az indiai SEO szakértők jól ismerik a keresőoptimalizálás legjobb gyakorlatait. Ezenkívül Indiában van néhány SEO-szakértő, például Ash Vyas, akik a legjobb keresőoptimalizálási stratégia megalkotására szakosodtak egy vállalkozás számára meghatározott költségvetés mellett. A SEO szakemberek világos tervet készítenek, és azt is megosztják, hogy mi lehet a várt eredmény. Így tisztában lehet befektetésével és megtérülésével. Ez segít a jobb üzleti döntés meghozatalában.
Jó ötlet egy megbízható, indiai SEO cég keresése és szerződéskötése, amely a lehető leghamarabb a legjobb SEO szolgáltatásokat kínálja. Kezdheti egy kis költségvetéssel és korlátozott tevékenységekkel is, hogy elkezdhesse indexelni weboldalait, és növelje kulcsszavait a keresőmotorokban. Ne várja meg a tökéletes időt vagy egy napot, amikor több ezer dollárt kell befektetnie a legjobb SEO szolgáltatásokba. A korai kezdés segít gyorsabb eredmények elérésében, ha agresszíven alkalmazza marketingszemléletét. Egy indiai székhelyű, megbízható SEO cég segít meghatározni jelenlegi és jövőbeli terveit, hogy jó eredményeket érjen el. Az indexelt oldalak növelték a helyezéseket, és a folyamatos professzionális SEO gyakorlattal készített hiteles márka megduplázza a megkereséseket, az üzletet és a bevételeket. Bármely kisvállalkozás indulhat két számjegyű befektetéssel a professzionális SEO szolgáltatásokba. Számos SEO ügynökség van Indiában, amelyek alacsony költségvetést kínálnak, mégis orientált keresőoptimalizálási szolgáltatásokat nyújtanak.

száműzetésből származó felmérések

  • CraigWew

    12.04.2018

    p»їAz ügyféllel való kapcsolat kialakításának fontossága az ingatlan- és általános értékesítésben

    Az ügyféllel való kapcsolat kialakításának fontossága.
    Az ügyféllel való kapcsolat kialakítását ki kell érdemelni, és az értékesítési folyamat szerves részeként kell megközelíteni.
    Ahhoz, hogy az ügyfél és önmaga valódi egy az egyhez viszonyba kerüljön, két dologra van szükség!
    Először is tudatosnak kell lenned és ott kell lenned! Másodszor meg kell értened, hogy ennek a folyamatnak két különböző szakasza van.
    A-Légy ott-mit jelent ez?
    o A legtöbb ember nem igazán figyel a másik emberre, miközben beszél. Általában annyira elfoglaltak a következő válaszuk vagy kijelentésük megfogalmazásával, hogy aligha tudtak igazán hallgatni.
    o Ha ez úgy hangzik, mint te, ott lenni azt jelenti, hogy fogd be és hallgass!
    B-Mi az első vagy kezdeti szakasz?
    o Általában csak néhány perced van arra, hogy az ügyfelek elméjében úgy érezd magad, mint akivel foglalkozni szeretnének.
    o Ha kétségei vannak, a legjobb, ha először olyan kérdéseket tesz fel, amelyek felkeltik őket, és magukról beszélnek.
    o Mindig biztonságos szakemberként megjelenni – nem sztoikusra vagy szárazra gondolok, hanem valakire, aki tudja, mit csinál, beszél és nézi a szerepét.
    C-Egyéb szakaszok
    o Az idő múlásával a beszélgetések és a felmerülő kérdések révén vagy megállapítja a képességeit, vagy nem.
    o Legyen tudatában annak, hogy valószínűleg egy ideig mérni fognak. A jó hír az, hogy egy bizonyos ponton, ha sikeres volt a kapcsolat kialakítása, akkor ellazulnak, és mindketten az otthon megtalálására vagy eladására koncentrálhatnak.
    Mi segíthet még a kapcsolat kialakításában?
    o Megpróbálva megérteni a különböző személyiségtípusokat, majd a megfelelő kérdéseket mondva és feltenni.
    o Ha jó a kapcsolatod (a vevővel azonos hullámhosszra kerülsz), akkor az eladás lényegében véget ért, most már csak a megfelelő otthon megtalálása vagy a tőzsdei papírok kitöltése van hátra.
    Mi a helyzet a különböző személyiségekkel
    o Mivel ez nem egy pszichiátriai könyv, most csak két fő típust értsen meg.
    o Vannak introvertált és extrovertált emberek.
    o Ismered a típust. Gondoljon három olyan személyre, akit ismer, és amely megfelel az egyes besorolásoknak.
    Mi a helyzet a testbeszéddel és a beszédmintákkal?
    o Ha gyorsan vagy lassan beszélnek, próbálja utánozni beszédmintájukat.
    o Ha hangosan vagy halkan beszélnek, tegye ugyanezt. Előre vagy hátra hajolnak?
    o Mondanom sem kell, hogy sok könyvet írtak erről a témáról. Legyen tudatában annak, hogy ez egy fontos tényező – különösen akkor, ha egy konferenciateremben ül vagy valaki otthonában egy 400 000 dolláros üzletről beszél.
    A kapcsolat kialakítása tanulható és fejleszthető készség.
    o Mindannyian tapasztaltunk már olyan eladót, aki eladott nekünk valamit, de mégsem éreztük úgy, hogy eladtak minket. Ennek az az oka, hogy ő érezte jól magát ott, ahol megbízott bennük.
    Hogyan alakítsuk ki a kapcsolatot?
    o Használja a szemét és a fülét, és tegyen fel kérdéseket. Megmagyarázni
    o Használja a szemet:
    o Nézd meg a ruhájukat – az autójukat – a személyes javaikat, és úgy értem, tényleg nézd meg őket, és fejtsd meg, mit árul el róluk.
    o Használja a füleket:
    o Hallgassa meg, mit mondanak, és tegyen fel kérdéseket, hogy a valódi MOTIVÁCIÓK mélyére jusson!
    Most az egész beszélgetés során valószínűleg lesz egy-két dolog, amit felfedezni fog, ami közös bennük. (Család, földrajzi területek, horgászat stb.) Ha közös nevezőre bukkan, tudassa velük, hogy ismerős, majd szánjon egy percet, hogy megbeszélje velük.
    Mi a Cél?
    o Ha egyszer elfogadnak közülük, akkor valóban nagy tapasztalatra tehet szert az értékesítésben, mivel most együtt, majd csapatként dolgozik – már nem az az eladó, aki jelenleg tanácsadói pozícióban van. .
    o Ne feledje, az ügyfél vagy megengedi, vagy nem engedi belépni a világába. Ha ezt megérted, és valóban keményen dolgozol, hogy empatikussá válj vele, akkor bizalmi pozíciót szerezhetsz. A legtöbb esetben valóban látni fogod, hogy ellazulnak (testbeszéd), amikor ez megtörténik, amikor úton vagy.
    o Ennek illusztrálására tartottál-e valaha beszédet, és észrevetted, hogy amikor végre kapcsolatba lépsz a hallgatóság egyik tagjával, ők helyeslően bólogatnak. Ezek a dolgok mind elcsépeltnek tűnhetnek, de nem azok.
    Zárásként elmondható, hogy ha sikerül kivívni a vásárlók bizalmát, egy termék vagy szolgáltatás értékesítése sokkal könnyebb, és az élmény minden érintett számára kellemetlen lehet.
    Mindig emlékezz arra, hogy a győzelem/nyerés a legjobb helyzet.

Bevezetés

A szövegfeldolgozás az egyik leggyakoribb programozási feladat. Ha bármilyen szöveges adatot kell feldolgoznia, egyszerűen nem teheti meg az alábbiakban bemutatott anyag ismerete nélkül. Főleg, ha az adatokat nem személyesen, hanem valakik generálták harmadik féltől származó program vagy egy másik személy.

Szimbólumok

A karakter a szöveg egy egysége. Ez egy betű, egy szám, valamiféle jel. A karakterkód táblázat a következőkből áll 256 pozíciók, azaz. minden karakternek megvan a sajátja egyedi kód 0-tól 255-ig. Karakter valamilyen kóddal Nígy írd le: #N. A programkódban pontosan így jelennek meg a szimbólumok. Mivel a karakterkód egy 255-nél nem nagyobb szám, nyilvánvaló, hogy a memóriában karakter 1 bájtot vesz igénybe. Mint tudod, nincs egy bájtnál kisebb dimenzió. Pontosabban létezik - ez egy bit, de nem tudunk bitekkel dolgozni egy programban: a bájt a minimális egység. A szimbólumok és kódjaik táblázatát a segítségével tekintheti meg szabványos segédprogram "szimbólum táblázat", amely megtalálható a Windowsban (a parancsikon a menüben található Start - Programok - Kellékek - Rendszereszközök). De hamarosan mi magunk is írunk valami hasonlót.

Húrok

Vonal, más néven szöveg karakterek halmaza, ezek tetszőleges sorozata. Ennek megfelelően egy karakter karakterlánc is egyben, szöveg is. Szövegkarakterlánc meghatározott hosszúságú. A karakterlánc hossza a benne lévő karakterek száma. Ha egy karakter 1 bájtot foglal el, akkor egy N karakterből álló sorozat N bájtot foglal el.
Vannak más kódtáblázatok is, amelyekben 1 karaktert nem egy bájt, hanem kettő jelképez. Ez Unicode (Unicode). A Unicode táblázat a világ összes nyelvéről tartalmaz karaktereket. Sajnos a Unicode-dal dolgozni meglehetősen nehéz, és a támogatása egyelőre csak helyi. A Delphi nem biztosít Unicode-képességeket. Szoftver rész igen, de itt vannak a látványelemek - formák, gombok stb. nem jeleníthet meg szöveget Unicode formátumban. Reméljük, hogy a közeljövőben megjelenik egy ilyen támogatás. 2 byte-ot is hívnak egy szóban (szó). Innen a megfelelő numerikus adattípus neve - Szó(egy szám, amely 2 bájtot foglal el a memóriában, értékek 0 és 65535 között). A Unicode táblázatban a „cellák” száma 65536, és ez elég a világ összes nyelvének tárolására. Ha úgy dönt, hogy „1 bájt - 256 érték, majd 2 bájt - 2 * 256 = 512 érték”, azt tanácsolom, hogy emlékezzen a bináris rendszerre és a számítógépben való adattárolás elvére.

Adattípusok

Térjünk át közvetlenül a programozásra. Léteznek megfelelő adattípusok a karakterekkel és karakterláncokkal való munkához:

Char - egy karakter (azaz 1 bájt);
String - karakterlánc, szöveg (N bájt).

Hivatalosan a karakterláncok csak 255 karaktert tartalmazhatnak, de a Delphiben sokkal többet írhatsz karakterlánconként. A nagy szövegek és a speciális karaktereket tartalmazó szövegek tárolására speciális adattípusok léteznek. AnsiStringÉs WideString(utóbbi egyébként kétbájtos, azaz Unicode-hoz való).

A szöveges értékek Pascalban történő beállításához használja a egyetlen idézőjel(nem duplán!). Azok. Ha értéket szeretne hozzárendelni egy karakterlánc-változóhoz, ezt a következőképpen kell megtennie:

S:="szöveg" ;

A karakterek ugyanúgy vannak megadva, csak egyetlen karakter van az idézőjelben.

Ha szigorúan korlátozni szeretné egy karakterlánc-változóban tárolt szöveg hosszát, ezt a következőképpen teheti meg:

var s: string [10] ;

A maximális sorhossz zárójelben van feltüntetve.

String műveletek

A húrokkal végzett fő művelet az összeadás. A számokhoz hasonlóan karakterláncok is hozzáadhatók. És ha nem tud számokban hozzáadni a narancssárga székeket, akkor sorokban megteheti. A karakterlánc-összeadás egyszerűen egyesíti őket. Példa:

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

Mivel minden sor karaktersorozat, minden karakternek saját sorszáma van. Pascalban a karakterek számozása a sorokban 1-től kezdődik. Azaz. Sorban " ABC" szimbólum " A" - első, " B" - második stb.
Egy karakter sorszámát egy sorban nem véletlenül találták ki, mert ezek a számok, indexek alapján hajtanak végre műveleteket a vonalakon. A karakterláncból bármilyen karaktert megkaphat, ha a változó neve mellett szögletes zárójelben adja meg a számát. Például:

var s: string ; c: char ; ... s :="Sziasztok!" ; c:=s[2] ; //c = "e"

Kicsit később, amikor a tömböket tanulmányozzuk, világossá válik, hogy a karakterlánc karakterek tömbje. Ez magában foglalja az egyes szimbólumok megszólításának formáját.

String feldolgozás

Térjünk át a karakterláncok feldolgozásának függvényeire és eljárásaira.

Húr hossza

A karakterlánc hosszát a függvény segítségével találhatjuk meg Hossz(). A függvény egyetlen paramétert vesz fel - egy karakterláncot, és visszaadja a hosszát. Példa:

var Str : String ; L: Integer ; ( ... ) Str :="Sziasztok!" ; L:=Hossz(Str); //L = 6

Alkarakterlánc keresése egy karakterláncban

Egy eredendő feladat egy részkarakterlánc megtalálása a karakterláncban. Azok. a probléma a következőképpen fogalmazódik meg: van egy karakterlánc S1. Határozza meg, hogy egy karakterlánc milyen pozícióból lép be S2. Lehetetlen elképzelni semmilyen feldolgozást e művelet végrehajtása nélkül.
Tehát egy ilyen megállapításhoz van egy függvény Pozíció(). A függvény két paramétert vesz fel: az első - részkarakterlánc, amit meg kell találni, a második - vonal, amelyben keresni szeretne. A keresés a karakterek esetének figyelembevételével történik. Ha a függvény egy részkarakterlánc előfordulását találja egy karakterláncban, akkor az első előfordulásának pozíciószámát adja vissza. Ha nem található bejegyzés, a függvény 0-t ad vissza. Példa:

var Str1, Str2: String ; P: Integer ; ( ... ) Str1:="Szia! Hogy vagy?" ; Str2:="do" ; P:=Pos (Str2, Str1); //P = 9

Egy vonal egy részének eltávolítása

Az eljárás segítségével törölheti a sor egy részét Töröl(). Meg kell jegyezni, hogy ez egy eljárás, nem pedig egy függvény – közvetlenül a neki átadott változón hajt végre műveleteket. Tehát az első paraméter egy string típusú változó, amelyből a töredék törlődik (pontosan változó! Konkrét érték nincs beállítva, mivel az eljárás nem ad vissza eredményt), a második paraméter annak a karakternek a száma, amelyből a töredéket kell törölni, a harmadik paraméter az eltávolítandó karakterek száma. Példa:

var Str1: String ; ( ... ) Str1:="Szia, világ!" ; Törlés(Str1, 6, 7); // Str1 = "Helló!"

Meg kell jegyezni, hogy ha a törölt töredék hossza nagyobb, mint a sorban lévő karakterek száma, a megadott pozíciótól kezdve (azaz „megyünk túl a szélen”), a funkció normálisan fog működni. Ezért, ha el kell távolítania egy töredéket egy karakterláncból egy karaktertől a végéig, akkor nem kell kiszámítania ezeknek a karaktereknek a számát. A legjobb mód magának a karakterláncnak a hosszát állítja be.

Íme egy példa. Tegyük fel, hogy meg szeretné találni a karakterlánc első betűjét a" és törölje az azt követő sor részt. Tegyük ezt a következőképpen: keressük meg a betű pozícióját a függvényt tartalmazó sorban Pozíció(), és törölje a töredéket a függvény segítségével Töröl().

var Str : String ; ( ... ) Str :="Ez egy teszt." ; Törlés (Str ,Pos ("a" ,Str ) ,Length (Str ) ) ;

Próbáljuk meg helyettesíteni az értékeket, és nézzük meg, mi kerül át a függvénybe Töröl. Első levél " a" a sorban a 9. helyen van. A teljes sor hossza 15 karakter. Ez azt jelenti, hogy a függvényhívás a következő: Delete(Str,9,15). Látható, hogy a " betűből a"csak 7 karakter van a sor végéig... De a függvény a különbség ellenére elvégzi a dolgát. Az eredmény természetesen a sor lesz" Ez". Ez a példa egyszerre több funkció kombinációját mutatta.

Egy karakterlánc egy részének másolása (kibontása).

Egy másik fontos feladat egy karakterlánc egy részének másolása. Például egyes szavak kinyerése a szövegből. Kijelölheti a vonal töredékét a felesleges részek eltávolításával, de ez a módszer kényelmetlen. Funkció Másolat() lehetővé teszi, hogy egy karakterláncból egy adott részt másoljon. A függvény 3 paramétert vesz fel: szöveget (karakterláncot), amelyből másolni kell, a karakter számát, amelyről másolni kíván, és a másolandó karakterek számát. A függvény eredménye egy karakterlánc töredék lesz.

Példa: tegyük fel, hogy ki kell választanunk az első szót a mondatból (a szavakat szóközzel választjuk el). Az űrlapra helyezzük Szerkesztés1 (TEdit), amelybe a mondat bekerül. A művelet egy gomb megnyomásával történik. Nekünk van:

eljárás TForm1.Button1Click (Küldő: TObject ) ; var s,szó: string ; begin s:=Edit1.Text ; word:=Másolás (s,1 ,Pos (" " ,s) -1 ) ; ShowMessage("Első szó: " +szó) ; vége ;

Ebben az esetben az elejétől az első szóközig terjedő töredéket másol a karakterláncból. A karakterek számát eggyel kevesebbnek vesszük, mert ellenkező esetben a hely is másolásra kerül.

Alkarakterlánc beszúrása egy karakterláncba

Ha egy másik sort szeretne beszúrni egy meglévő sorba, használhatja az eljárást Insert(). Az első paraméter a beszúrandó sor, a második a beszúrni kívánt sort tartalmazó változó, a harmadik pedig az a pozíció (karakterszám), ahonnan a sor beszúrásra kerül. Példa:

eljárás TForm2.Button1Click (Küldő: TObject) ; var S: String; begin S:="1234567890" ; Insert("000" ,S,3 ) ; ShowMessage(S) end ;

Ebben az esetben az eredmény a „1200034567890” karakterlánc lesz.

"Komolyabb" példa

A fenti példák csak a karakterláncokkal való munka elvét mutatják be függvények használatával Hossz(), Pozíció(), Töröl()És Másolat(). Most oldjunk meg egy bonyolultabb problémát, amelyhez ezeknek a függvényeknek a kombinált használata szükséges.

Feladat: a Memo mezőbe beírt szöveget bontsa szavakra, és jelenítse meg a ListBoxban, soronként egyet. A szavakat szóközök, pontok, vesszők, felkiáltójelek és kérdőjelek választják el egymástól. Ezenkívül jelenítse meg a szövegben lévő szavak teljes számát és a szavak közül a leghosszabbat.

Így van... A feladat egyáltalán nem könnyű. Először is azonnal rá kell jönnie, hogy hurkokat kell használnia. Ezek nélkül nem megy, mert nem tudjuk, hogy milyen szöveg kerül át a programba feldolgozásra. Másodszor, a szavakat különböző szimbólumok választják el egymástól - ez további nehézségeket okoz. Nos, menjünk sorban.

Felület: Memo1 (TMemo), Gomb 1 (TButton), ListBox1 (TListBox), Címke1, Címke2 (TLabel).

Először vigyük át a beírt szöveget egy változóba. Ahhoz, hogy az összes szöveget egyszerre vegyük át a Memo-ból, térjünk át a tulajdonságra Vonalak.Szöveg:

eljárás TForm1.Button1Click (Küldő: TObject ) ; var Szöveg: string ; begin Szöveg:=Memo1.Lines .Text ; vége ;

Most térjünk át a feldolgozásra. Az első dolog, amit meg kell tennie, hogy foglalkozzon a határoló karakterekkel. Az a helyzet, hogy az ilyen szimbólumok könnyen sorba jöhetnek, mert a vesszők, pontok és egyéb karakterek után szóköz van. Ezt a nehézséget ilyen egyszerű módon kerülheti meg: cserélje ki az összes elválasztó karaktert eggyel, például vesszővel. Ehhez menjünk végig az összes karakteren, és végezzük el a szükséges cseréket. Annak megállapításához, hogy egy karakter határoló-e, az összes határolót egy külön karakterlánc-változóba írjuk (konstans), majd keressük meg a karakterlánc minden karakterét a függvénnyel. Pozíció(). Mindezek a cserék egy változóban kerülnek végrehajtásra, így a feljegyzés eredeti szövegét (azaz a képernyőn) nem érinti. A munka közbenső eredményeinek ellenőrzéséhez azonban célszerű valahova kiadni a feldolgozott szöveget. Például egy másik Memo mezőbe. Az összes karakteren való végigmenéshez használjon hurkot FOR, ahol a változó végigmegy az összes karakter sorszámán, azaz. 1-től a szövegsor hosszáig:

eljárás TForm1.Button1Click (Küldő: TObject ) ; const DelSym = ".,!?" ; var Szöveg: string ; i:integer ; begin Szöveg:=Memo1.Lines .Text ; i:= 1-től hosszúságig (szöveg) tegye ha Pos (Szöveg[ i] ,DelSym) > 0, akkor Szöveg[ i] :="," ; Memo2.Text :=Szöveg; vége ;

Most meg kell szüntetni az interferenciát. Először is, az első karakter nem lehet határoló, pl. ha az első karakter vessző, akkor azt el kell távolítani. Következő, ha több vessző van egymás után, azokat le kell cserélni egyre. Végül az összes szöveg helyes feldolgozásához az utolsó karakternek vesszőnek kell lennie.

ha Szöveg[ 1 ] = "," akkor Törlés (Szöveg,1 ,1 ) ; míg Pos ("," ,Szöveg) > 0 törlést tesz (Szöveg,Pos ("," ,Szöveg) ,1 ) ; ha Szöveg[ Hossz (Szöveg) ]<>"," majd Text:=Szöveg+"," ;

Itt a csere a következőképpen történik: egy ciklus szerveződik, amelyben az egyik vesszőt eltávolítják, de ez addig történik, amíg két egymást követő vessző van a szövegben.

Nos, most már nem maradt semmi felesleges a szövegben - csak a vesszővel elválasztott szavak. Először is biztosítjuk, hogy a program kivonja az első szót a szövegből. Ehhez megkeressük az első vesszőt, a szöveg elejéről ebbe a vesszőbe másoljuk a szót, majd a vesszővel együtt töröljük ezt a szót a szövegből. A törlés azért történik, hogy ugyanazon művelet végrehajtása után kivághassa a következő szót.

var Szó: string ; (...) Word:=Másolás (Szöveg,1 ,Pos ("," ,Szöveg) -1 ) ; Törlés (Szöveg,1 ,Hossz (Szó) +1 ) ;

Most a változóban Szó van egy szavunk a szövegből, és a változóban Szöveg a szöveg többi része. A kivágott szó most hozzáadásra került ListBox, hívás ListBox.Items.Add(hozzáadandó_sor).

Most meg kell szerveznünk egy hurkot, amely lehetővé teszi, hogy minden szót kivágjunk a szövegből, és ne csak az elsőt. Ebben az esetben megfelelőbb lenne ISMÉTLÉS, hogyan MÍG. A feltétel legyen Hossz(szöveg) = 0, azaz akkor fejezze be a ciklust, amikor a szöveg kiürül, pl. amikor minden szót kivágunk belőle.

repeat Word:=Másolás (Szöveg,1 ,Pos ("," ,Szöveg) -1 ) ; Törlés (Szöveg,1 ,Hossz (Szó) +1 ) ; ListBox1.Items.Add(Word) ; amíg Hossz (Szöveg) = 0 ;

Hamar Ebben a pillanatban nekünk van:

eljárás TForm1.Button1Click (Küldő: TObject ) ; const DelSym = ".,!?" ; var Szöveg,Szó : string ; i:integer ; begin Szöveg:=Memo1.Lines .Text ; i:= 1-től hosszúságig (szöveg) tegye ha Pos (Szöveg[ i] ,DelSym) > 0, akkor Szöveg[ i] :="," ; ha Szöveg[ 1 ] = "," akkor Törlés (Szöveg,1 ,1 ) ; míg Pos ("," ,Szöveg) > 0 törlést tesz (Szöveg,Pos ("," ,Szöveg) ,1 ) ; ismétlés Word :=Másolás (Szöveg,1 ,Pos ("," ,Szöveg) -1 ) ; Törlés (Szöveg,1 ,Hossz (Szó) +1 ) ; ListBox1.Items.Add(Word); amíg Hossz (Szöveg) = 0 ; vége ;

Ha most futtatja a programot, látni fogja, hogy minden jól működik. Egy dolgot kivéve - néhány üres sor jelent meg a ListBox végén... Felmerül a kérdés: honnan jöttek? Erről a lecke következő részében fogsz tudni, de most végre hajtsuk végre a szükséges dolgokat.

Nagyon könnyű meghatározni a szavak számát a szövegben - nem kell újra írnia semmit. Mert A ListBox-ban felsoroltuk a szavakat, elég csak megtudni, hány sor van - ListBox.Items.Count.

Címke1.Felirat := "A szavak száma a szövegben:"+IntToStr(ListaBox1.Elemek.Szám);

Most meg kell találnia a leghosszabb szót. A maximális szám megtalálásának algoritmusa a következő: a számok közül az elsőt vesszük maximálisnak. Ezután az összes többi számot így ellenőrizzük: ha a szám nagyobb, mint a jelenleg maximumnak írt szám, akkor ezt a számot maximumra tesszük. Esetünkben a maximális szóhosszt kell keresnünk. Ehhez hozzáadhat kódot a szövegből kivágott szavak ciklusához, vagy keresést végezhet, miután az összes szót hozzáadta a ListBoxhoz. Tegyük meg a második módon: szervezzünk hurkot a ListBox sorain keresztül. Figyelembe kell venni, hogy a sorok számozása nullától kezdődik, nem egytől! A leghosszabb szót külön változóban tároljuk. Úgy tűnik, a szó maximális hosszát is el kell tárolnunk, hogy legyen mivel összehasonlítani... De ehhez nem kell külön változót létrehozni, mert mindig megtudhatjuk a szó hosszát a Length() függvény segítségével. Tehát mondjuk az első szó a leghosszabb...

var LongestWord: string ; (...) LongestWord:=ListBox1.Items [ 0 ] ; for i:= 1 to ListBox1.Items .Count -1 do if Length (ListBox1.Items [ i] ) > "Leghosszabb szó:"+LongestWord+" (" +IntToStr (Length (LongestWord) ) +" betűk)" ;

Minek biciklizni addig ListBox.Items.Count-1, nem csak addig Számol, találd ki magad :-)

Most minden készen áll!

eljárás TForm1.Button1Click (Küldő: TObject ) ; const DelSym = ".,!?" ; var Szöveg,Szó ,LongestWord: string ; i:integer ; begin Szöveg:=Memo1.Lines .Text ; i:= 1-től hosszúságig (szöveg) tegye ha Pos (Szöveg[ i] ,DelSym) > 0, akkor Szöveg[ i] :="," ; ha Szöveg[ 1 ] = "," akkor Törlés (Szöveg,1 ,1 ) ; míg Pos ("," ,Szöveg) > 0 törlést tesz (Szöveg,Pos ("," ,Szöveg) ,1 ) ; Szöveg:=AnsiReplaceText(Szöveg,Chr (13) ,"" ) ; Szöveg:=AnsiReplaceText(Szöveg,Chr (10 ) ,"" ) ; ismétlés Word :=Másolás (Szöveg,1 ,Pos ("," ,Szöveg) -1 ) ; Törlés (Szöveg,1 ,Hossz (Szó) +1 ) ; ListBox1.Items.Add(Word); amíg Hossz (Szöveg) = 0 ; Címke1.Felirat := "A szavak száma a szövegben:"+IntToStr(ListaBox1.Elemek.Szám); LongestWord:=ListBox1.Items [ 0 ] ; for i:= 1 to ListBox1.Items .Count -1 do if Length (ListBox1.Items [ i] ) > Length (LongestWord) then LongestWord:=ListBox1.Items [ i] ; Címke2.Felirat := "Leghosszabb szó:"+LongestWord+" (" +IntToStr (Length (LongestWord) ) +" betűk)" ; vége ;

Munka szimbólumokkal

Valójában a szimbólumokkal való munka két fő funkció használatából fakad: Rend()És Chr(). Velük már találkoztunk. Funkció Rend() visszaadja a megadott karakter kódját és a függvényt Chr()- ellenkezőleg, egy karaktert ad vissza a megadott kóddal.

Emlékezik" Szimbólum táblázat"? Csináljuk mi magunk!

A következtetést le lehet vonni TStringGrid. Ez az összetevő egy táblázat, amelyben minden cella szöveges értéket tartalmaz. Az alkatrész a fülön található További(alapértelmezett közvetlenül a Standard után). Először is állítsuk fel a táblánkat. Csak két oszlopra van szükségünk: az egyikben a szimbólumkódot jelenítjük meg, a másikban pedig magát a szimbólumot. Az oszlopok száma egy logikai nevű tulajdonságban van beállítva ColCount. Állítsa egyenlőnek 2-vel. Alapértelmezés szerint StringGrid egy fix oszlop és egy fix sor van megadva (szürkén jelennek meg). Nem kell az oszlop, de a sor nagyon hasznos, ezért tesszük FixedCols= 0, a FixedRows távozás = 1.

A kitöltés közvetlenül a program indításakor történik, pl. Nem telepítünk semmilyen gombot. Tehát hozzunk létre egy eseménykezelőt OnCreate() formák.

A kódtábla karaktereinek száma 256, plusz a fejléc - összesen 257. Állítsuk be programozottan a sorok számát (bár az Object Inspectorban is beállíthatjuk):

eljárás TForm1.FormCreate (Sender: TObject ) ; begin StringGrid1.RowCount :=257 ; vége ;

A következtetés rendkívül egyszerű - hurok segítségével. Egyszerűen végigmegyünk a számokon 0-tól 255-ig, és megjelenítjük a megfelelő szimbólumot. A fejlécben is megjelenítjük a feliratokat. Cella hozzáférés StringGrid az ingatlan felhasználásával végzett Sejtek: Cellák[oszlopszám, sorszám]. Az oszlop- és sorszámok (nullától kezdve) szögletes zárójelben vannak feltüntetve. Az értékek szövegesek.

eljárás TForm1.FormCreate (Sender: TObject ) ; var i: Integer ; begin StringGrid1.RowCount :=257 ; StringGrid1.Cells [ 0 ,0 ] :="Kód" ; StringGrid1.Cells [ 1 ,0 ] :="Karakter" ; i:= 0-tól 255-ig kezdje a StringGrid1.Cells [ 0 ,i+1 ] :=IntToStr (i) ; StringGrid1.Cells [ 1 ,i+1 ] :=Chr (i) ; vége ; vége ;

Indítsuk el és nézzük meg.

Különleges szimbólumok

Ha alaposan megnézi a táblázatunkat, látni fogja, hogy sok szimbólum négyzetként jelenik meg. Nem, ezek nem ikonok. Így jelennek meg azok a karakterek, amelyek nem rendelkeznek vizuális megjelenítéssel. Azok. létezik például egy 13-as kódú szimbólum, de az láthatatlan. Ezeket a szimbólumokat további célokra használjuk. Például a #0 karaktert (vagyis a 0 kódú karaktert) gyakran használják a karakter hiányának jelzésére. Vannak olyan vonalak is, amelyeket hívnak null-végű- ezek a #0 karakterrel végződő sorok. Az ilyen karakterláncokat a C nyelv használja.
A billentyűleütések kódok alapján azonosíthatók. Például az Enter billentyű kódja 13, Escape - 27, szóköz - 32, Tab - 9 stb.
Adjuk hozzá programunkhoz azt a lehetőséget, hogy bármelyik kulcs kódját megtudjuk. Ehhez feldolgozzuk az űrlapeseményt OnKeyPress(). Ahhoz, hogy ez a mechanizmus működjön, be kell állítania az űrlapot KeyPreview = Igaz.

eljárás TForm1.FormKeyPress (Sender: TObject ; var Kulcs: Char ) ; start ShowMessage( "Billentyűkód:"+IntToStr(Rend(kulcs))); vége ;

Itt egy ablakot jelenítünk meg szöveggel. Az eseménynek van egy változója Kulcs, amely a lenyomott gombnak megfelelő karaktert tárolja. A funkció használata Rend() keresse meg ennek a szimbólumnak a kódját, majd használja a funkciót IntToStr() Alakítsuk át ezt a számot karaktersorozattá.

Példa "komolyabb" - folytatta

Térjünk vissza példánkhoz. Ideje kitalálni, honnan származnak a ListBox üres sorai. A lényeg az, hogy nem teljesen üresek. Igen, vizuálisan üresek, de valójában mindegyikben van 2 speciális karakterek. Ezek 13-as és 10-es kódú karakterek (azaz #13#10. sor). A Windows rendszerben e két nem vizuális karakter sorozata az aktuális sor végét és elejét jelenti új sor. Azok. Minden fájlban és általában bárhol a sortörés két karakterből áll. És ennek megfelelően az egész szöveg folyamatos karaktersorozat marad. Ezeket a karaktereket lehet (sőt kell is) használni olyan esetekben, amikor sortörést kell beszúrni. Erről bővebben a cikkben olvashat. Az összes korábbi leckében megszerzett tudás, beleértve ezt is, elég ahhoz, hogy megértse ezt a cikket - meglehetősen rövid.

Vigyük a szókereső programunkat a logikus végkifejletig. Tehát, hogy megszabaduljunk az üres soroktól, el kell távolítanunk a #13 és #10 karaktereket a szövegből. Ez megtehető egy hurok használatával, hasonlóan ahhoz, ahogy két vesszőt cseréltünk eggyel:

míg Pos (Chr (13 ) ,Szöveg) > 0 do Delete (Szöveg,Pos (Chr (13 ) ,Szöveg) ,1 ) ; míg Pos (Chr (10 ) ,Szöveg) > 0 do Delete (Szöveg,Pos (Chr (10) ,Szöveg) ,1 ) ;

Nos, a program teljesen működőképes!

További funkciók a karakterláncokkal való munkához - StrUtils modul

Kiegészítő modul StrUtils.pas tartalmaz további funkciókat húrokkal való munkához. Ezen funkciók között számos hasznos funkció található. Néhány funkciót a cikk részletesebben tárgyal. És itt Rövid leírás gyakran használt funkciók:

PosEx(részkarakterlánc, vonal, behúzás) - a függvényhez hasonló függvény Pozíció(), hanem a megadott pozícióból keresve (azaz a sor elejétől behúzva). Például, ha a második szóközt szeretné megtalálni egy karakterláncban, és nem az elsőt, akkor nem nélkülözheti ezt a függvényt. A második szóköz kézi kereséséhez először ki kell vágnia az eredeti karakterlánc egy részét.

AnsiReplaceStr, AnsiReplaceText (vonal, szöveg_1, szöveg_2) - a függvények cserét hajtanak végre egy karakterláncban vonal vonalak szöveg_1 tovább szöveg_2. A funkciók csak abban különböznek, hogy az első a karakterek esetét figyelembe véve cserét hajt végre, a második pedig anélkül.
Programunkban ezekkel a függvényekkel kivághatjuk a #13-as és #10-es karaktereket egy karakterláncból úgy, hogy egy üres karakterláncot adunk meg helyettesítő szövegként. Íme a megoldás egy kódsorban:

Szöveg:=AnsiReplaceText(AnsiReplaceText(Szöveg,Chr (13 ) ,"" ) ,Chr (10 ) ,"" ) ;

DupeString(vonal, ismétlődések_száma) - a karakterláncból álló karakterláncot alkot vonal meghatározott számú megismétlésével.

ReverseString(vonal) - megfordítja a karakterláncot (" 123 " -> "321 ").

Érdemes megemlíteni a regiszterkonverziós funkciókat is.

Nagybetűs(vonal) - karakterláncot alakít át nagybetűs; Kisbetűs(vonal) - a karakterláncot kisbetűvé alakítja.

Az egyes karakterek konvertálásához ugyanazokat a függvényeket kell használnia.

Az egyes funkciókról részletes információkat kaphat, ha a kódszerkesztőben bárhová beírja a nevét, ráhelyezi a kurzort erre a névre (vagy kiemeli), és megnyomja az F1 billentyűt.

Képernyőképek a cikkben leírt programokról