Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

Проблемма с динамическим массивом   Найти похожие ветки 

 
[stalker] ©   (2006-06-02 02:24) [0]

Проблемма началась, после того, как начал мудрить с динамическим массивом. Не знаю в чем именно проблемма, так что описать у меня наврятли получиться, лучше гляньте код))

http://webfile.ru/974037     42 кбайт


 
XProger ©   (2006-06-02 04:11) [1]

[stalker], и не надейся


 
Cash ©   (2006-06-02 07:34) [2]

Ты лучше дай вырезку кода, где эта штука объявляется, иницыализируется и
используется, а еще - вычищается ли память из под нее.


 
[stalker] ©   (2006-06-02 10:35) [3]

...
var
  Pole: array of array of integer;
...


В OnCreate 1 формы

...
MC:=10;
  MR:=10;
  SetLength(pole,MC) ;
   for i:=0 to MR-1 do begin
    SetLength(pole[i],MC);
   end;
...

...
for row :=0 to MR+1 do
       for col :=0 to MC+1 do
   Pole[row,col] := -3;
...


В 3 форме, в buttonClick

...
saper_1.MC := StrToInt(Edit1.Text);
 saper_1.MR := StrToInt(Edit1.Text);
...


 
Tsmar   (2006-06-02 11:12) [4]

for row :=0 to MR+1 do
      for col :=0 to MC+1 do
  Pole[row,col] := -3;

замени на
for row :=0 to MR-1 do
      for col :=0 to MC-1 do
  Pole[row,col] := -3;


 
han_malign ©   (2006-06-02 12:24) [5]

и вот это работает до поры до времени:
 MR:=10;
 SetLength(pole,MC) ;
  for i:=0 to MR-1 do begin


а лучше, таки - SetLength(pole, MR, MC);


 
Kolan ©   (2006-06-02 13:33) [6]


> [stalker] ©   (02.06.06 02:24)

Чтобы не пролететь с выходом за массив советую писать так:

 MR:=10;
SetLength(pole,MC) ;
 for i:=Low(Pole) to High(Pole) do begin


Гарантировани всё будет впорядке...


 
Cash ©   (2006-06-02 13:56) [7]


> MC:=10;
>   MR:=10;
>   SetLength(pole,MC) ;
>    for i:=0 to MR-1 do begin
>     SetLength(pole[i],MC);
>    end;


Это, спрашивается, что такое??? :(
Товарищ! Вас кто этому учил? Возмите бейсбольную биту и... дальше сами
знаете. :)))

Так, делаем как я :)))
begin
Type
  TPVector = array of integer; // Это поможет, если будет надо взять колонку целиком.
  TPMap = array of TPVector; // Так рекомендовано создавать двухмерные массивы.
var
  Pole: TPMap;
  MC,MR,i,j: integer;
begin
  MR:=10; // Я так понял это колонки.
  MC:=10; // Это идать столбцы.
  SetLength(Pole,MC,MR); // Тоже рекомендовано, если массив будет как C(столбец,строка)
  i:=0;
  while i < Length(Pole) do begin
    j:=0;
    while j < Length(Pole[0]) do begin
      Pole[i,j]:=random(100); // i-й столбец, j-я строка.
      inc(j);
    end;
    inc(i);
  end;
end;


Кстати насчет выравнивания кода в листингах, такой код, который видно
выше сделан с помощью спец символа - неразрывного пробела (&amp;nbsp;),
советую, хоть и малость мутарно, но код то как смотрится! ;)


 
Cash ©   (2006-06-02 14:00) [8]

Да... еще забыл!
У табиж массив как глобальная пееременная, дак вот, мало ли что,
перед SetLength(...) сделай такую штуку:

Finalize(Pole); или Pole:=nil

Менеджер памяти иногда очень ругается если его часто заставлять выделять
память.


 
DiamondShark ©   (2006-06-02 15:30) [9]


> Менеджер памяти иногда очень ругается если его часто заставлять
> выделять
> память.

а Finalize(Pole); или Pole:=nil заставляет МП реже выделять память?
;-)


 
Cash ©   (2006-06-02 15:51) [10]

Типа того. :)))


 
[stalker] ©   (2006-06-02 18:53) [11]

Всем СЭНКС, в будущем учту)) Обошелся без динамического массива))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
15-1148312666
Bogdan1024
2006-05-22 19:44
2006.06.18
квартиру в кредит


3-1145891342
linx
2006-04-24 19:09
2006.06.18
Запретить чтение ячейки данных в таблице


1-1147212202
Германн
2006-05-10 02:03
2006.06.18
TListView


15-1148219271
NailMan
2006-05-21 17:47
2006.06.18
Воровство логотипов? Плагиат?


15-1148633637
wipr
2006-05-26 12:53
2006.06.18
RX библиотека





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский