Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2012, 19:58   #1
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию двумерный массив делфи

Отредактируйте пожалуйста код!
задумка чтобы он считывал файл и выводил в image а он не вывод и ошибку не дает.

procedure TForm1.Button9Click(Sender: TObject);
var f: textfile;
mas: array [1..100,1..2] of integer;
i,j:integer;
begin
assignfile(f, '1.txt');
reset(f);
for i:=1 to 100 do
for j:=1 to 2 do
begin
readln (f, mas[i,j]);
image1.Canvas.moveTo(mas[i][j],mas[i][j]);
end;
while (not eof(f)) and (not eoln(f))do
begin
readln(f,mas[i,j]);
image1.Canvas.LineTo(mas[i][j], mas[i][j]);
end;
closefile(f);
end;
VinDiz вне форума Ответить с цитированием
Старый 18.01.2012, 20:01   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
он считывал файл и выводил в image
что считывал? и что выводил?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 18.01.2012, 20:03   #3
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

.тхт файл содержимое
126 65
126 52
48 52
48 192
127 192
127 114
62 114
62 65
126 65
\\пробел надо!
114 130
62 130
62 181
113 181
113 130
VinDiz вне форума Ответить с цитированием
Старый 18.01.2012, 22:04   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Чушь какая-то...
Код:
procedure TForm1.Button9Click(Sender: TObject);
 var f: textfile;
 mas: array [1..100,1..2] of integer;
 i,j:integer;
 begin
 assignfile(f, '1.txt');
 reset(f);
 for i:=1 to 100 do
 for j:=1 to 2 do
 begin
 readln (f, mas[i,j]);//все считали, непонятно как, причем второе число в строке никуда не попало.
 image1.Canvas.moveTo(mas[i][j],mas[i][j]); //постоянно отправляем на диагональ
 end;
 reset(F);
 while (not eof(f)) and (not eoln(f))do//так давно уже конец, после 200 readln'ов то, даже добавленый мной ресет не имеет смысла по большому счету.
 begin
 readln(f,mas[i,j]);//зачем опять?
 image1.Canvas.LineTo(mas[i][j], mas[i][j]);//снова по диагонали
 end;
 closefile(f);
 end;
В итоге первые двести раз курсор носится по диагонали image, вторые двести раз безотрывно рисует прямые, на той же диагонали.

Да и вообще, зачем тут массив? Он же нигде не сохранится после завершения процедуры, хватило бы одной переменной.

В общем я бы порекомендовал переписать циклы, причем без всяких for, только while, EOLn & EOF.

Кстати, допер в чем изначальная ошибка:
Цитата:
126 65
126 52
48 52
48 192
127 192
127 114
62 114
62 65
126 65
\\пробел надо!
114 130
62 130
62 181
113 181
113 130
При чтении файла \\ как коментарий не ворпринимается, как следствие - invalid numeric input, или как он там ругается.. Впрочем в самом дэлфи тоже слэши в другую сторону ставятся.

Еще вариант, т.е. предположение: под конец массив заполняется нулями, возможно в image нет координаты (0,0), отсюда ошибка. Повторюсь, специально не проверял, только предположил.
Все тривиальное просто

Последний раз редактировалось whatever; 18.01.2012 в 22:55.
whatever вне форума Ответить с цитированием
Старый 18.01.2012, 23:59   #5
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

\\ этого в файле нету! это чтобы в дальнейшем не было вопросов! а это все мне надо в массив чтобы потом его двигать привязывать к точке и переворачивать можно было!
отредактируйте пожалуйста!!!!
VinDiz вне форума Ответить с цитированием
Старый 19.01.2012, 00:06   #6
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

должна быть буква "б" откорректируйте пожалуйста!
VinDiz вне форума Ответить с цитированием
Старый 19.01.2012, 20:49   #7
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  f:textfile;
  mas:array [1..100,1..2] of integer;
  mas2:array [1..100,1..2] of integer;
  i,j,k,tmpint:integer;
  tmp,t1:string;
begin
  assignfile(f, '1.txt');
  reset(f);

  read(f,mas[1,1]);
  read(F,mas[1,2]);
  readln(F);
  image1.Canvas.moveTo(mas[1][1],mas[1][2]);//переместили на начало
  i:=2;
  j:=1;
  while not EOF(F) do
    begin
      tmp:='';
      readln(f,tmp);
        if (tmp=' ') then
          begin
            readln(F);
            read(F,mas2[j,1]);
            read(F,mas2[j,2]);
            image1.Canvas.moveTo(mas2[j][1],mas2[j][2]);
            readln(F);
            inc(j);
            while not EOF(F) do
              begin
                read(F,mas2[j,1]);
                read(F,mas2[j,2]);
                image1.Canvas.LineTo(mas2[j][1], mas2[j][2]);
                inc(j)
              end;
          end
        else
          begin
            k:=2;
            t1:='';
            while tmp[k]<>' ' do
              begin
                t1:=t1+tmp[k];
                inc(k)
              end;
            mas[i,1]:=StrToInt(t1);
            t1:='';
            t1:=copy(TMP,k+1,(length(tmp)-k));
            mas[i,2]:=StrToInt(t1);
            image1.Canvas.LineTo(mas[i][1], mas[i][2]);
            inc(i);
          end;
    end;
    image1.Canvas.LineTo(mas2[1][1], mas2[1][2]);
end;


Лично мне код совершенно не нравится, но в поставленных условиях...
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
на зачет решить в делфи двумерный массив. bajge Помощь студентам 9 15.06.2011 10:47
Двумерный массив на С++ Владилена Помощь студентам 0 11.06.2011 18:36
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив Делфи приехали MrMorozko Помощь студентам 19 18.12.2010 14:21
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40