Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.06.2009, 21:00
davin4u davin4u вне форума
Прохожий
 
Регистрация: 21.04.2009
Сообщения: 18
Репутация: 10
По умолчанию Вопрос по функциям

Всем привет. Подскажите пожалуйста как получить результат работы функции, понимаю вопрос глупый, но все же не знаю как это сделать =)
есть функция:
Код:
function TStreetShow.GetStreetLength(index: integer): string;
begin
  Result:=self.FLength[index];
end;
Как я понимаю переменную Result не нужно нигде объявлять, она существует по умолчанию в дэлфи, как переменная для возврата результата работы функции. В нее я заношу нужные мне данные. Далее я пытался извлеч эти данные из функции следующим образом:
procedure TForm1.FShowClick(Sender: TObject);
Код:
begin
  FMyStreetsLength.Lines.Add(MyStreetShow.GetStreetLength(1));
end;
тут FMyStreetLength - компонент Memo, в него я пытаюсь занести то, что функция выполнила.
Результат- в Memo появляется пустая строка.
Заранее спасибо.

Последний раз редактировалось davin4u, 13.06.2009 в 21:18.
Ответить с цитированием
  #2  
Старый 13.06.2009, 21:18
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну поскольку вроде все правильно, предположу, что Result:=self.FLength[index] - действительно пустота. Проверьте отладчиком, что там реально находится, есть у меня подозрение, что вы с индексом элемента в массиве что-то путаете.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 14.06.2009, 00:25
davin4u davin4u вне форума
Прохожий
 
Регистрация: 21.04.2009
Сообщения: 18
Репутация: 10
По умолчанию

Спасибо, нашел где была ошибка
Ответить с цитированием
  #4  
Старый 18.06.2009, 20:19
davin4u davin4u вне форума
Прохожий
 
Регистрация: 21.04.2009
Сообщения: 18
Репутация: 10
По умолчанию

Возник еще один вопрос связанный с работой с функциями
Можно ли заносить в функцию 2 значения? если можно то как? потому что я пробовал, выдавалась ошибка, связанная с вводимыми в функцию типами данных, хотя оба вводимых значения были одного типа. Если нельзя вводить несколько значений, то можно ли как результат, вывести из функции двумерный массив?

вот пример того как я пытался делать:
Код:
Function GetMass(var num1:integer; num2:integer):integer;
begin
  Result:=num1+num2;
end;
заранее благодарен
Ответить с цитированием
  #5  
Старый 18.06.2009, 20:33
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Зачем вам здесь var в описании? Почитайте про передачу параметров.
Код:
Function GetMass(num1,num2:integer):integer;
begin
  Result:=num1+num2;
end;

Можно и двумерный массив:
Код:
Type
  TDualArray = array[1..2,1..2] of integer;

function DualArray: TDualArray;
begin

end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 18.06.2009, 21:59
davin4u davin4u вне форума
Прохожий
 
Регистрация: 21.04.2009
Сообщения: 18
Репутация: 10
По умолчанию

Попробовал сделать чтобы результатом работы функции был двумерный массив, возникла новая проблема =(
как теперь занести в другой массив результат работы функции? mass:=Board.DualArray, не выходит, ошибка в типах данных, mass-массив, а DualArray- класс TDualArray ?
Ответить с цитированием
  #7  
Старый 19.06.2009, 08:07
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

Цитата:
Сообщение от Страдалецъ
Зачем вам здесь var в описании? Почитайте про передачу параметров.
А затем и нужен чтобы значения из процедуры или функции возвратились наружу. Человеку чего нада? - чтобы функция возвратила два значения. Вот так и можно сделать это, правда можно вместо функции процедуру.
Подаем в нее две переменных, они каким то образом изменяются (уже внутри процедуры) и результат их изменения идет уже наружу в те же переменные, которые были поданы в качестве параметров в процедуру. Из-за двух переменных заводить массив както не так. Хотя я не знаю что это за переменные и какая стоит задача - может быть и правильное решение.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025