Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34

Чтение данных из файла

06.02.2013, 00:12. Показов 3229. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Ребят помогите написать код. Есть какой то текстовый файл в нем две колонки чисел, необходимо, чтобы первая колонка чисел сохранялась в один массив, вторая колонка в другой. Как это реализовать ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2013, 00:12
Ответы с готовыми решениями:

Чтение и обработка данных с файла
Не могу найти ошибку. Есть файл settint.ini c данными: &chas=1& &uYear=2012& Требуется получить сами значени и добавить их в edit ...

Чтение из файла данных авторизации
Доброго времени суток. Делаю что-то похожее на авторизацию. На форме - Edit1, Edit2(поменяю на MaskEdit), Button1. В папке с...

Чтение текстовых данных из файла с позиционированием
Кто знает, есть ли объект/компонент/метод для такого чтения? Из того, что я знаю: В TStreamReader есть метод ReadLine, но нет свойств...

23
angstrom
06.02.2013, 00:25
Чтение поочерёдно в оба массива
Delphi
1
2
3
4
5
6
7
...
  i := 0;
...
  Read(f, mas1[i]);
  Read(f, mas2[i]);
  inc(i)
...
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.02.2013, 00:31  [ТС]
А если можно поподробней, я Delphi плохо знаю, задание досталось такое, а времени уже почти нет. Что писать вместо точек;с чего начать; как прога поймет что первую колонку надо в один массив, а вторую в другой; что такое inc&
0
6 / 6 / 2
Регистрация: 01.02.2013
Сообщений: 24
06.02.2013, 00:38
Inc - процедура "+1". Что в качестве разделителя используется у тебя в файле ? (между колонками пробел или ещё что нидь... ? )
Считывай построчно, убирай разделитель, первую колонку в один массив, вторую в другой.
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.02.2013, 01:09  [ТС]
Используются пробелы! Я просто не знаю всего алгоритма, может у тебя уже есть готовый код.
0
6 / 6 / 2
Регистрация: 01.02.2013
Сообщений: 24
06.02.2013, 02:12
Я просто уже изрядно подустал, но вот "набросал", но массив оставил за тобой:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
myFile : TextFile;
C3 : String;
i: integer;
begin
AssignFile(myFile, 'Test.txt');//Твой текстовый файл
Reset(myFile);
i:=0;
while not Eof(myFile) do begin
ReadLn(myFile, C3);
Mas1[i]:=Trim(Copy(C3,1,Pos(' ',C3)-1))//Первое значение (колонка1)
Delete(C3, 1, Length(Mas1[i])); 
Mas2[i]:=Trim(C3)//Второе значение (колнка2);
inc(i);
end;
CloseFile(myFile);
end;
Могу ошибиться или опечататься...
Это очень грубо, можно более рационально...
0
angstrom
06.02.2013, 02:23
Не нужно ничего усложнять:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program test1;
 
{$APPTYPE CONSOLE}
 
uses
  Windows, SysUtils;
 
var
  f    : TextFile;
  mas1 : array of Integer;
  mas2 : array of Integer;
 
begin
  AssignFile(f, 'test2.txt');
  Reset(f);
  while not Eof(f) do
  begin
    SetLength(Mas1, Length(Mas1) + 1);
    SetLength(Mas2, Length(Mas2) + 1);
    Read(f, Mas1[Length(Mas1) - 1]);
    Read(f, Mas2[Length(Mas2) - 1]);
  end;
  CloseFile(f);
end.
test2.txt
324 4512
1244 345
23 24244
466 -46904
-3435 3555
234 335
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
07.02.2013, 01:14  [ТС]
Спасибо
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
08.02.2013, 01:52  [ТС]
А как потом полученные массивы вывести в stringrid допустим ? Ведь FloatToStr не подойдет.
0
angstrom
08.02.2013, 02:06
Переделать программу из консоли в GUI и использовать IntToStr.
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
08.02.2013, 02:25  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Не нужно ничего усложнять:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program test1;
 
{$APPTYPE CONSOLE}
 
uses
  Windows, SysUtils;
 
var
  f    : TextFile;
  mas1 : array of Integer;
  mas2 : array of Integer;
 
begin
  AssignFile(f, 'test2.txt');
  Reset(f);
  while not Eof(f) do
  begin
    SetLength(Mas1, Length(Mas1) + 1);
    SetLength(Mas2, Length(Mas2) + 1);
    Read(f, Mas1[Length(Mas1) - 1]);
    Read(f, Mas2[Length(Mas2) - 1]);
  end;
  CloseFile(f);
end.
test2.txt
Данный код записывает в первый массив первую строку, во второй вторую, а надо чтобы в первый массив записывалась первая колонка цифр, во второй вторая. Файл выглядит так:
34 545 65676 76
65 656 67767
34 565 5656
Там больше колонок, считывать надо только первые две и сохранять в разные массивы.
0
angstrom
08.02.2013, 02:41
Путаешь, Read читает первое число, но никак не строку. Возможно изменил на ReadLn, тогда будет читаться вся строка.

Добавлено через 10 минут
В любом случае, если в текстовом файле больше 2 колонок, то придётся читать в строку с последующим преобразованием.
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
08.02.2013, 02:43  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Переделать программу из консоли в GUI и использовать IntToStr.
А это как?
0
angstrom
08.02.2013, 02:47
Хотя нет, можно "сжульничать". Тот же код с небольшими изменениями.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  f    : TextFile;
  mas1 : array of Integer;
  mas2 : array of Integer;
  s : String;
 
begin
  AssignFile(f, 'test2.txt');
  Reset(f);
  while not Eof(f) do
  begin
    SetLength(Mas1, Length(Mas1) + 1);
    SetLength(Mas2, Length(Mas2) + 1);
    Read(f, Mas1[Length(Mas1) - 1]);
    Read(f, Mas2[Length(Mas2) - 1]);
    ReadLn(f, s);
  end;
  CloseFile(f);
end.
А это как?
данный код прописать, допустим на событие кнопки.
angstrom
08.02.2013, 03:02
Всё то же самое, только в GUI варианте.
Вложения
Тип файла: rar prj52.rar (1.2 Кб, 8 просмотров)
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
09.02.2013, 16:07  [ТС]
Спасибо большое, очень помог все заработало как надо!
А можно как то автоматизировать выбор текстового файла, чтобы не закидывать туда новый или не переписывать код! Это можно сделать с помощью Edit, но туда тоже надо вписывать путь, тоже не очень удобно.
0
angstrom
09.02.2013, 17:10
Используй TOpenDialog:
Delphi
1
2
3
4
5
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
...
  end;
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
09.02.2013, 19:16  [ТС]
Спасибо! Все получилось!
А как тот же самый код адаптировать, чтобы из текстового файла считывать матрицу, т.е. будет использоваться двумерный массив. В данном случае будут считываться все данные из файла и ограничений нет никаких.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33189 / 21485 / 8233
Регистрация: 22.10.2011
Сообщений: 36,866
Записей в блоге: 12
09.02.2013, 19:49
angstrom, лишние переменные плодить не надо... Чтобы пропустить ненужный остаток строки, достаточно вызвать ReadLn(f) не читая этот огрызок в строку s...
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
09.02.2013, 20:07  [ТС]
Вот так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure TForm1.OKClick(Sender: TObject);
var
  f : TextFile;
  s : String;
  I,J : Integer;
  fName : String[80];
  mas: array[0..100,0..100] of real;
begin
 fName:= LabeledEdit2.Text;
  begin
    AssignFile(f, fName);
    Reset(f);
    while not Eof(f) do
    begin
      SetLength(mas, Length(mas) + 1);
      Readln(f, mas[Length(mas)]);
  //    ReadLn(f, s);
    end;
    CloseFile(f);
  for i := 0 to StringGrid1.RowCount - 1 do 
    for j := 0 to StringGrid1.ColCount - 1 do
  //     StringGrid2.Cells[i,j] := FloatToStr(mas[i,j]);
 
 
  end;
Что то не получается. В данном случае я хочу считать матрицу из текстового файла и сохранить ее в один двумерный массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2013, 20:07
Помогаю со студенческими работами здесь

Запись и чтение данных двоичного файла.
Доброго времени суток, Господа! У меня совсем чайниковский вопрос не ругейте уж сильно! Задача стоит в следующем есть некая стуктура: ...

Чтение и анализ данных из TXT файла
Добрый день. Помогите пожалуйста. Есть файл в котором данные вот такого содержания: Нужно Парсить файл и исходные данные...

Чтение из файла Excel и перенос данных в memo
день добрый! столкнулся с такой проблемой необходимо столбца exel перенести данные в memo поле на форме. значение из одной ячейки...

Чтение данных для контролов на форме из ini файла
Подскажите как можно реализовать чтение данных для контролов (в моём случае для кнопок) из ini файла без написания километров кода? Опишу...

Чтение заголовка PCX файла и чтение растровых данных PCX файла
Привет форумчане! Столкнулся с такой проблемой. Нужно считать заголовок PCX файла и растровые данные PCX файла. Код написал. Часть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru