Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

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

 
[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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
2-1149012980
JTAG
2006-05-30 22:16
2006.06.18
Господа подскажите пожалуйста как сделать чтобы в StringGrid


15-1147987692
TDelphiWebScript
2006-05-19 01:28
2006.06.18
[DelphiWebScript] Как изменять размер динамических массивов ?


2-1148884353
DesperadO666
2006-05-29 10:32
2006.06.18
Прошу помощи по RegEnumValue


10-1120548108
WG
2005-07-05 11:21
2006.06.18
Глюк при передаче данных в Excel, не опознает дату


2-1148988561
wsih
2006-05-30 15:29
2006.06.18
Как пробежаться по всем веткам узла