Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.009 c
11-1186278717
ElectriC
2007-08-05 05:51
2008.03.23
Проблем-ка с TIcon


10-1144060743
Vir
2006-04-03 14:39
2008.03.23
TWebBrowser root


3-1193655575
Ega23
2007-10-29 13:59
2008.03.23
Есть ли готовый потомок TDataLink в VCL


15-1202674320
Small Donkey
2008-02-10 23:12
2008.03.23
В помощь програмисту


15-1202553223
Kostafey
2008-02-09 13:33
2008.03.23
С днем рождения ! 9 февраля




   Наверх