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