-
Создаю такой Юнит:
unit Unit2;
interface
type
PIntegers = ^PIntegers;
TIntegers = array of Integer;
implementation
end.
Прописываю его в uses Unit1.pas основной программы, набираю в какой нибудь процедуре Unit2 и ставлю точку, после этого Дельфи7 мгновенно закрывается без каких-либо предупреждений.
Если закомментировать строчку "PIntegers = ^PIntegers;", то этого не происходит. Почему так? И как можно исправить?
Есть ли где-нибудь в Дельфи такой важный тип как array of Integer ?
-
PIntegers = ^PIntegers;
Это жесть. :))
Я понимаю почему он закрывается... Stack Overflow?
-
> Четыре (24.01.2009 23:24:00) [0]
Даже если исправить ^PIntegers на ^ТIntegers;, то
Выписка из справки:
Dynamic-array variables are implicitly pointers and are managed by the same reference-counting technique used for long strings. To deallocate a dynamic array, assign nil to a variable that references the array or pass the variable to Finalize; either of these methods disposes of the array, provided there are no other references to it. Dynamic arrays are automatically released when their reference-count drops to zero. Dynamic arrays of length 0 have the value nil. Do not apply the dereference operator (^) to a dynamic-array variable or pass it to the New or Dispose procedure.
Сптай выделеное
-
> @!!ex © (24.01.09 23:26) [1]
>
> PIntegers = ^PIntegers;
> Это жесть. :))
> Я понимаю почему он закрывается... Stack Overflow?
Никаких ошибок не указывает. А в чём жесть то? Если не ставить точку, то всё прекрасно работает.
-
> Anatoly Podgoretsky © (24.01.09 23:35) [2]
>
> > Четыре (24.01.2009 23:24:00) [0]
>
> Даже если исправить ^PIntegers на ^ТIntegers;
А-а-а-а! Понял!
Это ошибка просто. Вылетать перестало.
-
> Anatoly Podgoretsky © (24.01.09 23:35) [2]
> Do not apply the dereference operator (^) to a dynamic-array
> variable
Написано, что не использовать ^ для динамических массивов. А почему?
-
> [5] Четыре (24.01.09 23:59)
вероятно потому, что динамический массив сам по себе является указателем?
-
> вероятно потому, что динамический массив сам по себе является
> указателем?
Массив? Является указателем?
Переведи.
-
>[7] Германн © (2009-01-25 01:13:00)
dynarray -- недоуказатель, да. WriteLn(size(dynarray));
---
All Your Base Are Belong to Us
-
> ketmar © (25.01.09 01:23) [8]
>
> >[7] Германн © (2009-01-25 01:13:00)
> dynarray -- недоуказатель, да. WriteLn(size(dynarray));
>
Это перевод на какой язык?
Но уж точно не на Дельфи!
-
Я, если честно, использовал ^ для динмассивов, все до сих пор работает, Д7, турбо и фрипаскаль.
-
>[9] Германн © (2009-01-25 02:40:00)
может, sizeof. ну, забыл, да. устал, да и уж давненько на Delphi не писал.
---
All Your Base Are Belong to Us
-
А вообще, то, что Дельфи вылетает ни слова не сказав - это не правильно. Должна была бы просто выводить сообщение об ошибке.
-
> Четыре (26.01.09 13:20) [12]
>
> А вообще, то, что Дельфи вылетает ни слова не сказав - это
> не правильно.
Сколько слов ты успеешь сказать, если тебе отрубят кочерыжку, перед тем как сдохнешь?
-
глюкофайндеры брейнфри...
-
тоесть, брейнлесс имел я... ввиду :)