Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
1

Вывод worda с значениями от программы

13.10.2011, 21:59. Показов 1206. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Цель: есть параметры А и В, которые рассчитываются благодаря delphi

Необходимо чтобы при нажатии кнопочки - открывался word, где был текст

Например:

переменная 1 - А (А как раз вставлялась из расчета delphi)
переменная 2 - В (В как раз вставлялась из расчета delphi)

Помогите осуществить - знаю что это возможно, недагадываюсь как..
просьба желающих отправить меня юлозить справку, поисковик - не беспокоить - помогите лучше по теме..

Заранее спасибо большущее...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2011, 21:59
Ответы с готовыми решениями:

Использование классов Worda
Необходимо подключить библиотеку Ворда и использовать ее классы и методы. Не знаю как описать...

Защитить файл Worda
Здравствуйте, коллеги! Необходимо открыть файл Word и поставить на него защиту (обязательно...

Формулы worda превратились в EMBED Equation.3
Добрый вечер! Выполняя курсовую, использовала MS Word 2010, несколько дней в написанном тексте...

Вывод 2х имён с одинаковыми значениями
Всем доброго вечера! Нуждаюсь в помощи!:) Например - Взято 5 сотрудников из них 2е отработали по 24...

15
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
13.10.2011, 22:15 2
Вот как можно добавить текст в конец документа MS Word. На форму надо положить: TButton, TMemo и TOpenDialog. В конец документа MS Word будет добавлен текст из Мемо1.
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
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  wdApp, wdDocs, wdDoc : Variant;
  S : String;
  Od : TOpenDialog;
begin
  Od := OpenDialog1;
 
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath( Application.ExeName )
  ;
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then begin
    MessageDlg(
      'Файл с заданным именем не найден. Действие отменено.'
      ,mtWarning, [mbOK], 0
    );
    Exit;
  end;
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
 
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  //Попытка открыть выбранный файл.
  wdDoc := wdDocs.Open(FileName:=Od.FileName);
  (*
  //На случай, если надо создать новый документ.
  //Если параметр Template:='...' не задан,
  //то новый документ создаётся по шаблону Normal.Dot.
  //wdDoc := wdDocs.Add;
  *)
  //Добавляем пустую строку в конец документа.
  wdDoc.Range.InsertAfter(#10);
  //Добавляем текст в конец документа.
  S := Memo1.Text;
  wdDoc.Range.InsertAfter(S);
  //Закрываем MS Word.
  //wdApp.Quit;
end;
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
13.10.2011, 22:35  [ТС] 3
а почему в конец документа? нельзя ли в начале ? и как к тексту в ворде + дописать еще плюс переменные которые сичтает программа?

все равно спасибо_)
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
13.10.2011, 22:41 4
Цитата Сообщение от adelbaew Посмотреть сообщение
нельзя ли в начале ? и как к тексту в ворде + дописать еще плюс переменные которые сичтает программа?
Можно и в начало документа добавлять текст. В этом случае вместо вызова
Delphi
1
wdDoc.Range.InsertAfter();
надо применить вызов другого метода:
Delphi
1
wdDoc.Range.InsertBefore();
И в качестве текста можно добавлять сведения о значениях различных переменных программы.
Например, предположим, что надо записать сведения о двух переменных:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
...
  Num : Extended;
  I : Integer;
behin
...
  //Составляем текст.
  S :=
    'Переменная Num = ' + FloatToStr(Num) + '.'
    + #10 + 'Переменная I = ' + IntToStr(I) + '.'
    + #10
  ;
  //Добавляем текст в начало документа.
  wdDoc.Range.InsertBefore(S);
...
end;
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
14.10.2011, 00:40  [ТС] 5
пытался и не получается...
вы может исходник пришлите: пускай а и в - у вас будут например равны 5 и 6

пожалуйста...
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
14.10.2011, 01:05 6
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
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  wdApp, wdDocs, wdDoc : Variant;
  S : String;
  Od : TOpenDialog;
 
  //Переменные для показа.
  NumV : Extended;
  IntV : Integer;
begin
  Od := OpenDialog1;
 
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath( Application.ExeName )
  ;
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then begin
    MessageDlg(
      'Файл с заданным именем не найден. Действие отменено.'
      ,mtWarning, [mbOK], 0
    );
    Exit;
  end;
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
 
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  //Попытка открыть выбранный файл.
  wdDoc := wdDocs.Open(FileName:=Od.FileName);
  (*
  //На случай, если надо создать новый документ.
  //Если параметр Template:='...' не задан,
  //то новый документ создаётся по шаблону Normal.Dot.
  //wdDoc := wdDocs.Add;
  *)
 
  //Задаём значения переменных.
  NumV := Pi; //Число Пи.
  IntV := 2011;
  //Формируем текст.
  S :=
    'Переменная NumV = ' + FloatToStr(NumV) + '.'
    + #13#10 + 'Переменная IntV = ' + FloatToStr(IntV) + '.'
    + #13#10
  ;
  //Добавляем текст в начало документа.
  wdDoc.Range.InsertBefore(S);
 
  //Записываем сведения в журнал.
  Memo1.Lines.Add('--------------------------------------------------');
  Memo1.Lines.Add('В начало документа MS Word вставлен текст:');
  Memo1.Lines.Add(S);
 
  //Закрываем MS Word.
  //wdApp.Quit;
end;
Вложения
Тип файла: rar AddTextToMSWordDoc.rar (183.5 Кб, 11 просмотров)
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
17.10.2011, 00:32  [ТС] 7
Проблема в том что приложение после нажатия на выполнить - требует самостоятельно найти документ ворда.. а мне бы желательно что бы я (мы) его не искали, юзали на компе - а ворд создавался автоматически...

ваш вариант обогатил мои узкие знания в делфи спасибо...

но создание автоматического варианта я видел на примере работающей программы .. довольно причем простенькой
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.10.2011, 09:14 8
Если заранее известно, где будет находиться файл - тогда просто жёстко в программе надо прописать имя файла. Вернее, возможно, лучше прописать относительный путь - например, относительно папки, в которой расположен исполняемый файл программы.
Вот как можно определить имя файла, который лежит в папке с исполняемым файлом программы:
Delphi
1
2
3
4
5
6
const
  Fn = 'data.doc';
var
  FileName : String;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
Если требуется создать новый документ и поместить туда данные, на этот случай я в коде написал в комментариях, как это сделать:
Delphi
1
2
3
4
5
6
  (*
  //На случай, если надо создать новый документ.
  //Если параметр Template:='...' не задан,
  //то новый документ создаётся по шаблону Normal.Dot.
  //wdDoc := wdDocs.Add;
  *)
Вот, например, как будет выглядеть код для такого алгоритма: если файл уже существует, то в него добавляются данные. Если файл не существует, то он создаётся и после этого в него добавляются данные.
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
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'data.doc';
var
  wdApp, wdDocs, wdDoc : Variant;
  S, FileName : String;
  
  //Переменные для показа.
  NumV : Extended;
  IntV : Integer;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
  
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
  
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  
  //Проверяем, существует ли заданный файл.
  if FileExists(FileName) then 
    //Попытка открыть существующий файл.
    wdDoc := wdDocs.Open(FileName:=FileName)
  else begin
    //Создание нового документа.
    //Если параметр Template:='...' не задан,
    //то новый документ создаётся по шаблону Normal.Dot.
    wdDoc := wdDocs.Add
  ;
  
  //Задаём значения переменных.
  NumV := Pi; //Число Пи.
  IntV := 2011;
  //Формируем текст.
  S :=
    'Переменная NumV = ' + FloatToStr(NumV) + '.'
    + #13#10 + 'Переменная IntV = ' + FloatToStr(IntV) + '.'
    + #13#10
  ;
  //Добавляем текст в начало документа.
  wdDoc.Range.InsertBefore(S);
  
  //Записываем сведения в журнал.
  Memo1.Lines.Add('--------------------------------------------------');
  Memo1.Lines.Add('В начало документа MS Word вставлен текст:');
  Memo1.Lines.Add(S);
  
  //Сохраняем документ.
  wdDoc.SaveAs(FileName);
  //Закрываем MS Word.
  //wdApp.Quit;
end;
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
23.10.2011, 20:51  [ТС] 9
Цитата Сообщение от Mawrat Посмотреть сообщение
Если заранее известно, где будет находиться файл - тогда просто жёстко в программе надо прописать имя файла. Вернее, возможно, лучше прописать относительный путь - например, относительно папки, в которой расположен исполняемый файл программы.
Вот как можно определить имя файла, который лежит в папке с исполняемым файлом программы:
Delphi
1
2
3
4
5
6
const
  Fn = 'data.doc';
var
  FileName : String;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
Если требуется создать новый документ и поместить туда данные, на этот случай я в коде написал в комментариях, как это сделать:
Delphi
1
2
3
4
5
6
  (*
  //На случай, если надо создать новый документ.
  //Если параметр Template:='...' не задан,
  //то новый документ создаётся по шаблону Normal.Dot.
  //wdDoc := wdDocs.Add;
  *)
Вот, например, как будет выглядеть код для такого алгоритма: если файл уже существует, то в него добавляются данные. Если файл не существует, то он создаётся и после этого в него добавляются данные.
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
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'data.doc';
var
  wdApp, wdDocs, wdDoc : Variant;
  S, FileName : String;
  
  //Переменные для показа.
  NumV : Extended;
  IntV : Integer;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
  
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
  
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  
  //Проверяем, существует ли заданный файл.
  if FileExists(FileName) then 
    //Попытка открыть существующий файл.
    wdDoc := wdDocs.Open(FileName:=FileName)
  else begin
    //Создание нового документа.
    //Если параметр Template:='...' не задан,
    //то новый документ создаётся по шаблону Normal.Dot.
    wdDoc := wdDocs.Add
  ;
  
  //Задаём значения переменных.
  NumV := Pi; //Число Пи.
  IntV := 2011;
  //Формируем текст.
  S :=
    'Переменная NumV = ' + FloatToStr(NumV) + '.'
    + #13#10 + 'Переменная IntV = ' + FloatToStr(IntV) + '.'
    + #13#10
  ;
  //Добавляем текст в начало документа.
  wdDoc.Range.InsertBefore(S);
  
  //Записываем сведения в журнал.
  Memo1.Lines.Add('--------------------------------------------------');
  Memo1.Lines.Add('В начало документа MS Word вставлен текст:');
  Memo1.Lines.Add(S);
  
  //Сохраняем документ.
  wdDoc.SaveAs(FileName);
  //Закрываем MS Word.
  //wdApp.Quit;
end;
у меня программа считает a и b - но когда я вставляю в 'Переменная NumV = ' + FloatToStr(а) + '.'
+ #13#10 + 'Переменная IntV = ' + FloatToStr(b) + '.'
+ #13#10

а она у меня выдает почему то в ворде

:= Pi;
:= 2011;

ц... помогите((
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
23.10.2011, 21:59 10
Чтобы разобраться в программе, надо посмотреть код. adelbaew, опубликуй код.
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
24.10.2011, 10:11  [ТС] 11
вот собственно код

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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ShellAPI, jpeg, Math, Menus, ComObj;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    Label9: TLabel;
    Label10: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    N4: TMenuItem;
    N3: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    Label11: TLabel;
    Label12: TLabel;
    Button2: TButton;
    Label13: TLabel;
    Label17: TLabel;
    Edit4: TEdit;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Edit5: TEdit;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Label11Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// щелчок на кнопке Вычислить
procedure TForm1.Button1Click(Sender: TObject);
 
    const
  Ft = 'data.doc';
 
   var
    f, p, m: real;     // площадь пролива, плотность, удельная массовая скорость выгорания
    d, h, l: real;     // диаметр, высота пламени + вспомог. переменная
    ef: real;     // среднеповерхностная плотность теплового излучения пламени
     fq, fv, fn: real;     // угловой коэффициент и факторы облученности
       A, B, S, v: real;     // геометрия
        r: real;     // расстояние от геометрического центра до объекта
      t: real;     // коэффициент пропускания атмосферы
     q, e: real;     // интенсивность теплового излучения + вспомог. переменная
 
            wdApp, wdDocs, wdDoc : Variant;
  Sr, FileName : String;
  
 
 
 
 
    begin
         // получить исходные данные
    f := StrToFloat(Edit1.Text);
    p := StrToFloat(Edit2.Text);
    r := StrToFloat(Edit3.Text);
 
 
 
 
 
 
    d:= Sqrt(4*f/3.141592654);
 
 
 
 
  // Углеводороды
if RadioGroup1.ItemIndex=0 then
 begin
  m:=0.08;
  if d<=10 then ef:=220
  else if(d>10)and(d<=20) then ef:=220+((d-10)/(20-10))*(180-220)
  else if(d>20)and(d<=30) then ef:=180+((d-20)/(30-20))*(150-180)
  else if(d>30)and(d<=40) then ef:=150+((d-30)/(40-30))*(130-150)
  else if(d>40)and(d<=50) then ef:=130+((d-40)/(50-40))*(120-130)
  else ef:=120;
 end
// для СУГ
else if RadioGroup1.ItemIndex=1 then
 begin
  m:=0.1;
  if d<=10 then ef:=80
  else if(d>10)and(d<=20) then ef:=80+((d-10)/(20-10))*(63-80)
  else if(d>20)and(d<=30) then ef:=63+((d-20)/(30-20))*(50-63)
  else if(d>30)and(d<=40)then  ef:=50+((d-30)/(40-30))*(43-50)
  else if(d>40)and(d<=50) then ef:=43+((d-40)/(50-40))*(40-43)
  else ef:=40;
 end
// для бензина
else if RadioGroup1.ItemIndex=2 then
  begin
   m:=0.06;
   if d<=10 then  ef:=60
   else if(d>10)and(d<=20) then ef:=60+((d-10)/(20-10))*(47-60)
   else if(d>20)and(d<=30) then ef:=47+((d-20)/(30-20))*(35-47)
   else if(d>30)and(d<=40) then ef:=35+((d-30)/(40-30))*(28-35)
   else if(d>40)and(d<=50) then ef:=28+((d-40)/(50-40))*(25-28)
   else ef:=25;
  end
// для дизельного топлива
else if RadioGroup1.ItemIndex=3 then
  begin
   m:=0.04;
   if d<=10 then ef:=40
   else if(d>10)and(d<=20) then ef:=40+((d-10)/(20-10))*(32-40)
   else if(d>20)and(d<=30) then ef:=32+((d-20)/(30-20))*(25-32)
   else if(d>30)and(d<=40) then ef:=25+((d-30)/(40-30))*(21-25)
   else if(d>40)and(d<=50) then ef:=21+((d-40)/(50-40))*(18-21)
   else ef:=18;
  end
// для нефти
else if RadioGroup1.ItemIndex=4 then
  begin
   m:=0.04;
   if d<=10 then ef:=25
   else if(d>10)and(d<=20) then ef:=25+((d-10)/(20-10))*(19-25)
   else if(d>20)and(d<=30) then ef:=19+((d-20)/(30-20))*(15-19)
   else if(d>30)and(d<=40) then ef:=15+((d-30)/(40-30))*(12-15)
   else if(d>40)and(d<=50) then ef:=12+((d-40)/(50-40))*(10-12)
   else ef:=10;
 end;
 
 
     // Высота пламени
       e:= (((m /(p*(Sqrt(9.81*d))))));
       l:=0.61;
       h:= 42*d* Power(e,l);
 
 
    begin
    // Геометрия
       v:=2*h/d;
 
       S:=2*r/d;
 
       B:=(1+Sqr(S))/(2*S);
 
       A:=(Sqr(v)+Sqr(S)+1)/(2*S);
 
       fv:=0.32* ( (1/S)*ArcTan(v/(Sqrt(Sqr(S)-1))) -
       (v/S)*(ArcTan(Sqrt((S-1)/(S+1))) -
       (A/(Sqrt(Sqr(A)-1)))*(ArcTan(Sqrt(((A+1)*(S-1))/((A-1)*(S+1)))))
        ));
 
       fn:=0.32* ( ((B-1/S)/(Sqrt(Sqr(B)-1)))*
 
       (ArcTan(Sqrt(((B+1)*(S-1))/((B-1)*(S+1)))))   -
         ((A-(1/S))/(Sqrt(Sqr(A)-1)))   *
         (ArcTan(Sqrt(((A+1)*(S-1))/((A-1)*(S+1))))));
 
 
        // Угловой коэффициент облученности
       fq:=Sqrt(Sqr(fv)+Sqr(fn));
              // Коэффициент пропускания атмооферы
       t:=Exp(-7*0.0001*(r-0.5*d));
       // Интенсивность теплового излучения
       q:=Ef*fq*t;
    end;
 
 
 Label8.Caption := 'Интенсивность теплового излучения: ';
Label8.Caption := Label8.Caption +
                   FloatToStrF(q,ffGeneral,7,3) + ' кВт/м2';
 
 
    Label9.Caption := 'Среднеповерхностная плотность теплового излучения: ';
Label9.Caption := Label9.Caption +
                   FloatToStrF(ef,ffGeneral,7,3) + ' кВт/м2';
 
                    Label10.Caption := 'Угловой коэффициент облученности ';
Label10.Caption := Label10.Caption +
                   FloatToStrF(fq,ffGeneral,7,3);
 
                   Label14.Caption := 'Коэффициент пропускания атмосферы ';
Label14.Caption := Label14.Caption +
                   FloatToStrF(t,ffGeneral,7,3);
 
 
                   Label15.Caption := 'Эффективный диаметр пролива ';
Label15.Caption := Label15.Caption +
                   FloatToStrF(d,ffGeneral,7,3) + ' м';
 
 
                   Label16.Caption := 'Высота пламени ';
Label16.Caption := Label16.Caption +
                   FloatToStrF(h,ffGeneral,7,3) + ' м';
 
 
 
            FileName := ExtractFilePath( ParamStr(0) ) + Ft;
  
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
  
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  
  //Проверяем, существует ли заданный файл.
  if FileExists(FileName) then 
    //Попытка открыть существующий файл.
    wdDoc := wdDocs.Open(FileName:=FileName)
  else begin
    //Создание нового документа.
    //Если параметр Template:='...' не задан,
    //то новый документ создаётся по шаблону Normal.Dot.
    wdDoc := wdDocs.Add
  ;
  
 
  //Формируем текст.
  Sr :=
    'Переменная NumV = ' + FloatToStr(q) + '.'
    + #13#10 +
    'Переменная IntV = ' + FloatToStr(d) + '.'
    + #13#10
  ;
  //Добавляем текст в начало документа.
  wdDoc.Range.InsertBefore(Sr);
  
  
 
 
  //Закрываем MS Word.
  //wdApp.Quit;
 
 
end;
 
   end;
 
 
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if (Key in ['0'..'9',',']) = False then
    Key:=Chr(0);
end;
 
procedure TForm1.Label11Click(Sender: TObject);
begin
ShellExecute(handle, 'open', 'http://artpb.ru/programs.html', nil, nil, SW_SHOW);
end;
 
 
 
procedure TForm1.N2Click(Sender: TObject);
begin
     Close
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
       ShowMessage('Программа создана  10 октября 2011  ');
        exit;
end;
 
procedure TForm1.N4Click(Sender: TObject);
begin
     ShowMessage('создатель Купцов Адель  ');
        exit;
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
        ShowMessage('Программа работает на основании пункта В.5 СП-12.13130.2009' );
        exit;
end;
 
procedure TForm1.N6Click(Sender: TObject);
begin
     ShowMessage('Свои вопросы вы можете отправлять на [email]artpb@yandex.ru[/email]  ');
        exit;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
 
var
 
 // для огненного шара
 
      ho, ds, qo, ro, fqo, mo, ts, tso: real;     // огненный шар
   lo, loo: real;     // вспомогательная переменная
 
 
begin
 
 mo := StrToFloat(Edit4.Text);
    ro := StrToFloat(Edit5.Text);
 
       lo:=0.327;
       Ds:= 5.33* Power(mo,lo);
 
    ho:=Ds/2;
 
    loo:=0.303;
    ts:= 0.92* Power(mo,loo);
 
    fqo:= (1)/(4*(1+sqr(ro/ds))*(sqrt(1+sqr(ro/ds))));
 
      tso:=Exp(-7*0.0001*( Sqrt(Sqr(ro)+Sqr(ho)) - ho  ));
 
      qo:=450*fqo*tso;
 
 
      Label24.Caption := 'Угловой коэффициент облученности ';
Label24.Caption := Label24.Caption +
                   FloatToStrF(fqo,ffGeneral,7,3);
 
                   Label25.Caption := 'Коэффициент пропускания атмосферы ';
Label25.Caption := Label25.Caption +
                   FloatToStrF(tso,ffGeneral,7,3);
 
 
                   Label26.Caption := 'Время существования шара ';
Label26.Caption := Label26.Caption +
                   FloatToStrF(ts,ffGeneral,7,3) + ' с';
 
 
                   Label27.Caption := 'Интенсивность теплового излучения ';
Label27.Caption := Label27.Caption +
                   FloatToStrF(qo,ffGeneral,7,3) + ' кВт/м2';
 
end;
 
 
end.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.10.2011, 10:23 12
Что касается передачи данных в Word - здесь всё верно. В начале документа MS Word должна появиться надпись:
Код
Переменная NumV = <вещественное число q>.
Переменная IntV = <вещественное число d>.
adelbaew, если в Word-е что-то не то распечатывается, наверное лучше поступить так - код распечатки в Word оформить в виде отдельной процедуры. Попробовать её выполнить. Если всё нормально пройдёт, то добавить код на прежнее место.
---
И ещё раз хотел уточнить - вместо записей чисел q и d что-то не то появляется? Можешь написать что именно в Word-е печатается?
0
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
24.10.2011, 13:27  [ТС] 13
Отдельную процедуру почему то вовсе не печатает (я делал отдельную кнопку (( )

а вот печатает в этом случае что

1 переменная - 3,1416
2 переменная - 1100

то есть те параметры которые вы уже водили

то ли запомнилось это где то..
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.10.2011, 15:05 14
Цитата Сообщение от adelbaew Посмотреть сообщение
то ли запомнилось это где то..
В коде, вроде, нет тех значений, которые я заводил... Предлагаю поступить так - те переменные: q и d надо переименовать. Это позволит проследить участки кода, в которых применяются эти идентификаторы. Т. е., надо сделать прямо так: берём и в разделе var заменяем идентификаторы:
вместо q пишем q_test, вместо d пишем d_test. Дальше пробуем компилировать - появятся ошибки с сообщением, что найдены строки с неизвестными идентификаторами. И эти ошибки одна за другой надо исправлять, заменяя идентификаторы на новые. И при этом отслеживая, где могли быть присвоены "старые" значения.
0
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
27.10.2011, 18:42  [ТС] 15
вот хочется как у него((
Вложения
Тип файла: rar Расчет индивидуального риска.rar (419.0 Кб, 8 просмотров)
0
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
28.10.2011, 09:15  [ТС] 16
вообщем когда я прописываю новую кнопку и пытаюсь вписать в ворд ту переменную что вычисляет программа, то происходит - что он пишет что не распознает ее

в окне errors

underclared identiffer

Добавлено через 8 минут
В результате сделать отдельную кнопку например - отчет у меня не получилось -

работа в итоге превратилась в одну кнопку почему то ... и в принципе она так выдает отчет, но при ввода следующего результата, программа не скидывает предыдущие результаты - а выдает те что уже рассчитывала

Добавлено через 13 часов 45 минут
Собственно решил проблему! Через печать pdf формате...

единственное - там печатает то что я вывожу в label, а можно ли самому добавить необходимые надписи в pdf файле??
0
28.10.2011, 09:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2011, 09:15
Помогаю со студенческими работами здесь

Вывод поля с разными значениями
Привет, у меня есть таблица вида: login|group| root | root| temp| temp| root | temp| вопрос...

У друга не вставляется объект ActiveX в документ worda
У друга не вставляется объект ActiveX в документ worda. Все элементы включены, при вставке объекта...

Как в качестве отчета использовать текст Worda
Есть стандартный договор, необходимо к примеру вместо слова заказчик , подрядчик ,и тд. вставить...

Программная распечатка справочной системы VBA WORDa
Доброе время суток форуму У меня WORD 2003. Вопрос такой: Возможно ли программно распечатать...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru