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

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

Если не сложно - напишите ответ на 145й пост


TUser ©   (2005-01-28 15:17:00) 

вот из этой ветки
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1106658881&n=0


_Lucky_   (2005-01-28 19:27:00) [1]


> Александр Иванов ©   (28.01.05 17:09) [14]
> И все решение - в добавлении слова var


браво! на 5+, если честно задай мне такую задачу ввек бы не решил, ну не знаю я на столько хорошо пас.


> TUser ©   (28.01.05 19:06) [15]
> Понятно, спасибо.
>
> Хорош Делфи размером стека ...


отнють, представть что надо отсортировать массив в 100 мегов, может возникнуть неприятная ситуация, хотя щас 100 мегов никого не удевить, у меня например 512, но все же


TUser   (2005-01-28 19:06:00) [2]

Понятно, спасибо.

Хорош Делфи размером стека ...


Александр Иванов   (2005-01-28 17:09:00) [3]

И все решение - в добавлении слова var


Александр Иванов   (2005-01-28 17:06:00) [4]

По умолчанию 16К? Если так то в Function FindMin (Vect : TVector) : Integer; параметр по значению передается и как раз превышает 16К.


Александр Иванов   (2005-01-28 17:04:00) [5]

По моему переполнению стека просто неоткуда взяться.


Александр Иванов   (2005-01-28 17:02:00) [6]

Это не мой массив :). Вот код:
Program FindMinPrg;

Uses Crt;

Type
TVector = Array [1..10000] Of integer;

Var
Vector : TVector;
 I : Integer;

Function FindMin (Vect : TVector) : Integer;
Var
X, Min : Integer;
Begin
Min := Vect [1];
For X := 2 To 10000 Do
If Min > Vect [x] Then
 Min := Vect [X];

FindMin := Min;
End;

Procedure SetRandom (Var Vect : TVector);
Var
X : integer;
Begin
For X := 1 To 10000 Do
  Vect [x] := random (32767)-16384;
End;

Begin
ClrScr;
Randomize;
 SetRandom (Vector);
 WriteLn ('Min: ', FindMin (Vector));
End.


Александр Иванов   (2005-01-28 16:58:00) [7]

Извините, не заметил начало [6]


PVOzerski   (2005-01-28 16:58:00) [8]

Александр, в этой директиве 1-й параметр - размер стека. А твой массив часом не локальный?


Александр Иванов   (2005-01-28 16:57:00) [9]

PVOzerski ©   (28.01.05 16:46) [6]
можно поиграть директивой {$M ... (1-е число)

Там всего массив 10000 элементов, целочисленный, так что память не при чем.

PVOzerski ©   (28.01.05 16:47) [7]
Много рекурсий или локальных переменных?

Никаких рекурсий.

Вы думаете ошибка связана с нехваткой памяти?


PVOzerski   (2005-01-28 16:47:00) [10]

Много рекурсий или локальных переменных?


PVOzerski   (2005-01-28 16:46:00) [11]

Stack overflow - можно поиграть директивой {$M ... (1-е число)


TUser   (2005-01-28 16:04:00) [12]


> Она, по идее, и в ТР должна работать, я не вижу ошибок

Я тоже так думал.

Хелпа у меня нет по ТР - только консольный компилятор.


Александр Иванов   (2005-01-28 15:36:00) [13]

Она, по идее, и в ТР должна работать, я не вижу ошибок. А что хелп говорит, по поводу ошибки 202?
Когда-то я их помнил :).


TUser   (2005-01-28 15:28:00) [14]

Паскалем скомпилированная программа нормально заработала, когда я написал PVector = ^TVector, Vector: PVector, дальше - New и Dispose + операторы разыменования везде, где надо. В вызовах функций убрал var, и заменил типа параметра на TVector.


TUser   (2005-01-28 15:27:00) [15]

Там статические, но обсуждаемый код после TPC.exe (6я версия) выдал RunTimeError 202, а dcc32.exe (после того, как ублат ТР'шный модуль и написал apptype) сделал безглючную программу.


Александр Иванов   (2005-01-28 15:23:00) [16]

Насколько помню точно также, за исключением динамических массивов.


Наверх

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