Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Поиск в массиве -- как???   Найти похожие ветки 

 
cvg   (2004-08-02 15:11) [0]

Мужики, подскажите, pls, subj. Хотя бы в одномерном...


 
MacroDenS ©   (2004-08-02 15:14) [1]

а что ищем? и какого типа массив...
хотя в принципе разницы никакой, просто в цикле проверку делаешь типа:

  if mas[i]=*** then <действие>


 
cvg   (2004-08-02 15:18) [2]

А более человеческого ничего нет??? Вот в Клиппере, как сейчас помню, специальная функция была -- aSeek(<array>,<item)), возвращала номер элемента в массиве...


 
PVOzerski ©   (2004-08-02 15:20) [3]

Ну, если это массив символов, есть функция pos. А если чисел или каких-нибудь структур - см. [1]


 
Думкин ©   (2004-08-02 15:20) [4]

Есть бесчеловечное только.


 
MacroDenS ©   (2004-08-02 15:30) [5]

А ты думаешь в клипере оно как работает???

да именно так, только это спрятано от глаз разработчиков, шоб глаза не мозолила...


 
cvg   (2004-08-02 15:33) [6]

Ну а тут кто противомозольную функцию написать? А так -- самому придется... :(((


 
Digitman ©   (2004-08-02 15:35) [7]


> тут кто противомозольную функцию написать? А так -- самому
> придется


ха ! "самому придется" ... ты думал - здесь негры ?


 
MetalFan ©   (2004-08-02 15:36) [8]

function AnsiIndexStr(const AText: string; const AValues: array of string): Integer;

Description

AnsiIndexStr returns the 0-offset index of the first string it finds in AValues that matches AText case-sensitively.  If the string specified by AText does not have an exact match in AValues, AnsiIndexStr returns –1.


 
MetalFan ©   (2004-08-02 15:38) [9]

и еще:
function AnsiIndexText(const AText: string; const AValues: array of string): Integer;
и
function AnsiMatchText(const AText: string; const AValues: array of string): Boolean;

надеюсь то? )


 
Рамиль ©   (2004-08-02 15:39) [10]


> Ну а тут кто противомозольную функцию написать? А так --
> самому придется... :(((

одна противомозольная функция 100-1000$ в зависимости от величины мозоли.


 
cvg   (2004-08-02 15:42) [11]

Не, MetalFan, там же ясными английскими буквами накорябано -- string handling routines...


 
MacroDenS ©   (2004-08-02 15:42) [12]

to Рамиль ©
  продления ключа от мозолей каждые 6 месяцев - стоимость от 50$


 
Digitman ©   (2004-08-02 15:46) [13]


> cvg   (02.08.04 15:42) [11]
> там же ясными английскими буквами накорябано


зато в твоем вопросе ни ясными, ни неясными, ни вообще какими-то не "накорябано", КАКОГО типа у тебя эл-ты твоего массива


 
cvg   (2004-08-02 15:48) [14]

Ну, допустим, символьные строки... А что, от этого чтой-то зависит?


 
MacroDenS ©   (2004-08-02 15:50) [15]

типа этого чтоль:

...
var
  mas:array[0..10] of String;


тогда смотри [1]


 
Sandman25 ©   (2004-08-02 15:53) [16]

TStrings.IndexOf :)


 
Sergey Kaminski ©   (2004-08-02 15:53) [17]

В Делфи есть только один _специальный_ (встроенный) тип массива - массив символов (строка).


 
cvg   (2004-08-02 15:55) [18]

Н-да, скучновато тут у вас, господа...


 
MacroDenS ©   (2004-08-02 15:55) [19]

to Sandman25
StringList это конечно хорошо, только там много знать нужно, автор может запутаться...


 
Sergey Kaminski ©   (2004-08-02 15:55) [20]

Sandman25 ©   (02.08.04 15:53) [16]

Сейчас опять начнем спорить - является ли TStrings массивом? :)

А автор ветки будет смотреть, как все тут друг друга режут на куски :)))


 
MacroDenS ©   (2004-08-02 15:57) [21]

Короче, обращаюсь к автору ветки, не ломай мозги!

Работай с массивами так как всегда работали и поиск делай через циклы, в конце концов оно все равно к этому сводиться, хочешь ли ты этого или нет...


 
cvg   (2004-08-02 15:57) [22]

Ну-ка, ну-ка... Я в принципе TStringList"ом-то пользуюсь. Там-то какой-то завялящий поиск есть?


 
Digitman ©   (2004-08-02 15:58) [23]


> cvg   (02.08.04 15:55) [18]
> Н-да, скучновато тут у вас, господа


ни негров, которые будут за тебя ф-цию писать, ни клоунов, которые тебя веселить будут, здесь ты вряд ли найдешь


 
Sandman25 ©   (2004-08-02 15:58) [24]

[19] MacroDenS ©   (02.08.04 15:55)

Это его проблемы. Я защищаю светлое имя Delphi (произносится с пафосом) :)

[20] Sergey Kaminski ©   (02.08.04 15:55)

Зачем спорить? Массив - это array, TStrings - это class :)


 
Anatoly Podgoretsky ©   (2004-08-02 16:01) [25]

Автор ветки должен приложить максимум усилия к трепу, а не ждать милостей от природы.


 
cvg   (2004-08-02 16:03) [26]

"Работай с массивами так как всегда работали..." Я всегда писал либо aSeek (в Клиппере), либо in_array (в РНР). В Перле вот похуже было...


 
Digitman ©   (2004-08-02 16:08) [27]


> cvg   (02.08.04 16:03) [26]


> Я всегда писал


ты всегда имел дело с простыми типами, вот и "писал"
здесь же, в Делфи, эл-т массива может быть чем угодно, да и сам массив массиву - рознь ... и Борланд не обязан на каждый случай жизни, коих м.б. бесконечное мн-во, предоставлять какому-то cvg отдельную ф-цию


 
MacroDenS ©   (2004-08-02 16:08) [28]


Я всегда писал либо aSeek (в Клиппере), либо in_array (в РНР). В Перле вот похуже было...

уууу как здесь все запущено.......

тут придется гораздо сложнее, либо ты поймешь как работать с массивами, либо Делфи вля тебя скала с которой ты сорвался насмерть...
А вот как только научишься с массивами работать, так можешь уже и смою функцию на подобе aSeek написать...


 
KSergey ©   (2004-08-02 16:10) [29]

> [23] Digitman ©   (02.08.04 15:58)
> ни клоунов,

Вот с этим-то часто проблем как раз нет, в отличии от первого...


 
cvg   (2004-08-02 16:10) [30]

Дак пишу уже и так... Чай не совсем я чайник медный!


 
Digitman ©   (2004-08-02 16:13) [31]


> KSergey ©   (02.08.04 16:10) [29]
> Вот с этим-то часто проблем как раз нет, в отличии от первого


тык ведь и цирк пока никуда не уезжал !


 
MacroDenS ©   (2004-08-02 16:15) [32]

ну хоть это радует.

Надеюсь с циклами то хоть работать умеешь?

В общем суть такая, если у тебя есть просто переменная типа String? то она уже одномерный массив символов с диапозоном 1..Length(строка)

Массивы могут быть всех (если не ошибаюсь) типов. но это еще не все, можно структурировать и т.д и т.п.

Но все таки основной метод поиска - это цикл, в котором ты прокручиваешь элементы массива
Вот такая азбука


 
cvg   (2004-08-02 16:16) [33]


function aSeek(arr,item):integer;
var i:integer;
begin
Result := -1;
for i := 0 to length(arr) - 1 do
 if arr[i] = item
 then
  begin
   Result := i;
   break;
  end;
end;


 
KSergey ©   (2004-08-02 16:21) [34]

> [33] cvg   (02.08.04 16:16)

Мээ... Это компилится? (мне просто проверять лень)


 
Sandman25 ©   (2004-08-02 16:23) [35]

Лучше так:

for Result := Low(Arr) to High(Arr) do
if arr[Result] = item then
  exit;
Result := -1;


 
cvg   (2004-08-02 16:28) [36]

Если

function aSeek(arr:array of string;item:string):integer;

то компилится. Low? High? У Йенсена и Вирта такого не было, поэтому не в курсе.


 
MacroDenS ©   (2004-08-02 16:36) [37]

вот так постепенно, общими усилиями, ростут от начинающих к более опытным...


 
Sandman25 ©   (2004-08-02 16:38) [38]

[36] cvg   (02.08.04 16:28)

Очень рекомендую поставить слово const перед arr.


 
cvg   (2004-08-02 16:38) [39]

А изменить длину массиса как? Типа как в Клиппере было -- aAdd(<array>,<item>)...


 
Sandman25 ©   (2004-08-02 16:41) [40]

[39] cvg   (02.08.04 16:38)

Завязывайте с аналогиями. Если работаете с Delphi, то придется почитать книги.

PS. Книги не по Clipper :)


 
Dmitriy O. ©   (2004-08-02 16:42) [41]

использовать RXDataMemori Типа загнать туда весь массив а потом
locate


 
MacroDenS ©   (2004-08-02 16:43) [42]

setlength(mas, Count);
НО!
изменить длину массива можно только если массив динамический у тебя как раз такой


 
MacroDenS ©   (2004-08-02 16:45) [43]

да и [40] тоже возьми на вооружение...
Делфи - это не клипер!


 
cvg   (2004-08-02 16:45) [44]

Thanks. Хоть что-то человеческое в сём языке е...


 
MacroDenS ©   (2004-08-02 16:47) [45]

ну тебе хоть помогли, или мысля водится - "а ну его нафиг этот Делфи, вернусь в Клипер"


 
cvg   (2004-08-02 16:52) [46]

Вернулся бы, кабы нормальная и быстрая виндовая версия была...


 
Digitman ©   (2004-08-02 17:16) [47]


> cvg   (02.08.04 16:52) [46]
> Вернулся бы, кабы нормальная и быстрая виндовая версия была


клиппер - это триппер, и назад пути нет
хочешь иметь великолепный универсальный инструмент для создания высокопроизводительных приложений, не только для работы с БД ?
обкладывайся книжками с ног до головы и читай и пробуй, пробуй и читай, читай-и пробуй ... в бесконечном цикле до полного просветления !


 
MacroDenS ©   (2004-08-02 17:18) [48]

... и на ужных страничках закладки делай, пригодится полюбому...
а вообще я считаю, что Дельфи (С++ Builder) самая рульная среда разработки на сегодняшний день.


 
Sandman25 ©   (2004-08-02 17:19) [49]

> в бесконечном цикле до полного просветления !


while true do
 repeat
   ...
 until FullLight;


Жестоко :)


 
VID ©   (2004-08-02 20:18) [50]

Sandman25 ©   (02.08.04 17:19) [49]
предлагаю всё таки использовать в таком цикле
1. sleep(28800000);
2. ProcessMessages ;

:)


 
cvg   (2004-08-03 08:31) [51]

Нет, я не Будда, я другой.... :))


 
Труп Васи Доброго ©   (2004-08-03 08:44) [52]


> function aSeek(arr:array of string;item:string):integer;
>
> то компилится. Low? High? У Йенсена и Вирта такого не было,
> поэтому не в курсе.


Если уж на то пошло, то в своём цикле ты прокинешь первый и последний элементы, надо не с 0, а с 1 цикл делать и до
length(arr), без всяких -1.
Вот если бы ты написал
function aSeek(var arr:array of string;item:string):integer
тогда всё правильно.
Это из своего печального опыта.


 
AZ ©   (2004-08-03 08:54) [53]

Есть хорошая статья Е.Филипповой на www.delphikingdom.com об алгоритмах поиска с анализом времени.


 
Яод   (2004-08-03 09:36) [54]

потом последует вопрос:
А поиск в массиве быстро - это как?
Задумайся заранее )



Страницы: 1 2 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.031 c
9-1083477699
Smoke_Gomel
2004-05-02 10:01
2004.08.22
Анимированные спрайты в Delphix


4-1088894848
Spy.RU
2004-07-04 02:47
2004.08.22
Доступ к строке инициализации модема


3-1091137474
Максим
2004-07-30 01:44
2004.08.22
Access - как измененить значение поля?


1-1091515880
alless
2004-08-03 10:51
2004.08.22
TPanel &amp; Canvas


4-1089441257
Gemo
2004-07-10 10:34
2004.08.22
CreateThread и доп. параметры