Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2009, 22:47
RayOfLight RayOfLight вне форума
Прохожий
 
Регистрация: 27.09.2009
Сообщения: 11
Репутация: 10
По умолчанию Задание двумерного массива с индексом-переменной

Как мне задать двумерный массив с верхним индексом, взятым из текстового поля другой формы? (Нижний индекс - 0)

Т.е. массив мне нужен в Form1 (Unit1), а текстовое поле находится на Form2 (Unit2)
Ответить с цитированием
  #2  
Старый 06.10.2009, 22:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Пользоваться динамическими массивами. Для задания размера используется процедура SetLength.
Ответить с цитированием
  #3  
Старый 06.10.2009, 23:11
RayOfLight RayOfLight вне форума
Прохожий
 
Регистрация: 27.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

А можно поподробнее ?
Ответить с цитированием
  #4  
Старый 07.10.2009, 00:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вот вам фантазмя на тему динамических массивов
Код:
Var
 A: Array of Array of Integer;
 i: Integer;
begin
 SetLength(A, 3);
 for i := 0 to High(A)
 do SetLength(A[i], i+1);
end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 07.10.2009, 15:02
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

непонятно, что вам нужно, чтобы границы массива менять можно было (ответы в постах #2, 3) или же как получить значение поля из другой формы.
если второе то добавляете модуль Unit2 в список используемых модулей Unit1 (открываете Unit1 - File - Use Unit - Unit2)
обращаться к полю Form2.Edit.Text
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #6  
Старый 07.10.2009, 22:07
RayOfLight RayOfLight вне форума
Прохожий
 
Регистрация: 27.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Unit2
Код:
public
    n: byte;

...................

n := strtoint(Edit1.Text);

Unit1
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Buttons, StdCtrls, Menus, Unit2;

...........................

public
    fa: array[-1..n+1,-1..n+1] of byte;
    fanew: array[-1..n+1,-1..n+1] of byte;

Массивы не задаются (Undeclared identifier), хотя переменная n - глобальная. В чем проблема?
uses проставлены.
Ответить с цитированием
  #7  
Старый 08.10.2009, 01:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Канечна, дарагой!!!
Нельзя задавать границу массива (при его описании) в виде переменной. можно только с помощью константы. Пользуй динамические массивы с задачей длинны в момент выполнения через SetLength.
Ответить с цитированием
  #8  
Старый 08.10.2009, 12:27
RayOfLight RayOfLight вне форума
Прохожий
 
Регистрация: 27.09.2009
Сообщения: 11
Репутация: 10
По умолчанию

Все, разобрался, спасибо
Ответить с цитированием
  #9  
Старый 10.10.2009, 14:32
Alina Alina вне форума
Прохожий
 
Регистрация: 10.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Помогите пож.с курсовой. Задача такова: дана квадратная матрица порядка n. Построить последовательность b1,b2,..,bn, в которой bi=1 тогда и только отгда, когда элементы i-й строки матрицы образуют возрастающую последовательность, иначе bi=0. пробовала сделать. Иногда правильно высчитывает, а в 30% ответ неверный. Помогите пож.
Ответить с цитированием
  #10  
Старый 10.10.2009, 14:43
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

const
  n = 5;

var
  a: array [1..n] of array [1..n] of Integer;
  b: array [1..n] of boolean;
  i, j: Integer;

function IsV(x: Integer): Boolean;
var
  i: Integer;
begin
  Result:=True;
  for i:=2 to n do
  if a[x][i] <= a[x][i - 1]  then
  Result:=False;
end;

begin
  Randomize;
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      a[i][j]:=Random(100);
      Write(a[i][j]:3);
    end;
    Writeln;
  end;
  Writeln;
  for i:=1 to n do
  b[i]:=IsV(i);
  for i:=1 to n do
  Write(b[i], ' ');
  Readln;
end.
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #11  
Старый 10.10.2009, 21:35
Alina Alina вне форума
Прохожий
 
Регистрация: 10.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо большое, осталось только разобраться)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter