Главная страница
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 :)



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

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

Наверх




Память: 0.56 MB
Время: 0.048 c
14-1091608699
Klerk
2004-08-04 12:38
2004.08.22
Слетели шрифты в WordXP


1-1091712247
AlexeyITN
2004-08-05 17:24
2004.08.22
Не меняется Button1.Font.Color Почему?


3-1090831277
Poma
2004-07-26 12:41
2004.08.22
Учет времени по каждому клиенту


14-1090614306
Piter
2004-07-24 00:25
2004.08.22
Magic Forum beta7 - клиент этого форума:


1-1092139479
Анатолий
2004-08-10 16:04
2004.08.22
Инициализация модулей