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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2010, 21:16   #1
Katmai
Пользователь
 
Регистрация: 21.07.2010
Сообщений: 25
Вопрос Чтение двумерного массива из txt

У нас есть файл типа txt:

Пример:
0000000
0000000
1111100
1111110

Нам нужно прочитать этот масив из файла и присвоить масиву mas, как это сделать ?

Если нужно покажу как я пытался сделать....
Katmai вне форума Ответить с цитированием
Старый 27.07.2010, 21:48   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

покажи_____
psycho-coder вне форума Ответить с цитированием
Старый 27.07.2010, 22:14   #3
Katmai
Пользователь
 
Регистрация: 21.07.2010
Сообщений: 25
По умолчанию

ВОт как я пытался...
Код:
FileMode := fmOpenRead;
Reset(t, '1.txt');
   for x:=1 to stkh do
    for y:=1 to stkw do
    begin
      read(t,n);
      stakan[x, y]:=StrToint(n);
  end;
stkh-высота масива
stkw-ширина
Katmai вне форума Ответить с цитированием
Старый 27.07.2010, 23:23   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Твой вариант почти правильный
Код:
type
  TMyArray = array of array of Integer; // Определяем новый тип данных
...
function TForm1.LoadArrayFromFile(FileName: String): TMyArray;
var
  ArrFile: TStringList;
  i, l, Len: Integer;
begin
  ArrFile := TStringList.Create;
  ArrFile.LoadFromFile(FileName);
  SetLength(Result, ArrFile.Count); // Устанавливаем величину массива в количество строк
  for i := 0 to ArrFile.Count - 1 do
  begin
    Len := Length(ArrFile.Strings[i]); // Узнаем длину строки
    SetLength(Result[i], Len); // Устанавливаем длину строки массива
    for l := 0 to Len - 1 do
    begin
      Result[i, l] := StrToInt(ArrFile.Strings[i][l+1]); // Записываем в массив
    end;
  end;
  ArrFile.Free;
end;

// Пример использования

procedure TForm1.Button1Click(Sender: TObject);
var
  i, l: Integer;
  tmp: String;
  arr: TMyArray;
begin
  tmp := '';
  arr := LoadArrayFromFile('1.txt');
  for i := 0 to High(arr) do
  begin
    for l := 0 to High(arr[i]) do
    begin
      tmp := tmp + #32 + IntToStr(arr[i, l]);
    end;
    Memo1.Lines.Add(tmp);
    tmp := '';
  end;
end;
--Добавлено--

Посмотрел соседнюю Вашу тему, про тетрис. Так как в тетрисе используется поле 20х8 то можно динамический массив заменить статическим и не мучатся с расчетами размерности. Но в этом случае нужно прописать хорошее сохранение что бы не было ошибок.

Последний раз редактировалось psycho-coder; 27.07.2010 в 23:38.
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
init двумерного массива iLLUMIN Общие вопросы C/C++ 11 08.07.2010 00:39
Обработка двумерного массива tema001 Помощь студентам 6 30.12.2009 19:33
Сортировка двумерного массива в С(Си) savra Помощь студентам 5 26.11.2009 10:47
Чтение двумерного массива из тектового файла ToxaRUS Общие вопросы C/C++ 3 15.04.2009 18:39
Чтение из TXT файла soonner Общие вопросы Delphi 1 14.03.2009 13:52