Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
1

Сохранение\Открытие файла

12.12.2010, 01:46. Показов 3231. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно организовать сохранение в файл, например через SaveFileDialog. Проект организован так что в файл **.hpp описаны переменные, например
C++
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
class DlgGenerator : public DlgOnCanvas
{
  OCS;
 
public:
 
    DlgGenerator (DlgCanvas & owner);
  ~ DlgGenerator (void);
 
protected:
 
  ItemBox  & cbbMemoGen;
  EditText & edtMemoGen;
  Bool onButSave (void);
  Bool onButLoad (void);
  virtual void getFields     (void);
 
private:
 
  PushButton & butSave;
  PushButton & butLoad;
  DlgGenerator (const DlgGenerator & rhs);
  
  void operator = (const DlgGenerator & rhs);
 
}; // class DlgGenerator
В самом же dlggenerator.cpp описано функции и т.д.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Bool DlgGenerator::onButSave (void)
{
 
      return TRUE;
} // DlgGenerator::onButSave
 
 
Bool DlgGenerator::onButLoad (void)
{
  
  return TRUE;
 
} // DlgGenerator::onButLoad
То есть по нажатию на кнопки Save и Load вызываются функции onButSave и onButLoad. И как бы я не пытался использовать SaveFileDialog ничего не получается, пишет что неизвестная структура и т.д.
Не могли бы вы помочь? Куда и что добавить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2010, 01:46
Ответы с готовыми решениями:

Открытие документа .ppt, внесение в него информации, сохранение
Уважаемые программисты! Просит о помощи сотрудник МЧС. Я не являюсь программистом, но встала острая...

Открытие файла.
Какой код надо прописать что бы открыть файл где лежит твой exe, при нажатии на клавишу. Я знаю что...

Открытие файла в mfc
Здравствуйте,начал изучать mfc и столкнулся с проблемой. Нужно сделать ,чтобы по нажатию кнопки...

Открытие .exe файла
Проблема заключается вот в чем: в VS 2012 написал программу, скомпилировал, на моем компе...

25
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 11:32 2
1)перегрузить обработчики
Bool onButSave (void);
Bool onButLoad (void);
2)изменить в ресурсах коды событий, назначенные кнопкам SAVE и LOAD
и сделать на эти новые коды новые обработчики

Хотя, может я неверно понял проблему.
открытие через OFD:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    CString FileName;
    CFileDialog Fd(true,NULL,NULL,
        OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|
        OFN_LONGNAMES|OFN_PATHMUSTEXIST,
        "wave-files(*.wav)|*.wav|All (*.*)|*.*||");
    Fd.m_ofn.lpstrTitle="Opening Source Track...";
    if(Fd.DoModal() != IDOK)
        return;
    FileName=Fd.GetFileExt();
    if((FileName!="wav") &&(FileName!="WAV"))
    {
        MessageBox("Used File Extention not supported!");
        return;
    }
    //Fd.GetFileName() содержит полное имя файла, используемое в CFile::Open()
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 13:05  [ТС] 3
То есть в onbutsave просто вставить этот код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Bool DlgGenerator::onButSave (void)
{
 
       CString FileName;
        CFileDialog     Fd(true,NULL,NULL,
                OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|
                OFN_LONGNAMES|OFN_PATHMUSTEXIST,
                "wave-files(*.wav)|*.wav|All (*.*)|*.*||");
        Fd.m_ofn.lpstrTitle="Opening Source Track...";
        if(Fd.DoModal() != IDOK)
                return;
        FileName=Fd.GetFileExt();
        if((FileName!="wav") &&(FileName!="WAV"))
        {
                MessageBox("Used File Extention not supported!");
                return;
        }
 
      return TRUE;
} // DlgGenerator::onButSave
На компиляции

C++
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
1>
1>.\DlgGenerator.cpp(229) : error C2065: CString: необъявленный идентификатор
1>.\DlgGenerator.cpp(229) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "FileName"
1>.\DlgGenerator.cpp(229) : error C2065: FileName: необъявленный идентификатор
1>.\DlgGenerator.cpp(230) : error C2065: CFileDialog: необъявленный идентификатор
1>.\DlgGenerator.cpp(230) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Fd"
1>.\DlgGenerator.cpp(231) : error C2065: OFN_EXPLORER: необъявленный идентификатор
1>.\DlgGenerator.cpp(231) : error C2065: OFN_FILEMUSTEXIST: необъявленный идентификатор
1>.\DlgGenerator.cpp(231) : error C2065: OFN_HIDEREADONLY: необъявленный идентификатор
1>.\DlgGenerator.cpp(232) : error C2065: OFN_LONGNAMES: необъявленный идентификатор
1>.\DlgGenerator.cpp(232) : error C2065: OFN_PATHMUSTEXIST: необъявленный идентификатор
1>.\DlgGenerator.cpp(230) : error C3861: Fd: идентификатор не найден
1>.\DlgGenerator.cpp(234) : error C2065: Fd: необъявленный идентификатор
1>.\DlgGenerator.cpp(234) : error C2228: выражение слева от ".m_ofn" должно представлять класс, структуру или объединение
1>        тип: 'unknown-type'
1>.\DlgGenerator.cpp(234) : error C2228: выражение слева от ".lpstrTitle" должно представлять класс, структуру или объединение
1>.\DlgGenerator.cpp(235) : error C2065: Fd: необъявленный идентификатор
1>.\DlgGenerator.cpp(235) : error C2228: выражение слева от ".DoModal" должно представлять класс, структуру или объединение
1>        тип: 'unknown-type'
1>.\DlgGenerator.cpp(235) : error C2065: IDOK: необъявленный идентификатор
1>.\DlgGenerator.cpp(236) : error C2561: DlgGenerator::onButSave: функция должна возвращать значение
1>        d:\temp\new_year_release\trunk\alerta\alerta\DlgGenerator.hpp(36): см. объявление 'DlgGenerator::onButSave'
1>.\DlgGenerator.cpp(237) : error C2065: FileName: необъявленный идентификатор
1>.\DlgGenerator.cpp(237) : error C2065: Fd: необъявленный идентификатор
1>.\DlgGenerator.cpp(237) : error C2228: выражение слева от ".GetFileExt" должно представлять класс, структуру или объединение
1>        тип: 'unknown-type'
1>.\DlgGenerator.cpp(238) : error C2065: FileName: необъявленный идентификатор
1>.\DlgGenerator.cpp(238) : warning C4130: !=: логическая операция с адресом строковой константы
1>.\DlgGenerator.cpp(238) : error C2065: FileName: необъявленный идентификатор
1>.\DlgGenerator.cpp(238) : warning C4130: !=: логическая операция с адресом строковой константы
1>.\DlgGenerator.cpp(240) : error C3861: MessageBox: идентификатор не найден
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 13:25 4
али, проект не MFC?
а класс DlgOnCanvas(предок DlgGenerator) откуда тогда взят?
лучше покажи весь исходник, а то может еще что напутано.
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 13:36  [ТС] 5
DlgGenerator'a ?
C++
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
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
// Copyright (c) 1992-2006 BugFree Software bvba. All rights reserved.
 
#define NOCONSTRUCT
#include "xx.hpp"
#include "xxDatabase.hpp"
#include "DlgCanvas.hpp"
#include "DlgGenerator.hpp"
#include "DlgModal.hpp"
#include "EditText.hpp"
#include "PushButton.hpp"
#include "Label.hpp"
#include "Field.hpp"
#include "HelpItem.hpp"
#include "ItemBox.hpp"
#include "Metaclass.hpp"
#include "PickList.hpp"
#include "Session.hpp"
#include "StaticText.hpp"
#include "Subtype.hpp"
#include "Table.hpp"
#include "TdbObject.hpp"
#include "Tron.hpp"
 
static Int16 hor [] =
{
  DX, DX, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DX_FIELD, DS, 0
};
static Int16 ver [] =
{
  DS, DY_MEMO, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD, DY_FIELD,  0
};
static ControlDef controlDef [] =
{
  { FLEX_COMBOBOX, 1, 1, 1, 0, CBB_MEMOGEN },
  { FLEX_EDITMEMO, 1, 1, 12, 1, EDT_MEMOGEN },
  { FLEX_PUSHBUTTON, 2, 4, 1, 0, BUT_ADMINNAME },
  { FLEX_PUSHBUTTON, 3, 4, 1, 0, BUT_DESCRIPTION },
  { FLEX_PUSHBUTTON, 4, 4, 1, 0, BUT_OPNAME },
  { FLEX_PUSHBUTTON, 5, 4, 1, 0, BUT_RENEWAL },
  { FLEX_PUSHBUTTON, 6, 4, 1, 0, BUT_EXPENS },
  { FLEX_PUSHBUTTON, 7, 4, 1, 0, BUT_RENTERM },
  { FLEX_PUSHBUTTON, 2, 5, 1, 0, BUT_VAT },
  { FLEX_PUSHBUTTON, 3, 5, 1, 0, BUT_STATUS },
  { FLEX_PUSHBUTTON, 4, 5, 1, 0, BUT_NUMBER },
  { FLEX_PUSHBUTTON, 5, 5, 1, 0, BUT_CONTACTNAME },
  { FLEX_PUSHBUTTON, 6, 5, 1, 0, BUT_BHNAME },
  { FLEX_PUSHBUTTON, 2, 12, 1, 0, BUT_GENERATE },
  { FLEX_PUSHBUTTON, 3, 12, 1, 0, BUT_SAVE2 },
  { FLEX_PUSHBUTTON, 4, 12, 1, 0, BUT_LOAD2 },
  { 0,             0, 0, 0, 0, 0        }
};
static DialogDef dialogDef = { DLG_GENERATOR, hor, ver, controlDef };
 
 
static const char * tags[] =
{
  "rrrrrrrrrrrrrrrrxx",
  "cbbMemoGen",
  "edtMemoGen",
  "butAdminName",
  "butDescription",
  "butOPname",
  "butRenewal",
  "butExpens",
  "butRenterm",
  "butVat",
  "butStatus",
  "butNumber",
  "butContactName",
  "butBHname",
  "butGenerate",
  "butSave",
  "butLoad",
  "copyFieldId",
  "copyFieldIdPerson",
};
 
METACLASS(DlgGenerator, DlgOnCanvas);
 
 
DlgGenerator::DlgGenerator (DlgCanvas & owner)
: DlgOnCanvas (owner, getDialogDef(), owner.getWorkset())
, cbbMemoGen     (* new ItemBox(*this, CBB_MEMOGEN, CH(DlgGenerator::onCbbMemoGen)))
, edtMemoGen     (* new EditText(*this, EDT_MEMOGEN, CH(DlgGenerator::onFieldChange)))
, butAdminName   (* new PushButton(*this, BUT_ADMINNAME,  CH(DlgGenerator::onButAdminName)))
, butDescription   (* new PushButton(*this, BUT_DESCRIPTION,  CH(DlgGenerator::onButDescription)))
, butOPname   (* new PushButton(*this, BUT_OPNAME,  CH(DlgGenerator::onButOPname)))
, butRenewal   (* new PushButton(*this, BUT_RENEWAL,  CH(DlgGenerator::onButRenewal)))
, butExpens   (* new PushButton(*this, BUT_EXPENS,  CH(DlgGenerator::onButExpens)))
, butRenterm   (* new PushButton(*this, BUT_RENTERM,  CH(DlgGenerator::onButRenterm)))
, butVat   (* new PushButton(*this, BUT_VAT,  CH(DlgGenerator::onButVat)))
, butStatus   (* new PushButton(*this, BUT_STATUS,  CH(DlgGenerator::onButStatus)))
, butNumber   (* new PushButton(*this, BUT_NUMBER,  CH(DlgGenerator::onButNumber)))
, butContactName   (* new PushButton(*this, BUT_CONTACTNAME,  CH(DlgGenerator::onButContactName)))
, butBHname   (* new PushButton(*this, BUT_BHNAME,  CH(DlgGenerator::onButBHname)))
, butGenerate   (* new PushButton(*this, BUT_GENERATE,  CH(DlgGenerator::onButGenerate)))
, butSave   (* new PushButton(*this, BUT_SAVE2,  CH(DlgGenerator::onButSave)))
, butLoad   (* new PushButton(*this, BUT_LOAD2,  CH(DlgGenerator::onButLoad)))
, copyFieldId    (0)
, copyFieldIdPerson    (0)
{
 
} // DlgGenerator::DlgGenerator
 
 
DlgGenerator::~DlgGenerator (void)
{
 
} // DlgGenerator::~DlgGenerator
 
 
DialogDef & DlgGenerator::getDialogDef (void)
{
 
  const HelpItem & theClient = HelpItem::get(database.clientId);
  if (theClient.cppDefineId != CLIENT_ACHMEA)
  {
    controlDef[1].y  = 1;
    controlDef[1].dy = 3;
  }
 
  return dialogDef; 
 
} // DlgGenerator::getDialogDef
 
 
void DlgGenerator::getFields (void)
{
 
  workset.setContext(0);
  workset.setText(cbbMemoGen, edtMemoGen);
 
} // DlgGenerator::getFields
 
 
void DlgGenerator::initFields (void)
{
  const Table & table = workset.getTable();
  workset.setObjects(table.objects);
  workset.setContext(0);
 
  DlgOnCanvas::initFields();
 
  Fields personFields;
  personFields.add(Field::get(fieldId));
  edtMemoGen.notifyWhen(didChange | didGetFocus);
  Fields memos;
  if (fieldId == 0)
  {
    fieldId = personFields[0].id;
  }
 
for (Index i = canvas.currentTab() + 5; i > 0; i--)
  {
    DlgOnCanvas & contractant = canvas.getDialog(i);
    const Field & field = Field::get(contractant.fieldId);
      if (field.parameterId == OBJ_PARTY)
    {
      copyFieldId = field.id;
      continue;
    }
      if (field.parameterId == OBJ_PERSON)
    {
      copyFieldIdPerson = field.id;
      continue;
    }
 }
 
 
 
Workset & contract = canvas.getWorkset();
const Subtype & subtype = canvas.getSubtype();
 
  for (Index i = 0; i < table.fields.size(); i++)
  {
    const Field & field = table.fields[i];
    if (field.dataType == TYPE_MEMO)
    {
      memos.add(field);
    }
  } 
 
  cbbMemoGen.fillList(memos);
  cbbMemoGen = FLD_CONTRACT_MEMOGEN;
  
} // DlgGenerator::initFields
 
 
Bool DlgGenerator::onCbbMemoGen (void)
{
 
  setFields();
 
  return TRUE;
 
} // DlgGenerator::onCbbMemoGen 
 
 
Bool DlgGenerator::onFieldChange (void)
{
 
  return DlgOnCanvas::onFieldChange();
 
} // DlgGenerator::onFieldChange
 
 
void DlgGenerator::setFields (void)
{
 
  workset.setContext(0);
  edtMemoGen = workset.getText(cbbMemoGen);
 
} // DlgGenerator::setFields
 
 
Bool DlgGenerator::testMember (void)
const
{
 
  // base class check
  return DlgOnCanvas::testMember();
 
} // DlgGenerator::testMember
 
 
Bool DlgGenerator::onButSave (void)
{
 
       CString FileName;
        CFileDialog     Fd(true,NULL,NULL,
                OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|
                OFN_LONGNAMES|OFN_PATHMUSTEXIST,
                "wave-files(*.wav)|*.wav|All (*.*)|*.*||");
        Fd.m_ofn.lpstrTitle="Opening Source Track...";
        if(Fd.DoModal() != IDOK)
                return;
        FileName=Fd.GetFileExt();
        if((FileName!="wav") &&(FileName!="WAV"))
        {
                MessageBox("Used File Extention not supported!");
                return;
        }
 
      return TRUE;
} // DlgGenerator::onButSave
 
 
Bool DlgGenerator::onButLoad (void)
{
  
  return TRUE;
 
} // DlgGenerator::onButLoad
 
 
Bool DlgGenerator::onButAdminName (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{AdminName}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButAdminName
 
 
 
Bool DlgGenerator::onButDescription (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{Description}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButDescription
 
Bool DlgGenerator::onButOPname (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{OPNAME}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButOPname
 
Bool DlgGenerator::onButRenewal (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{RENEWALTERM}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButRenewal
 
Bool DlgGenerator::onButExpens (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{EXPENS}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButExpens
 
Bool DlgGenerator::onButRenterm (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{RENEWALTERM}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButRenterm
 
Bool DlgGenerator::onButVat (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{VATNUMBER}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButVat
 
Bool DlgGenerator::onButStatus (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{STATUS}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButStatus
 
Bool DlgGenerator::onButNumber (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{NUMBER}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButNumber
 
Bool DlgGenerator::onButContactName (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{CONTACTNAME}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButContactName
 
Bool DlgGenerator::onButBHname (void)
{
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr+" {{BHNAME}} ");
  setFields();
  return TRUE;
 
} // DlgGenerator::onButBHname
 
Bool DlgGenerator::onButGenerate (void)
{
  Workset & contract = canvas.getWorkset();
  contract.setContext(0);
  Uns32 otherPartyId = contract.getLong(copyFieldId);
  Uns32 otherPartyIdPerson = contract.getLong(copyFieldIdPerson);
  Uns32 BudgetID = contract.getLong(FLD_CONTRACT_BUDGETHOLDER);
  Uns32 AdminID = contract.getLong(FLD_CONTRACT_ADMINISTRATOR);
  Workset contractant(OBJ_PARTY);
  Workset contractantPerson(OBJ_PERSON);
  Workset contractantBudget(OBJ_PERSON);
  Workset contractantAdmin(OBJ_PERSON);
  contractant.objects.add(TdbObject::get(otherPartyId));
  contractant.gotoObject(otherPartyId);
  contractantPerson.objects.add(TdbObject::get(otherPartyIdPerson));
  contractantPerson.gotoObject(otherPartyIdPerson);
  contractantBudget.objects.add(TdbObject::get(BudgetID));
  contractantBudget.gotoObject(BudgetID);
  contractantAdmin.objects.add(TdbObject::get(AdminID));
  contractantAdmin.gotoObject(AdminID);
 
  String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
  Uns32 abc;
  Uns32 aa;
  Uns32 k = 1;
  Uns32 kk = 1;
  String temp;
  while(k==1)
  {
  k=0;
  abc = perr.leftMost("{{AdminName}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,13);
            temp = contractantAdmin.getText(FLD_PERSON_FIRSTNAME);
            perr.insert(abc,temp);
            temp = contractantAdmin.getText(FLD_PERSON_LASTNAME);
            temp += " ";
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{CONTACTNAME}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,15);
            temp = contractantPerson.getText(FLD_PERSON_FIRSTNAME);
            perr.insert(abc,temp);
            temp = contractantPerson.getText(FLD_PERSON_LASTNAME);
            temp += " ";
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{OPNAME}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,10);
            temp = contractant.getText(FLD_PARTY_NAME);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{BHNAME}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,10);
            temp = contractantBudget.getText(FLD_PERSON_FIRSTNAME);
            perr.insert(abc,temp);
            temp = contractantBudget.getText(FLD_PERSON_LASTNAME);
            temp += " ";
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{Description}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,15);
            temp = contract.getText(FLD_CONTRACT_DESCRIPTION);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{RENEWALTERM}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,15);
            temp = contract.getText(FLD_CONTRACT_RENEWALTERM);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{EXPENS}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,10);
            temp = contract.getText(FLD_CONTRACT_EXPENSES);
            for(kk=0;kk<10;kk++)
            {
            aa = temp.leftMost("0");
            temp.remove(aa,1);
            }
            aa = temp.length()-1;
            temp.remove(aa,1);
            aa = temp.length()-1;
            temp.remove(aa,1);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{VATNUMBER}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,13);
            temp = contractant.getText(FLD_PARTY_VATNUMBER);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{STATUS}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,10);
            temp = contract.getText(FLD_CONTRACT_STATUS);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
  abc = perr.leftMost("{{NUMBER}}");
  if(abc!=perr.length()) 
        {
            perr.remove(abc,10);
            temp = contract.getText(FLD_CONTRACT_NUMBER);
            perr.insert(abc,temp);
            workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
            k = 1;
        }
 
  }
 
  
  workset.setText(FLD_CONTRACT_MEMOGEN,  perr);
  setFields();
 
  return TRUE;
 
} // DlgGenerator::onButGenerate

dlggenerator.hpp

C++
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
// Copyright (c) 1992-2006 BugFree Software bvba. All rights reserved.
 
#ifndef H_DlgGenerator
#define H_DlgGenerator
 
#ifndef H_DLGONCANVAS
#include "DlgOnCanvas.hpp"
#endif
 
 
class DlgGenerator : public DlgOnCanvas
{
  OCS;
 
public:
 
    DlgGenerator (DlgCanvas & owner);
  ~ DlgGenerator (void);
 
protected:
 
  ItemBox  & cbbMemoGen;
  EditText & edtMemoGen;
  Bool onButAdminName (void);
  Bool onButDescription (void);
  Bool onButOPname (void);
  Bool onButRenewal (void);
  Bool onButExpens (void);
  Bool onButRenterm (void);
  Bool onButVat (void);
  Bool onButStatus (void);
  Bool onButNumber (void);
  Bool onButContactName (void);
  Bool onButBHname (void);
  Bool onButGenerate (void);
  Bool onButSave (void);
  Bool onButLoad (void);
  virtual void getFields     (void);
  virtual void initFields    (void);
  virtual Bool onFieldChange (void);
  virtual void setFields     (void);
 
 
 
private:
 
  PushButton & butAdminName;
  PushButton & butDescription;
  PushButton & butOPname;
  PushButton & butRenewal;
  PushButton & butExpens;
  PushButton & butRenterm;
  PushButton & butVat;
  PushButton & butStatus;
  PushButton & butNumber;
  PushButton & butContactName;
  PushButton & butBHname;
  PushButton & butGenerate;
  PushButton & butSave;
  PushButton & butLoad;
  DlgGenerator (const DlgGenerator & rhs);
  Index        copyFieldId;
  Index        copyFieldIdPerson;
  DialogDef & getDialogDef (void);
  Bool        onCbbMemoGen    (void);
 
  void operator = (const DlgGenerator & rhs);
 
}; // class DlgGenerator
 
#endif
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 13:42 6
Ясно.
Ты, дорогой, в C++ Builder пишешь.
А раздел называется - "Visual C++".
Разницу чувствуешь?

Не грусти, попробую тему перебросить в тот раздел.
А, уже не получится.
Давно меня небыло, из модераторов выгнали.
Пометку оставлю, если кто увидит - перебросят.
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 13:44  [ТС] 7
М... В Microsoft Visual Studio 2008 пишу.
Спасибо.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 13:50 8
Цитата Сообщение от PAKOT Посмотреть сообщение
Microsoft Visual Studio 2008
Да???
а написано в твоем исходнике
"// Copyright (c) 1992-2006 BugFree Software bvba. All rights reserved."

у Microsoft Visual Studio Copyright вообще-то "Microsoft".
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 14:13  [ТС] 9
При чем тут 1 к другому? это закомментированная строка, а BugFree Software bvbaи т.д. это название компании для которой написана данная программа.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 14:33 10
Цитата Сообщение от PAKOT Посмотреть сообщение
это закомментированная строка, а BugFree Software bvbaи т.д. это название компании для которой написана данная программа.
ну... чего-то я в жизни не понимаю.
у меня Студия в исходниках в шапке пишет
1)// Microsoft Developer Studio generated include file.
2)//...бла-бла-бла... Microsoft Foundation Classes ... Copyright Microsoft Corporation 1994-...
она это САМА пишет.
всегда.
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 14:42  [ТС] 11
Ну не знаю, у меня не пишет. Ну а то что Visual Studio 2008 я уверен, тут ошибиться сложно)
Но кажется мы не в ту степь, если идеи почему он не хочется объявлять CString?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 14:54 12
Цитата Сообщение от PAKOT Посмотреть сообщение
если идеи почему он не хочется объявлять CString?
так не MFC проект.
очевидно-же.

можно сделать и на чистом WinAPI
но таких тем на этом форуме уже вагон и маленькая тележка.
вот, например: Visual Studio 2008, WinAPI - Openfile

Не по теме:

извини, я увлекся выяснением, на чем ты там пишешь. :pardon: интересно-же!

0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 17:36  [ТС] 13
Дописываю
#include <commdlg.h>

В итоге
C++
1
2
3
4
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(97) : error C2065: CALLBACK: необъявленный идентификатор
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(97) : error C2065: LPFNPSPCALLBACKA: необъявленный идентификатор
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(97) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(97) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
Добавлено через 17 минут
Bool DlgGenerator::onButLoad (void)
{
OPENFILENAME ofn; // common dialog box structure
char szFile[260]; // buffer for file name
HWND hwnd; // owner window
HANDLE hf; // file handle
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn)==TRUE)
hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
return TRUE;

} // DlgGenerator::onButLoad


Ничего не происходит по нажатию

Добавлено через 9 минут
Аналогично ноль реакции на
C++
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
Bool DlgGenerator::onButLoad (void)
{
 
OPENFILENAME ofn; // Common dialog box structure.
char szFile[260]; // Buffer for selected file name.
HWND hwnd; // Owner window.
HANDLE hf; // File handle.
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Playlists: m3u.\0*.m3u\0Music Files :mp1, mp2, mp3, wav, ogg.\0*.mp1;*.mp2;*.mp3;*.wav;*.ogg\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 
// Display the Open dialog box. 
if (GetOpenFileName(&ofn)==TRUE) 
    hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
 
return TRUE;
 
} // DlgGenerator::onButLoad
Добавлено через 3 минуты
И на
C++
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
Bool DlgGenerator::onButLoad (void)
{
 
OPENFILENAME ofn; // Common dialog box structure.
char szFile[260]; // Buffer for selected file name.
HWND hwnd; // Owner window.
HANDLE hf; // File handle.
 
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Playlists: m3u.\0*.m3u\0Music Files :mp1, mp2, mp3, wav, ogg.\0*.mp1;*.mp2;*.mp3;*.wav;*.ogg\0";
ofn.nFilterIndex = 2;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&ofn);
 
 
return TRUE;
 
} // DlgGenerator::onButLoad
Что я делаю не так?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 18:08 14
Цитата Сообщение от PAKOT Посмотреть сообщение
Ничего не происходит по нажатию
поясни.
диалог не открывается?
попробуй сделать отладку на начало функции DlgGenerator::onButLoad
скорее всего, управление туда не попадает.
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 18:18  [ТС] 15
Да, окно не появляется.
Сама функция запускается, то есть если я пишу что-то типа
Bool DlgGenerator::onButLoad (void)
{

String perr = workset.getText(FLD_CONTRACT_MEMOGEN);
workset.setText(FLD_CONTRACT_MEMOGEN, perr+" {{OPNAME}} ");
setFields();
return TRUE;

} // DlgGenerator::onButLoad

То работает, то есть функция запускается
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
12.12.2010, 18:35 16
ок. смотрим, что там написано в подробностях...

посмотри на этот фрагмент.
C++
1
2
3
4
5
6
HWND hwnd; // Owner window.
HANDLE hf; // File handle.
 
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ты отправляешь в функцию НЕИНИЦИАЛИЗИРОВАННОЕ значение хэндла окна.
т.е., в каком окне должен возникнуть диалог - фиг его знает.
лучше уж обнули его.

кстати, буфер szFile тоже не инициализирован.
ты хоть первый байт буфера обнули, а то получишь непредсказуемые последствия.

в фильтре данные разделяются вертикальными палочками(символ "|"), а не нулями(символ "/0")
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
12.12.2010, 22:57  [ТС] 17
C++
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
Bool DlgGenerator::onButLoad (void)
{
 
OPENFILENAME ofn; // Common dialog box structure.
char szFile[260]; // Buffer for selected file name.
HWND hwnd; // Owner window.
HANDLE hf; // File handle.
hwnd = 0;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Текстовые файлы (*.txt)\0*.txt\0";
ofn.nFilterIndex = 2;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&ofn);
 
 
return TRUE;
 
} // DlgGenerator::onButLoad
Так заработало, а не подскажете как какой-то переменной присвоить значение из данного файла? Из текстового то есть. Буду очень благодарен)
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
13.12.2010, 07:38 18
C++
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
       HANDLE hFile = CreateFile(szFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 
        if(hFile == INVALID_HANDLE_VALUE)
        {
                MESSAGEBOX(0,_TEXT("File can not open!"),0, MB_OK);
                return(false);
        }
        
        DWORD nFileSize;
 
        nFileSize = GetFileSize(hFile, 0);
        
        char * lpBuff = new char[nFileSize];
 
        DWORD nBytesRead;
        bool bFlag = ReadFile(hFile, lpBuff, nFileSize, &nBytesRead, NULL);
 
        if(!bFlag)
        {
                MESSAGEBOX(0,_TEXT("File read error!"),0, MB_OK);
                return(false);
        }
 
        CloseHandle(hFile);
//делаешь что нужно с данными в буфере lpBuff
...
 
//удаляешь буфер
       delete lpBuff;
0
1 / 1 / 1
Регистрация: 21.10.2009
Сообщений: 44
13.12.2010, 23:45  [ТС] 19
Огромное количество ошибок при компиляции в вашем варианте... Неужели нет просто способа создать поток считывания данных из файла? Мне нужно всё что есть в текстовом файле внести в одну переменную типа String
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
14.12.2010, 00:47 20
Цитата Сообщение от PAKOT Посмотреть сообщение
Огромное количество ошибок при компиляции в вашем варианте... Неужели нет просто способа создать поток считывания данных из файла? Мне нужно всё что есть в текстовом файле внести в одну переменную типа String
1)и какие там могут быть ошибки? примитивный код.
2)"поток"? ты что, в консоли пишешь??
0
14.12.2010, 00:47
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2010, 00:47
Помогаю со студенческими работами здесь

Открытие/Закрытие/Обработка файла
собственно открыть файл я нашел как. С закрытием есть пока проблемы, а именно Used without being...

Открытие бинарного файла MFC
Добрый вечер, друзья. Рискну создать тему, вопрос уже поднимался, но предложенные методы решения...

Открытие файла по заданному пути, где запущена программа
1)Программа должна понять, в какой директории она запущена(над этим долго голову ломал так не нашел...

Открытие файла .jpg в бинарном режиме
Всем привет. Подскажите, как открыть файл .jpg .jpeg двоичном коде? То есть написал полный путь...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru