Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Луч света
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 64
1

Тема: Работа с внешними файлами. Ввод, вывод данных в текстовый файл

27.11.2012, 14:51. Просмотров 2264. Ответов 31
Метки нет (Все метки)

Файл прикреплен к сообщению, нужно написать программу: данные из текстового файла необходимо с использованием процедуры onActivate считать из внешнего файла, присвоить считанные значения соответствующим параметрам формы и объектов формы.
0
Вложения
Тип файла: pdf Лабораторная работа 9.pdf (179.0 Кб, 61 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 14:51
Ответы с готовыми решениями:

Работа с внешними файлами, ввод/вывод в текстовый файл
Как сделать эту лабу... Помогите пожалуйста

Ввод, вывод данных в Delphi и работа с файлами
Помогите составит прогу, которая выполняет такие действия: Ввод данных. При...

работа с внешними файлами
Нужна программа Разработайте программу записи во внешний файл нескольких...

Работа с внешними файлами
У меня не выходит заполнить с файла таблицу( на рисунках там второй пункт)....

Ввод данных в текстовый файл
Подскажите пожалуйста код для того чтобы из Edit1 данные добавлялись в txt...

31
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 09:19 21
mss,
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
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
arr: array of array of integer;
n,r: integer;
r1,r2,X0,Y0,i,j:Integer;
begin
AssignFile(f, 'file.txt');
Reset(f);
i := 1;
while not Eof(f) do begin
Inc(i);
SetLength(arr, i + 1);
j:= 1;
while not Eoln(f) do begin
Inc(j);
SetLength(arr[i], j + 1);
Read(f, arr[i, j]);
end;
ReadLn(f);
end;
CloseFile(f);
r1:=StrToInt(Edit1.Text);
r2:=StrToInt(Edit2.Text);
X0:=StrToInt(Edit3.Text);
Y0:=StrToInt(Edit4.Text);
{$I-}
n:=0; r1:=sqr(r1); r2:=sqr(r2);
repeat
Readln(f,arr[i, j]); // <-------------------------------------вот тут компилятор игнорирует i, мне кажется в этом проблема
if IOResult<>0 then Break;
r:=sqr(i-X0)+sqr(j-Y0);
if (r>=r1) and (r<=r2) then Inc(n);
until False;
label5.caption:= 'точек в кольце ' + inttostr(n);
end;
 
end.
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 09:27 22
Цитата Сообщение от publicus Посмотреть сообщение
Readln(f,arr[i, j]);<-------------------------------------вот тут компилятор игнорирует i, мне кажется в этом проблема
Что это вообще за хрень ?
Зачем ты опять лезешь в файл ?
0
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 09:39 23
да потому что мне из файла данные надо взять.

Добавлено через 4 минуты
mss, если я убираю эту строчку, то программа виснет и i не инициализируется уже вот в этой строчке: r:=sqr(i-X0)+sqr(j-Y0);
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 09:42 24
Цитата Сообщение от publicus Посмотреть сообщение
да потому что мне из файла данные надо взять.
Да ты их уже взял оттуда в цикле выше) .. И положил взятое в массив arr ..
Нафига, спрашивается, ты опять это делаешь ?)
0
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 09:47 25
mss, хорошо, я тебя понял. как мне подправить так, чтобы заработало?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 09:52 26
Не лезь в файл во 2-м вложенном цикле - просто читай из массива лежащие в его элементах значения и подставляй в свою чудо-формулу)
0
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 09:59 27
mss, вот так?
Delphi
1
2
3
4
5
6
7
8
9
    Readln(arr[i, j]);
    if IOResult<>0 then Break;
    r:=sqr(i-X0)+sqr(j-Y0);
    if (r>=r1) and (r<=r2) then Inc(n);
  until False;
  label5.caption:= 'òî÷åê Гў êîëüöå ' + inttostr(n);
  end;
 
end.
Добавлено через 1 минуту
mss, если так, то все работает, но всегда выдет нуль и пишет, что I не инициализируется вот тут: r:=sqr(i-X0)+sqr(j-Y0);
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 10:08 28
Цитата Сообщение от publicus Посмотреть сообщение
mss, вот так?
Readln(arr[i, j]);
Readln - это не чтение из массива. а чтение из потока ввода

А чтение из массива - это
blabla := arr[i, j]
0
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 10:19 29
mss, а blabla как её в разделе переменных?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 10:22 30
угу
0
publicus
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 31
25.05.2016, 10:49 31
mss, блин, хотел спросить как её в разделе переменных обозначить?

Добавлено через 25 минут
mss, Кароче, программа по-прежнему не работает. Вот окончательный код
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
26
27
28
29
30
31
32
33
34
35
36
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
m:integer;
arr: array [0..4, 0..2] of integer;
n,r: integer;
r1,r2,X0,Y0,i,j:Integer;
begin
AssignFile(f, 'file.txt');
 Reset(f);
   i := 0;
  while not Eof(f) do begin
    j := 0;
    while not Eoln(f) do begin
      Read(f, arr[i, j]);
      Inc(j);
    end;
    ReadLn(f);
    Inc(i);
  end;
  CloseFile(f);
    r1:=StrToInt(Edit1.Text);
    r2:=StrToInt(Edit2.Text);
    X0:=StrToInt(Edit3.Text);
    Y0:=StrToInt(Edit4.Text);
    {$I-}
  n:=0; r1:=sqr(r1); r2:=sqr(r2);
  repeat
    M:=arr[i,j];
    if IOResult<>0 then Break;
    r:=sqr(i-X0)+sqr(j-Y0);
    if (r>=r1) and (r<=r2) then Inc(n);
  until False;
  label5.caption:= 'точек в кольце ' + inttostr(n);
  end;
 
end.
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
25.05.2016, 11:01 32
M:=arr[i,j]; // чему в этот момент равны значения переменных i, j ? Включай уже наконец мозг ..
if IOResult<>0 then Break; // это что за хрень ? какое отношение это имеет к чтению массива ?
r:=sqr(i-X0)+sqr(j-Y0); // а это что за хрень ? Ты зачем, спрашивается, читал из массива в переменную M координату ? прочитанная из массива абсцисса, должна фигурировать вместо i ! А вместо j должна фигурировать прочитанная следом из соседней ячейки ордината !
1
25.05.2016, 11:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2016, 11:01

Работа с файлами - Дополнить текстовый файл 1.txt диска А из целых чисел 30 случайными целыми числами
Дополнить текстовый файл 1.txt диска А из целых чисел 30 случайными целыми...

Вывод структуры данных в текстовый файл
Добрый вечер. Прошу помощи в поиске ошибки при выводе структуры данных в txt...

Вывод данных в текстовый файл - где ошибка?
По идее, должен создаваться текстовый файл (задан через параметры программы),...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru