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

Вниз

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

 
Sonia ©   (2008-02-22 10:55) [0]

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

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 вопрос дурацкий, не убивайте, плиз...


 
Palladin ©   (2008-02-22 10:57) [1]

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


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


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


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


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

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

> for i:=0

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


 
Sonia ©   (2008-02-22 10:59) [4]


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

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


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


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

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


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

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


 
Ega23 ©   (2008-02-22 11:03) [6]


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


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

:)


 
Sonia ©   (2008-02-22 11:05) [7]


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

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


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


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


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


:)


 
Sonia ©   (2008-02-22 11:15) [9]


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

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

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


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

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


 
Johnmen ©   (2008-02-22 12:05) [11]


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

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


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

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


 
Dmitry S ©   (2008-02-22 14:15) [13]


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

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


 
Amoeba ©   (2008-02-22 15:26) [14]


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

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


 
Sapersky   (2008-02-22 18:22) [15]

Есть подозрение, что 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 (в данном случае), а вовсе не размерностью базового типа, которая в принципе может быть любой.



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

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

Наверх




Память: 0.5 MB
Время: 0.019 c
2-1203579448
Quart
2008-02-21 10:37
2008.03.23
QRLabel


2-1203924360
md10
2008-02-25 10:26
2008.03.23
Звязные поля таблиц


2-1203588616
mrfreeman2007
2008-02-21 13:10
2008.03.23
Кодовая страница Windows


11-1186338197
Vedun
2007-08-05 22:23
2008.03.23
Выделенные ячейки в mdvXLGrid


15-1202844973
ocean
2008-02-12 22:36
2008.03.23
Пароль на включение ноутбука