Главная страница
    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.01 c
3-1145868776
cosmos
2006-04-24 12:52
2006.06.18
Ошибка подключения к Paradox через ADO


4-1143037786
Arazel
2006-03-22 17:29
2006.06.18
ListBox под WinApi это не проблема! А вот со скинами это слабо!


6-1139826721
BBCHa
2006-02-13 13:32
2006.06.18
Подмена IP и MAC адресов


3-1145713031
Alpine
2006-04-22 17:37
2006.06.18
IB 7.01 проблемма с кодировкой.


15-1148280138
Denis
2006-05-22 10:42
2006.06.18
Программирование микроконтроллеров Atmel - AVR Assembler





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