Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

код по последовательному поиску имени в массиве элементов


Sonia ©   (2008-02-22 10:55:00) 

Всем привет!!! Извиняюсь за дурацкий вопрос, тока не посылайте, пожалуйста, никуда :(.
Вот представлен код по последовательному поиску имени в массиве элементов:

function SeqSearch(aStrs:PStringArray; aCount: integer; const aname:string) : integer;
var i:integer;
begin
for i:=0 to Pred(aCount) do
 if CompareText(aStrs^[i], aname)=0 then begin
  Result:=i;
  Exit;
 end;
Result:= -1;
end;


И вот у меня такой вопрос: что означает aStrs^[i] в функции CompareText. Почему нельзя было просто aStrs[i] сделать??

PS вопрос дурацкий, не убивайте, плиз...


Sapersky   (2008-02-22 18:22:00) [1]

Есть подозрение, что PStringArray определён как:
 PStringArray = ^TStringArray;
 TStringArray = array [0..0] of String;
(обычно с P начинаются имена типов-указателей).
В этом случае Low, High для PStringArray вообще не имеют смысла - это не массив, это типизированный указатель. Базовый тип TStringArray теоретически может начинаться не с нуля, но это редкое (во всех смыслах) извращение. Если так уж хочется учесть все-все случаи, можно написать:
For n := Low(aStrs^) to Low(aStrs^) + aCount-1 do
Использовать High совершенно точно не стоит, т.к. работаем с указателем, сколько там памяти выделено на самом деле - определяется параметром aCount (в данном случае), а вовсе не размерностью базового типа, которая в принципе может быть любой.


Amoeba   (2008-02-22 15:26:00) [2]


> Dmitry S ©   (22.02.08 14:15) [13]
>
>
> > Johnmen ©   (22.02.08 12:05) [11]
>
> Я думал он с генофонда:) Пардон тоды

Такого в генофонде отродясь не было.


Dmitry S   (2008-02-22 14:15:00) [3]


> Johnmen ©   (22.02.08 12:05) [11]

Я думал он с генофонда:) Пардон тоды


Смирнов   (2008-02-22 13:02:00) [4]

тот, кто писал процедуру SeqSearch, скорее всего и тип PStringArray объявлял и знает, с чего он начинается.


Johnmen   (2008-02-22 12:05:00) [5]


> Дмитрий С   (22.02.08 11:51) [10]
> да PStringArray полюбому определен как массив с нуля=)

Да ты шо??? Со свечкой стоял?


Дмитрий С   (2008-02-22 11:51:00) [6]

да PStringArray полюбому определен как массив с нуля=)


Sonia   (2008-02-22 11:15:00) [7]


> Ega23 ©   (22.02.08 11:11) [8]

Ну да, так ессно лучше :).
Ой, ребята!!! Спасибо всем!!!!

ЗЫ Спасибо, что не посылали далеко ! :)))))


Ega23   (2008-02-22 11:11:00) [8]


> Ну я не имею в виду, объявленные статически ;)


for i:=Low(arr) to High(arr) do
 arr[1] ....


:)


Sonia   (2008-02-22 11:05:00) [9]


> Ega23 ©   (22.02.08 11:03) [6]

Ну я не имею в виду, объявленные статически ;)


Ega23   (2008-02-22 11:03:00) [10]


> как не все???? а какие не начинаются??
>


myarray : array[18..255] of Integer;

:)


Sonia   (2008-02-22 11:01:00) [11]


> место потенциального глюка
> не все массивы начинаются с нуля

как не все???? а какие не начинаются??


> потому что это указатель, ты на тип параметра посмотри

Кстати, не нашла в справке по Дельфи тип PStringArray. Означает ли это что я не так искала или что это созданный ручками тип?


Правильный_Вася   (2008-02-22 10:59:00) [12]

потому что это указатель, ты на тип параметра посмотри

> for i:=0

место потенциального глюка
не все массивы начинаются с нуля


Sonia   (2008-02-22 10:59:00) [13]


> я тебя пошлю к книжкам по программированию на Паскале  для
> начинающих, где рассказывается про указатели и с чем их
> едят...

:(((( Честно честно, не работала еще с указателями на Паскале :(((


Сергей М.   (2008-02-22 10:58:00) [14]


> Почему нельзя было просто aStrs[i] сделать?


Почему нельзя ? Можно.
Для компилятора в дан.случае конструкция с крышкой полностью эквивалентна конструкции без крышки, как что крышку можно смело убрать.


Palladin   (2008-02-22 10:57:00) [15]

я тебя пошлю к книжкам по программированию на Паскале  для начинающих, где рассказывается про указатели и с чем их едят...


Наверх

Титульная страница Поиск, карта сайта Написать письмо