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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2008, 01:35   #1
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
Вопрос Сохранение двумерного массива в файл

Подскажите пожалуйста
Как записать двумерный массив в файл
Пробовал вот так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
x,y:Integer;
t:TextFile;
begin
       FileCreate('1.txt');

for x := 0 to 10 do
  for y := 0 to 10 do
    begin
      Write(t,mapXY[x,y]);

    end;
end;
И так
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
x,y:Integer;
t:TextFile;
begin
       FileCreate('1.txt');

for x := 0 to 10 do
  for y := 0 to 10 do
    begin
      Writeln(t,mapXY[x,y]);

    end;
end;
Вылетала ошибка I/O Error 103
MapXY это :
Код:
 mapXY: array [0..10, 0..10] of Byte;

Последний раз редактировалось AngelOfDeath; 04.10.2008 в 03:33.
AngelOfDeath вне форума Ответить с цитированием
Старый 04.10.2008, 08:24   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

А где же Assign ?

Код:
begin
   //FileCreate('1.txt');
   AssignFile(t, '1.txt'); rewrite(t);

   for x := 0 to 10 do
      for y := 0 to 10 do begin
         Writeln(t,mapXY[x,y]);
      end;

   closefile(t);
alexBlack вне форума Ответить с цитированием
Старый 04.10.2008, 08:59   #3
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
По умолчанию

Спасибо за ответ
Но вот ещё вопрос
Это сохраняет так:
Цитата:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
////////////////////
0
0
0
0
0
0
0
0
0
0
0
0
0
А мне нужно чтоб оно записывалось в виде таблицы:
00000000
00010000
00210000
И т.д.
AngelOfDeath вне форума Ответить с цитированием
Старый 04.10.2008, 09:02   #4
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Печаль

Выводи в файл перевод строки только тогда, когда завершилась строка массива, а не после каждого элемента.

http://www.programmersclub.ru/ в разделе Книги скачай себе хоть одну книжку и прочитай её.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 04.10.2008, 09:11   #5
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

var
SL: TSTringList;
S: string;
begin
SL := TSTringList.Create;
try
for x := 0 to 10 do
begin
S := '';
for y := 0 to 10 do
begin
S := S + IntToStr(mapXY[x,y]);
end;
SL.Append(S);
end;
SL.SaveToFile('MyFile.txt');
finally
SL.Free;
end;
end;
Rik вне форума Ответить с цитированием
Старый 04.10.2008, 09:37   #6
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
Хорошо

Цитата:
Сообщение от AlDelta Посмотреть сообщение
Выводи в файл перевод строки только тогда, когда завершилась строка массива, а не после каждого элемента.
Спасибо помогли
Просто в книге по которой я обучался не было написано про Write, WriteLn абсолютно ничего
Ну хоть сейчас заполнил этот пробел в знаниях
Всё таки получилось сделать такую конструкцию:
Цитата:
00000000000
00000000000
00002010000
00000000000
00000000000
00000000000
01000000000
00001000010
00000000000
00000000000
00000000000
Этим кодом:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
x,y:Integer;
t:TextFile;
begin
       AssignFile(t,'1.txt');
       Rewrite(t);
for x := 0 to 10 do
begin
  for y := 0 to 10 do
    begin
      Write(t,mapXY[y,x]);
    end;
Writeln(t);
end;
    CloseFile(t);
end;

Тему можно закрывать, так как вопрос решён

Последний раз редактировалось AngelOfDeath; 04.10.2008 в 09:57.
AngelOfDeath вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Поворот двумерного массива Guest_ Общие вопросы C/C++ 6 24.12.2007 23:02
Сохранение массива в файл Artem Общие вопросы Delphi 10 11.12.2007 20:00
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36