Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых частых Π·Π°Π΄Π°Ρ‡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ². Но Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ спСциалисты ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ быстро Π½Π°ΠΉΡ‚ΠΈ индСкс ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строки β€” Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ для удалСния, измСнСния ΠΈΠ»ΠΈ просто для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массивов, Π³Π΄Π΅ индСксация ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ 5 ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… способов получСния индСкса строки β€” ΠΎΡ‚ стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎ малоизвСстных ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ускорят Π²Π°ΡˆΡƒ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Найти(), ИндСкс(), ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ индСксам ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ падСнию систСмы.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам 1Π‘, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ для Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3.20+), Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ….

1. ΠœΠ΅Ρ‚ΠΎΠ΄ Найти(): классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ способ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти(). Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ строку, Π° ΡƒΠΆΠ΅ ΠΎΡ‚ Π½Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс Ρ‡Π΅Ρ€Π΅Π· свойство ИндСкс. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ строку ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ.

Основной синтаксис:

НайдСннаяБтрока = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Найти(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Колонка);

Если НайдСннаяБтрока <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = НайдСннаяБтрока.ИндСкс;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Π“Π΄Π΅:

  • πŸ”Ή Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ: строка, число, Π΄Π°Ρ‚Π° ΠΈ Ρ‚.Π΄.)
  • πŸ”Ή Колонка β€” имя ΠΈΠ»ΠΈ индСкс ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ вСдётся поиск
  • πŸ”Ή НайдСннаяБтрока β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π°Π±Π»ΠΈΡ†Ρ‹Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ссли поиск ΡƒΡΠΏΠ΅ΡˆΠ΅Π½, ΠΈΠ»ΠΈ НСопрСдСлСно, Ссли строка Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с поиском ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "Код":

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Код");

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("НаимСнованиС");

Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

Π’Π—[0].Код = 100;

Π’Π—[0].НаимСнованиС = "Π’ΠΎΠ²Π°Ρ€ 1";

НайдСннаяБтрока = Π’Π—.Найти(100, "Код");

Если НайдСннаяБтрока <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс строки: " + НайдСннаяБтрока.ИндСкс); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 0

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Найти() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ строку с Π½Π°Ρ‡Π°Π»Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Если Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ нСсколько строк с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½ индСкс самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ. Для поиска всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ».
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска индСкса Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Найти()
ИндСкс()
ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΎΠΌ
Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

2. ΠœΠ΅Ρ‚ΠΎΠ΄ ИндСкс(): ΠΊΠΎΠ³Π΄Π° строка ΡƒΠΆΠ΅ извСстна

Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ссылка Π½Π° строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС добавлСния ΠΈΠ»ΠΈ поиска), самый быстрый способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ индСкс β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство ИндСкс. Π­Ρ‚ΠΎ свойство доступно для любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π°Π±Π»ΠΈΡ†Ρ‹Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸš€ МгновСнноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€” Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ поиска ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅
  • πŸ”— Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ для строк, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π±Π΅Π· явного указания индСкса
  • πŸ”„ ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для динамичСски измСняСмых Ρ‚Π°Π±Π»ΠΈΡ†

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ");

НоваяБтрока = Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ = 1;

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс Π½ΠΎΠ²ΠΎΠΉ строки: " + НоваяБтрока.ИндСкс); // ВсСгда Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ послСдний индСкс

Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс: Ссли строка Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΅Ρ‘ свойству ИндСкс ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС. ВсСгда провСряйтС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ссылки:

Если Π’Π—.НайтиБтроку(НоваяБтрока) <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ИндСкс = НоваяБтрока.ИндСкс;

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π°!");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

πŸ’‘

Для часто измСняСмых Ρ‚Π°Π±Π»ΠΈΡ† Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ индСксы строк Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ массивС ΠΈΠ»ΠΈ словарС β€” это ускорит доступ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠΈΡ‚ ошибок ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ.

3. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΎΠΌ: ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ

Когда стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ подходят (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ строку ΠΏΠΎ слоТному ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΈΠ»ΠΈ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ), Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ строк Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ сработаСт Π² любой вСрсии 1Π‘ ΠΈ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ поиска.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

  1. ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠΈΠ»ΠΈ Пока
  2. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки провСряСм условиС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, совпадСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…)
  3. ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠΉ строки Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Ρ‘ индСкс Ρ‡Π΅Ρ€Π΅Π· Π’Π—.ИндСкс(ВСкущаяБтрока)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ:

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Артикул");

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π¦Π²Π΅Ρ‚");

// ЗаполняСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

...

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠΡ€Ρ‚ΠΈΠΊΡƒΠ» = "ABC123";

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠ¦Π²Π΅Ρ‚ = "ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ";

Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = -1; // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ"

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π— Π¦ΠΈΠΊΠ»

Если Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Артикул = Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠΡ€Ρ‚ΠΈΠΊΡƒΠ» И Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π²Π΅Ρ‚ = Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠ¦Π²Π΅Ρ‚ Π’ΠΎΠ³Π΄Π°

Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = Π’Π—.ИндСкс(Π‘Ρ‚Ρ€ΠΎΠΊΠ°);

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Если Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = -1 Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°!");

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс: " + Π˜Π½Π΄Π΅ΠΊΡΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† (10 000+ строк) Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. Π’ этом случаС:

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ НайтиБтроки() с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»)
  • πŸ“Š ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ БоотвСтствиС для ускорСнного поиска
  • πŸ’Ύ Для статичСских Π΄Π°Π½Π½Ρ‹Ρ… создайтС индСксный массив Π·Π°Ρ€Π°Π½Π΅Π΅

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти() для простых условий|

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» послС нахоТдСния строки (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ)|

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ|

Для слоТных условий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ НайтиБтроки() с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ-->

4. ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки(): поиск с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ

ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки() β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для поиска строк ΠΏΠΎ слоТным условиям. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΎΡ‚Π±ΠΎΡ€Ρƒ, Π° ΡƒΠΆΠ΅ ΠΎΡ‚ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСксы. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ:

  • 🎯 Найти всС строки, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ)
  • πŸ”„ ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€ ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ
  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сравнСния (>, <, Like ΠΈ Π΄Ρ€.)

Бинтаксис:

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.НайтиБтроки(ΠžΡ‚Π±ΠΎΡ€);

Для КаТдого НайдСннаяБтрока Из ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ Π¦ΠΈΠΊΠ»

ИндСкс = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.ИндСкс(НайдСннаяБтрока);

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°...

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π΄Π°Ρ‚:

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π°");

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ°");

// ЗаполняСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ...

ΠžΡ‚Π±ΠΎΡ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π°", Новый Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π°("ΠœΠ΅ΠΆΠ΄Ρƒ", НачалоДня(НачДата), ΠšΠΎΠ½Π΅Ρ†Π”Π½Ρ(ΠšΠΎΠ½Π”Π°Ρ‚Π°)));

НайдСнныСБтроки = Π’Π—.НайтиБтроки(ΠžΡ‚Π±ΠΎΡ€);

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из НайдСнныСБтроки Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ИндСкс: " + Π’Π—.ИндСкс(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) + ", Π”Π°Ρ‚Π°: " + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”Π°Ρ‚Π°);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Для создания слоТных условий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€
Π Π°Π²Π½ΠΎ Π’ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС Новый Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π°("Π Π°Π²Π½ΠΎ", 100)
ΠœΠ΅ΠΆΠ΄Ρƒ Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Новый Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π°("ΠœΠ΅ΠΆΠ΄Ρƒ", Π”Π°Ρ‚Π°1, Π”Π°Ρ‚Π°2)
Like Поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (с символами % ΠΈ _) Новый Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π°("Like", "Π’ΠΎΠ²Π°Ρ€%")
Π’Π“Ρ€ΡƒΠΏΠΏΠ΅ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² массив Новый Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ΠžΡ‚Π±ΠΎΡ€Π°("Π’Π“Ρ€ΡƒΠΏΠΏΠ΅", ΠœΠ°ΡΡΠΈΠ²Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ)
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки() создаёт Π½ΠΎΠ²Ρ‹ΠΉ массив строк, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ индСкс, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Найти() ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» с ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ.

5. Π Π°Π±ΠΎΡ‚Π° с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ

Если ваша Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ содСрТит Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ (иСрархичСскиС строки), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ индСкса Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Найти() ΠΈ ИндСкс() Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с "плоским" прСдставлСниСм Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, игнорируя Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с иСрархичСскими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ
  2. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ рСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ для поиска Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… строк
  3. Для получСния "Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ" индСкса (с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ влоТСнности) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠ»Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ рСкурсивного поиска Π² иСрархичСской Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡΠ’Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ(Π’Π—, Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ = 0, ВСкущаяБтрока = НСопрСдСлСно)

Если ВСкущаяБтрока = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ВСкущаяБтрока = Π’Π—[0];

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Если ВСкущаяБтрока.НаимСнованиС = Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

// РСкурсия ΠΏΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ строкам

Если ВСкущаяБтрока.Π•ΡΡ‚ΡŒΠ”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅Π‘Ρ‚Ρ€ΠΎΠΊΠΈ() Π’ΠΎΠ³Π΄Π°

Для КаТдого ДочСрняяБтрока Из ВСкущаяБтрока.Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π¦ΠΈΠΊΠ»

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡΠ’Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ(Π’Π—, Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ + 1, ДочСрняяБтрока);

Если Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

// ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ уровня

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(ВСкущаяБтрока);

Если Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΠ°ΠΉΡ‚ΠΈΠ˜Π½Π΄Π΅ΠΊΡΠ’Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ(Π’Π—, Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ + 1, Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°);

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с иСрархичСскими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² 1Π‘ 8.3.20+ появился ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс строки с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ влоТСнности. НапримСр:

ИндСкс = Π’Π—.ΠŸΠΎΠ»Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ(НайдСннаяБтрока); // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку Π²ΠΈΠ΄Π° "0.1.2"
Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠŸΠΎΠ»Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ()

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, Π³Π΄Π΅ числа Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число β€” индСкс строки Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ β€” индСкс Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ строки ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "0.1.2" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚:

- 0 β€” индСкс Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ строки ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня

- 1 β€” индСкс Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ строки Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня

- 2 β€” индСкс строки Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ уровня

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для восстановлСния ΠΏΡƒΡ‚ΠΈ ΠΊ строкС Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

6. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с индСксами строк. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ошибки ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

Ошибка 1: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ строки

Если строка Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Π’Π—.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ()), ссылка Π½Π° Π½Π΅Ρ‘ остаётся, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойству ИндСкс Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

// ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—[0];

Π’Π—.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(0);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ИндСкс); // ΠžΠ¨Π˜Π‘ΠšΠ: Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π΅

// ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

Если Π’Π—.НайтиБтроку(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ИндСкс);

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΡƒΠ΄Π°Π»Π΅Π½Π°!");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Ошибка 2: НСучёт измСнСния индСксов ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строки всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ…, ΠΈ ΠΈΡ… индСксы ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ Π½Π° 1. Если Π²Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ индСксы Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ становятся Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(); // ИндСкс 0

Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(); // ИндСкс 1

ИндСксПослСднСй = 1;

Π’Π—.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(0); // Π’Π΅ΠΏΠ΅Ρ€ΡŒ строка с индСксом 1 стала строкой 0

// ИндСксПослСднСй (1) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ строку!

Ошибка 3: ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ИндСкс ΠΈ ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ

Π’ 1Π‘ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… понятия:

  • πŸ”’ ИндСкс β€” порядковый Π½ΠΎΠΌΠ΅Ρ€ строки (начинаСтся с 0)
  • πŸ“ ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ β€” ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строки Π² отсортированной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (мСняСтся ΠΏΡ€ΠΈ сортировкС)

Для получСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Колонка1, Колонка2");

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ = Π’Π—.ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ(НайдСннаяБтрока);

Ошибка 4: Поиск Π² Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅

Если Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ пустая ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Найти() ΠΈ НайтиБтроки() Π²Π΅Ρ€Π½ΡƒΡ‚ НСопрСдСлСно, Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π’Π—[0] Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π’Π— = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

// Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ВСст"); // Π—Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ!

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.Найти("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", "Колонка"); // ΠžΠ¨Π˜Π‘ΠšΠ: Колонка Π½Π΅ сущСствуСт

Если Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π’ΠΎΠ³Π΄Π°

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;-->

7. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (тысячи строк) Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ поиск индСксов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксныС структуры

Если Π²Π°ΠΌ часто приходится ΠΈΡΠΊΠ°Ρ‚ΡŒ строки ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ полю, создайтС БоотвСтствиС (Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ) для ускорСнного доступа:

Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠšΠΎΠ΄Ρƒ = Новый БоотвСтствиС;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π— Π¦ΠΈΠΊΠ»

Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠšΠΎΠ΄Ρƒ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Код, Π’Π—.ИндСкс(Π‘Ρ‚Ρ€ΠΎΠΊΠ°));

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Быстрый поиск:

ИндСкс = Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠšΠΎΠ΄Ρƒ.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(Π˜ΡΠΊΠΎΠΌΡ‹ΠΉΠšΠΎΠ΄);

2. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ поиска

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ нСсколько Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, сохранитС Π΅Ρ‘ индСкс ΠΈΠ»ΠΈ ссылку Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΅Ρ‘ Π·Π°Π½ΠΎΠ²ΠΎ.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π±ΠΎΡ€ вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки() с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π² Ρ†ΠΈΠΊΠ»Π΅, особСнно для слоТных условий.

4. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поиска

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ искомая строка находится Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ†Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ НайтиБлСва() ΠΈΠ»ΠΈ НайтиБправа() для ускорСния:

// Поиск с Π½Π°Ρ‡Π°Π»Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (быстрСС, Ссли строка Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅)

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.НайтиБлСва(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, "Колонка");

// Поиск с ΠΊΠΎΠ½Ρ†Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (быстрСС, Ссли строка Π² ΠΊΠΎΠ½Ρ†Π΅)

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.НайтиБправа(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, "Колонка");

5. ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

Если ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π² статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… структурах.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Найти() ⚑ Быстро Поиск ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ полю
ИндСкс() ⚑⚑ МгновСнно Π£ΠΆΠ΅ Π΅ΡΡ‚ΡŒ ссылка Π½Π° строку
Π¦ΠΈΠΊΠ» Для 🐒 МСдлСнно Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· НайтиБтроки()
НайтиБтроки() с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ ⚑⚑ Быстро Поиск ΠΏΠΎ нСскольким полям ΠΈΠ»ΠΈ слоТным условиям
БоотвСтствиС ⚑⚑⚑ Π‘Π°ΠΌΡ‹ΠΉ быстрый ΠœΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ поиск ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ полю

FAQ: ЧастыС вопросы

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс строки ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π°?

Π”Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки() с составным ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ:

ΠžΡ‚Π±ΠΎΡ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Колонка1", 100);

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Колонка2", "Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅");

НайдСнныС = Π’Π—.НайтиБтроки(ΠžΡ‚Π±ΠΎΡ€);

Если Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая строка, Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ НайдСнныС[0].ИндСкс.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС сортировки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ индСксы строк измСнились?

Π˜Π½Π΄Π΅ΠΊΡΡ‹ строк всСгда ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΡ… физичСскому полоТСнию Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΡ€ΠΈ сортировкС строки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, поэтому ΠΈΡ… индСксы ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходныС индСксы, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ "Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ" ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой:

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ");

Для i = 0 По Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

Π’Π—[i].Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉΠ˜Π½Π΄Π΅ΠΊΡ = i;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅?

Для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, привязанной ΠΊ элСмСнту Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ΠŸΠΎΠ»Π΅), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅:

ВСкущаяБтрока = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹Π€ΠΎΡ€ΠΌΡ‹.Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅;

ИндСкс = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹Π€ΠΎΡ€ΠΌΡ‹.Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.ИндСкс(ВСкущаяБтрока);

Если строка Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π°, Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅Π”Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½Ρ‘Ρ‚ НСопрСдСлСно.

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ индСкс строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ?

Π’ 1Π‘ Π½Π΅Ρ‚ встроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (UID) для строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  1. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ "UID" ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Ρ‘ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€())
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Найти() ΠΏΠΎ этому полю

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("UID");

НоваяБтрока = Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.UID = Новый Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€();

// Поиск по UID:

UID = НоваяБтрока.UID;

НайдСннаяБтрока = Π’Π—.Найти(UID, "UID");

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, сущСствуСт Π»ΠΈ строка с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ индСксом?

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ количСство строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ индСксу:

Если ИндСкс >= 0 И ИндСкс < Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π’ΠΎΠ³Π΄Π°

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—[ИндСкс];

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ° с индСксом " + ИндСкс + " Π½Π΅ сущСствуСт!");

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—[ИндСкс];

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка доступа ΠΊ строкС: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;