Главная страница
    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.012 c
2-1148990487
Std
2006-05-30 16:01
2006.06.18
Напоминалка


15-1148392592
vidiv
2006-05-23 17:56
2006.06.18
как перехватит буфер обмена при вставки в richedit


15-1148604949
Галинка
2006-05-26 04:55
2006.06.18
Началось... Правда пок ане в России


15-1147685730
SamProf
2006-05-15 13:35
2006.06.18
Не могу поставит Delphi 8


3-1145597273
Alexey V.
2006-04-21 09:27
2006.06.18
Выявление дублированных записей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский