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

Вывод результата программы в текстовый файл и в двоичный файл с именем, задаваемым пользователем

23.05.2012, 00:17. Просмотров 1452. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста, что нужно исправить. Нужно организовать вывод результата программы в текстовый файл и в двоичный файл с именем, задаваемым пользователем. Реализовать программу-просмоторщик двоичного файла.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
 unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids;
 
type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    StringGrid1: TStringGrid;
    CheckBox1: TCheckBox;
    SaveDialog1: TSaveDialog;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure LabeledEdit1Change(Sender: TObject);
    procedure LabeledEdit2Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
  TA = Array of array of integer;
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function ShowArray (var a:TA; out K,L: Integer):integer;
var
  i, j: Integer;
 
  Begin
 
//Нахождение нулей в верхней части массива
  K:=0;
  For i:= 0 to Length(a)-1 do
    For j:= 0 to (Length(a[0]) div 2)-1 do
        If a[i,j]=0 then
        inc(K);
 
 
  //Нахождение нулей в нижней части массива
  L:=0;
  For i:=0 to Length(a)-1  do
    For j:= (Length(a[0]) div 2) to Length(a[0])-1 do
        If a[i,j]= 0 then
        inc(L);
  End;
 
procedure TForm1.Button1Click(Sender: TObject);
   var
      a: TA;
      K,L:integer;
      i,j:integer;
      SGError:boolean;
begin
 
 begin
 
 Randomize;
 
 
 if (LabeledEdit1.Text = '') or (LabeledEdit2.Text = '') then
   Application.MessageBox('Введите число элементов массива(ов)!', 'Ошибка!',MB_OK);
 
 try
 
  Label4.Caption:='';
 
  SetLength(a, StrToInt(Form1.LabeledEdit2.Text) , StrToInt(Form1.LabeledEdit1.Text));
 
    //Проверяем колличество строк N  на четность и на отличность от нуля
  If (Length(a[0]) mod 2 <> 0) or (StrToInt(Form1.LabeledEdit1.Text)=0) then
  begin
   Label3.Caption:='Введите четное колличество строк N';
 
   for i :=0  to Stringgrid1.ColCount do
     for j :=0 to Stringgrid1.RowCount do
     StringGrid1.Cells[i,j]:='';
   Abort;
  end;
 except
  Label5.Caption:='Неверные данные';
  exit
 
 end;
 
 if CheckBox1.Checked then
  begin
  //Автоматическая инициализация массива
  for i:= 0 to Length(a)-1 do
    For j:= 0 to Length(a[0])-1 do
        begin
            a[i,j]:=random(10);
            Stringgrid1.Cells[i,j]:=IntToStr(a[i,j]);
        end;
 end
 else
 // Ручная инициализация массива
 begin
      SGError:=false;
      for i:= 0 to Length(a)-1 do
    For j:= 0 to Length(a[0])-1 do
  try
 
      a[i,j]:=StrToInt(Stringgrid1.Cells[i,j]);
  except
 
  Stringgrid1.Cells[i,j]:='Неверно!!!!';
  SGError:=true;
  end;
  if SGError then
    exit
 end;
 
 //Вызов процедуры подсчета нулевых элементов
 ShowArray(a,K,L);
 
 //Вывод
  Label1.Caption:=IntToStr(K);
  Label2.Caption:=IntToStr(L);
 
 
 If K>L then
  Label3.Caption:='Больше нулей в верхней части матрицы, их - '+ IntToStr(K);
 If K<L then
  Label3.Caption:='Больше нулей в нижней части матрицы, их - '+ IntToStr(L);
 If K=L then
  Label3.Caption:='Количество нулей в обеих частях матрицы одинаковое и равно - '+ IntToStr(K);
 
 
 end;
 Form1.Button2.Enabled:=True;
end;
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Label1.Caption:= '';
Label2.Caption:= '';
Label3.Caption:= '';
if CheckBox1.Checked then
StringGrid1.Options:=StringGrid1.Options-[goEditing]
else
StringGrid1.Options:=StringGrid1.Options+[goEditing]
end;
 
 
 
//процедура задания свойств StringGrid
procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
 
If
LabeledEdit1.Text <> '' then
     try
     StringGrid1.RowCount:=StrToInt(LabeledEdit1.Text);
     except
     Label4.Caption:='Неверное количество строк';
 
end;
 end;
 
 //******************************************
procedure TForm1.LabeledEdit2Change(Sender: TObject);
begin
  If LabeledEdit2.Text <> '' then
   try
       StringGrid1.ColCount:=StrToInt(LabeledEdit2.Text);
   except
         Label4.Caption:='Неверное количество столбцов';
 
end;
end;
 
 
     procedure Saver;
     var f:textfile;
     i,j:integer;
     a:TA;
     K,L:integer;
     begin
       if form1.SaveDialog1.Execute then
       begin
       assignfile(f,Form1.SaveDialog1.FileName);
       Rewrite(f); //создание файла
        for i:= 0 to Length(a)-1 do
        For j:= 0 to Length(a[0])-1 do
        a[i,j]:=random(10);
        writeln(f,a[i,j]);       // вот здесь он мне выдает ошибку. Но если не прописывать эту строчку, то выводится какой то непонятный результат, совершенно не связанный с самой программой
    Writeln(f,ShowArray(a,K,L));
       closefile(f);
     end;
     end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Saver
end;
 
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2012, 00:17
Ответы с готовыми решениями:

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

Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы
Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого...

Нужно сделать вывод результата программы в текстовый файл
Вообщем есть программа уже составленная, надо сделать вывод результата программы в файл, т.е. я...

Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Всем привет. Есть такая задачка: &quot;текстовый файл перевести в двоичный, а потом полученный двоичный...

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

4
Одиночка
3937 / 1862 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
23.05.2012, 02:29 2
В логику не вникал, но там где ошибка нужно написать так:
Delphi
1
2
3
4
5
6
        for i:= 0 to Length(a)-1 do
        For j:= 0 to Length(a[0])-1 do
        Begin
          a[i,j]:=random(10);
          writeln(f,a[i,j]);       
        End;
1
Usser
0 / 0 / 0
Регистрация: 06.02.2017
23.05.2012, 02:51 3
Pascal
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Program Evaluation_of_the_integral;
 
uses
  Crt;
 
type
  us_functions = function(argument: Real): Real;
 
function computable_func(argument: Real): Real; far;
//Описание интегрируемой функции
begin
  Func := 2 * sin(argument * argument);
end;
 
procedure rectangle_int(us_function: us_functions; a, b: real; n: byte; var area_rect: Real);
//Описание метода интегрирования прямоугольниками
var i: byte;
    step, middle_arg: Real;
begin
  area_rect := 0;
  step := b / n - a / n;
  middle_arg := a + step / 2;
  for i := 1 to n do
    begin
      area_rect := area_rect + us_function(middle) * step;
      middle_arg := middle_arg + step;
    end;
end;
 
procedure trapezoid_int(us_function: us_functions; a, b: real; n: byte; var area_rect: real);
//Описание метода интегрирования трапециями
var i: byte;
    step: real;
begin
  area_rect := 0;
  step := b / n - a / n;
  b := a + step;
  for i:= 1 to n do
    begin
      area_rect := area_rect + us_function(a) * step / 2 + us_function(b) * step / 2;
      a:= a + step;
      b:= b + step; 
    end;
end;
 
var
  n: byte;
  a, b, integral: real;
begin
  ClrScr;
//Ввод верхней, нижней границы интегрирования и количества шагов
  Write('Enter a, b and n [> '); Readln(a, b, n);
  Writeln;
 
//Интегрирование методом прямоугольноков
  rectangl_int(computable_func, a, b, n, integral);
  Writeln('Result of the integration method of rectangles: ', integral: 10:5);
  Writeln;
 
//Интегрирование методом трапеций
  trapezoid_int(computable_func, a, b, n, integral);
  Writeln('Result of the integration method of trapezoidal: ', integral: 10:5);
  Writeln;
 
  Readln;
end.
0
Одиночка
3937 / 1862 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
23.05.2012, 02:57 4
usser: Честно говоря не понял, как это относится к теме? И вообще - это раздел Delphi.
0
Usser
0 / 0 / 0
Регистрация: 06.02.2017
23.05.2012, 03:01 5
Ошибся окном
0
23.05.2012, 03:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2012, 03:01

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

Сохранение результата программы в текстовый файл
Возможно ли такое, чтобы все, что появилось после Ctrl+F9 сохранялось куда-нибудь в какой-нибудь...

Вывод результата в текстовый файл в нужной кодировке
В общем есть программа для табулирования функции (она будет ниже).Вопросов по самой программе нет,...


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

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

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