Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Array of String, Помогите ламеру 
:(
    Опции темы
Демо
Дата 5.4.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(~FoX~ @ 5.4.2006, 13:35 Найти цитируемый пост)
В функцию ты не можешь передавать массив, только указатель на него....


Ну почему, по ссылке массив можно передать и работать с ним:

Код

type
  TStrArray=array of String;

procedure FillStrArray(var sa: TStrArray; Size: Integer);
var
  i: Integer;
begin
  SetLength(sa,Size);
  for i := 0 to Size-1 do
    sa[i] := IntToStr(i);
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  SArray: TStrArray;
begin
  SetLEngth(SArray,0);
  FillStrArray(SArray,100);
  ShowMessage(SArray[1]);
end;




--------------------
    
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 5.4.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Демо,
Цитата

по ссылке массив можно передать и работать с ним:

а это разве не тоже самое что передавать указатель smile



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 5.4.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(alexeis1 @ 5.4.2006, 14:06 Найти цитируемый пост)
а это разве не тоже самое что передавать указатель


Конечно, нет.


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 5.4.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Код

function TIndex_Form.My_Find(struct_name: array of String)
var
nomer_bukvi: Byte;
mas_slov: array of String;
begin
hight_mas:= High(struct_name);

    for nomer_bukvi:=0 to hight_mas do begin
       SetLength(mas_slov, Length(mas_slov)+1);
       mas_slov[nomer_bukvi]:= struct_name[nomer_bukvi];
    end;
   nomer_bukvi:=1;
...
    SetLength(mas_slov, Length(mas_slov)+1);          // А вот так работает!?
    mas_slov[High(mas_slov)+1]:='проро ';
end;

PM MAIL   Вверх
Демо
Дата 5.4.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



~FoX~,
Кстати, и возвращать массив из функции тоже можно.


--------------------
    
PM MAIL ICQ Skype   Вверх
~FoX~
Дата 5.4.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Код

  procedure aaa(a: array of integer);

procedure TForm1.Button1Click(Sender: TObject);
var
  a: array of integer;
begin
  aaa(a);
end;

procedure aaa(a: array of integer);
begin
  SetLength(a, 10);
end;



Цитата(Демо @ 5.4.2006, 14:57 Найти цитируемый пост)
procedure FillStrArray(var sa: TStrArray; Size: Integer);

А что такое var????


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Romikgy
Дата 5.4.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Nic442 @ 5.4.2006, 12:26 Найти цитируемый пост)
попробую

попробуй, узнаешь , что намного проще чем тебе изобретать велосипедsmile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 5.4.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Демо, Как же нет, при передаче через var парамет реально передается ссылка (т.е. указатель) на эту переменную, просто доступ к нему осуществляется как к уже к разименованному, а по сути это все одно и тоже.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 5.4.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



~FoX~, procedure FillStrArray(var sa: TStrArray; Size: Integer);
это ?
если да то это обозначает что переменая может изменится и в измененом состоянии вернутся в основную программу


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
~FoX~
Дата 5.4.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



[OFFTOP]
Romikgy,
Цитата(alexeis1 @ 5.4.2006, 15:31 Найти цитируемый пост)
, при передаче через var парамет реально передается ссылка (т.е. указатель)

[/OFFTOP]


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Nic442
Дата 5.4.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Так мой код нормальный? В основную программу функция ничего не долна возвращать. Она должна принимать статический массив, и если что-то находит то дополнять его и осуществлять с ним нужные операции.
Код

function TIndex_Form.My_Find(struct_name: array of String)    
var    
nomer_bukvi: Byte;    
mas_slov: array of String;    
begin    
 hight_mas:= High(struct_name);    
 for nomer_bukvi:=0 to hight_mas do begin    
    SetLength(mas_slov, Length(mas_slov)+1);    
    mas_slov[nomer_bukvi]:= struct_name[nomer_bukvi];    
 end;    
 nomer_bukvi:=1;    
...    
    SetLength(mas_slov, Length(mas_slov)+1);          // А вот так работает!?    
    mas_slov[High(mas_slov)+1]:='проро ';    
end;

PM MAIL   Вверх
Romikgy
Дата 5.4.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



~FoX~, ну и что я не правильно сказал?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Демо
Дата 5.4.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



alexeis1,
Разименуй плиз здесь и выполни те же функции, что и в FillStrArray выше:

Код

procedure FillStrArray1(p: Pointer; Size: Integer);
var
  sa: TStrArray;
  i: Integer;
begin
//???
end;




--------------------
    
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 5.4.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Nic442 @ 5.4.2006, 13:45 Найти цитируемый пост)
Так мой код нормальный?
не нормальный! Во первых ругнется компилятор на то, что нет результата у функции. Во вторых не обьявлена hight_mas. В-третьих послушай совета Алекса и выдели память под массив до начала его заполнения, а не в цикле.

Это так, при первом осмотре...

Это сообщение отредактировал(а) Poseidon - 5.4.2006, 14:55


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
~FoX~
Дата 5.4.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Nic442 @ 5.4.2006, 15:45 Найти цитируемый пост)
2:
function TIndex_Form.My_Find(struct_name: array of String)

Попробуй откомпили и посмотри.....что скажет компилятор.....
Добавлено @ 14:59
ой, не успел smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.