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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.06.2009, 17:22
Anett Anett вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 4
Репутация: 10
Вопрос Помощь "чайнику". Простые вопросы.

Здравствуйте!
Заранее извиняюсь,если аналогичные вопросы были, просто очень сложно и по времени получается долго их искать.
Поскольку изучаю делфи и это надолго,то решила создать так скажем персональную страничку!
Буду очень благодарна всем, кто сможет потратить на мои вопросы несколько минут

1. Как задать массив многомерный 5 столбцов по 4 строки?
A: array [..] of Integer;
Что в скобках писать?
2. Вывод массива на экран.
Чтобы выводился массив в поле Label
Что надо писать после Label1.Caption:= ?

Спасибо.
Ответить с цитированием
  #2  
Старый 27.06.2009, 17:41
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Многомерный массив:
Код:
A: array [0..4] of array [0..3] of Integer
либо короче
A: array [0..4, 0..3] of Integer;

вывод массива
Если выводить в лейбл то делаешь вложенный цикл и прогоняешь все значения разделяя их пробелом, как заканчиваетмся строка массива добавляешь в конец текста окончание строки и перевод каретки #10#13

Либо можно проще вывести в стринг грид
Ответить с цитированием
  #3  
Старый 27.06.2009, 17:45
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

1. Array[0..4, 0..3]
2. Label1.Caption:= IntToStr(a[i, j])
Ответить с цитированием
  #4  
Старый 27.06.2009, 17:50
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

1. mas: array [0..4, 0..3] of integer
2. Двумерный массив в Label:
Код:
var s:string;
     i,j:byte;
For i:=0 to 4 do
   for j:=0 to 3 do
      s:=s+IntToStr(mas[i,j]);

Label1.Caption := s;

Правда, будет сначала первый столбец, затем второй, и так далее, там решиш как тебе нужно.

На заметку:
Кстати, я тут с преподом спорил немножко насчет того, что в массиве первым является, тоесть [столбец, строка] или наоборот. Я считаю, что первый это столбец, хотя все зависит от того как туда будем писать информацию, и соответственно считывать. Препод уперся как баран на новые ворота. Вобщем опытные люди (хотя у меня у самого опыта не мало), скажите что-нибудь по этому поводу. Как принято? И вообще в памяти как это все дело хранится?


Пока писал текст уже успели ответить

Последний раз редактировалось :S.p.a.m., 27.06.2009 в 17:54.
Ответить с цитированием
  #5  
Старый 27.06.2009, 17:52
Anett Anett вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Код:
for i:=1 to NT do st := st + IntToStr(i)+ ' '+ A[i] + #10#13;

Ругается Incompatible types: 'String' and 'Array'
Ответить с цитированием
  #6  
Старый 27.06.2009, 17:53
Anett Anett вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

И как вообще можно проще вывести массив??
Если не в Label.
Ответить с цитированием
  #7  
Старый 27.06.2009, 17:59
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

помойму если так A: array [0..4] of array [0..3] of Integer то обращаться к нему так a[0][1], хотя я не уверен. я так не делал
Ответить с цитированием
  #8  
Старый 27.06.2009, 18:02
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Проще только так:
Код:
var
 i, j: Integer;
begin
  for i := 0 to 4 do
   for j := 0 to 3 do
     StringGrid.Cells[i, j] := IntToStr(A[i, j]);

на формк лежит компонент StringGrid с 4 строками и 5 столбцами
Ответить с цитированием
  #9  
Старый 27.06.2009, 18:09
Anett Anett вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 4
Репутация: 10
По умолчанию

Уже с помощью вот этого вывела
Код:
var s:string;
     i,j:byte;
For i:=0 to 4 do
   for j:=0 to 3 do
      s:=s+IntToStr(mas[i,j]);

Label1.Caption := s;

Только там выводятся 0 в одну строку. Как их разделить? Чтобы выводился как матрица 5*4?
Ответить с цитированием
  #10  
Старый 27.06.2009, 18:22
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

ну дак уже писали же: вставляем код #10#13, это коды возврата каретки (13) и новой строки(10). Вот как раз после вложеного цикла, добавляем в строку это #10#13.

Код:
For i:=0 to 4 do
begin
   for j:=0 to 3 do
      s:=s+IntToStr(mas[i,j]);

  s:=s+#10#13;
end;

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

Небольшой комментарий.
Спецкоманды #10#13 унаследованы еще с времен алфавитно-цифровых дисплеев. И интерпретируются как на механической печатной машинке:
#13 - переместить каретку в начало
#10 - переместить каретку вниз на 1 строку.
Поэтому принято писать сначала #13 а уже потом #10
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter