Форум: "Потрепаться";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизПоиск в массиве -- как??? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.037 c