Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему функция возвращает данные, которые ей недоступны [D7, Win2k, WinXP]


Страницы:   1 2 3 4 5

gosha67 ©   (2006-09-26 16:49:00) 

Здравствуйте уважаемые.
Я программист с некоторым опытом, но только сегодня я обнаружил сие недоразумение. Объясните мне пожалуйста почему в конечном итоге Data := 'some text bla bla bla ....'? По идее она должна быть равно только 'bla bla bla'. Загадка какая-то.
function GetSomeData: string;
var i : integer;
begin
 for i := 1 to 20 do
 begin
   Result := Result + ' bla bla bla';
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Data : string;
begin
 Data := 'some text';
 Data := GetSomeData;
 ShowMessage(Data);
end;


Джо   (2006-09-26 16:56:00) [81]

> Я программист с некоторым опытом, но только сегодня я обнаружил
> сие недоразумение. Объясните мне пожалуйста почему в конечном
> итоге Data := 'some text bla bla bla ....'? По идее она
> должна быть равно только 'bla bla bla'. Загадка какая-то.

Псевдо-переменная Result не инициализируется автоматически.


Игорь Шевченко   (2006-09-26 16:52:00) [82]


> По идее она должна быть равно только 'bla bla bla'.


Не должна.


> Загадка какая-то.


Чтобы не было загадки, надо переписать функцию:

function GetSomeData: string;
var i : integer;
begin
Result := '';for i := 1 to 20 do
begin
  Result := Result + ' bla bla bla';
end;
end;


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо