Конференция "Прочее" » Глюк Дельфи7
 
  • Четыре (24.01.09 23:24) [0]
    Создаю такой Юнит:

    unit Unit2;

    interface

    type
     PIntegers = ^PIntegers;
     TIntegers = array of Integer;

    implementation

    end.



    Прописываю его в uses Unit1.pas основной программы, набираю в какой нибудь процедуре Unit2 и ставлю точку, после этого Дельфи7 мгновенно закрывается без каких-либо предупреждений.

    Если закомментировать строчку "PIntegers = ^PIntegers;", то этого не происходит. Почему так? И как можно исправить?

    Есть ли где-нибудь в Дельфи такой важный тип как array of Integer ?
  • @!!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;, то

    Выписка из справки:

    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.

    Сптай выделеное
  • Четыре (24.01.09 23:53) [3]

    > @!!ex ©   (24.01.09 23:26) [1]
    >
    > PIntegers = ^PIntegers;
    > Это жесть. :))
    > Я понимаю почему он закрывается... Stack Overflow?


    Никаких ошибок не указывает. А в чём жесть то? Если не ставить точку, то всё прекрасно работает.
  • Четыре (24.01.09 23:55) [4]

    > Anatoly Podgoretsky ©   (24.01.09 23:35) [2]
    >
    > > Четыре  (24.01.2009 23:24:00)  [0]
    >
    > Даже если исправить ^PIntegers на ^ТIntegers;


    А-а-а-а! Понял!
    Это ошибка просто. Вылетать перестало.
  • Четыре (24.01.09 23:59) [5]

    > Anatoly Podgoretsky ©   (24.01.09 23:35) [2]
    > Do not apply the dereference operator (^) to a dynamic-array
    > variable


    Написано, что не использовать ^ для динамических массивов. А почему?
  • @!!ex © (25.01.09 00:45) [6]
    > [5] Четыре   (24.01.09 23:59)

    вероятно потому, что динамический массив сам по себе является указателем?
  • Германн © (25.01.09 01:13) [7]

    > вероятно потому, что динамический массив сам по себе является
    > указателем?

    Массив? Является указателем?
    Переведи.
  • ketmar © (25.01.09 01:23) [8]
    >[7] Германн © (2009-01-25 01:13:00)
    dynarray -- недоуказатель, да. WriteLn(size(dynarray));

    ---
    All Your Base Are Belong to Us
  • Германн © (25.01.09 02:40) [9]

    > ketmar ©   (25.01.09 01:23) [8]
    >
    > >[7] Германн © (2009-01-25 01:13:00)
    > dynarray -- недоуказатель, да. WriteLn(size(dynarray));
    >

    Это перевод на какой язык?
    Но уж точно не на Дельфи!
  • TUser © (25.01.09 09:39) [10]
    Я, если честно, использовал ^ для динмассивов, все до сих пор работает, Д7, турбо и фрипаскаль.
  • ketmar © (25.01.09 15:30) [11]
    >[9] Германн © (2009-01-25 02:40:00)
    может, sizeof. ну, забыл, да. устал, да и уж давненько на Delphi не писал.

    ---
    All Your Base Are Belong to Us
  • Четыре (26.01.09 13:20) [12]
    А вообще, то, что Дельфи вылетает ни слова не сказав - это не правильно. Должна была бы просто выводить сообщение об ошибке.
  • Плохиш © (26.01.09 22:30) [13]

    > Четыре   (26.01.09 13:20) [12]
    >
    > А вообще, то, что Дельфи вылетает ни слова не сказав - это
    > не правильно.

    Сколько слов ты успеешь сказать, если тебе отрубят кочерыжку, перед тем как сдохнешь?
  • Palladin © (26.01.09 22:37) [14]
    глюкофайндеры брейнфри...
  • Palladin © (26.01.09 22:40) [15]
    тоесть, брейнлесс имел я... ввиду :)
Есть новые Нет новых   [134453   +37][b:0][p:0.001]