Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 27.08.2009
Сообщений: 17
1

Как поместить функцию в отдельный файл?

27.08.2009, 21:30. Просмотров 2009. Ответов 6
Метки нет (Все метки)

Здраствуйте. Подскажите пожайлуста как в С++ Builder6 поместить функцию в отдельный файл (модуль)? [IDROITE][/IDROITE]

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
#include <vcl.h>
#pragma hdrstop
#include <tlhelp32.h>
#include "Unit1.h"
#include<string.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
AnsiString BzLntr = "linternt.exe";
AnsiString SrvrLntr="dbs_wnt.exe";
AnsiString ClntLntr="dbc_wnt.exe";
AnsiString RLSproc="RLSProcessor.exe";
AnsiString ProcMes="ProcessorMessage2";
AnsiString KPPI   ="StartZap.exe";
AnsiString Changer="Changer.exe";
 
 
int a=0;
 
AnsiString masstrok[7]={BzLntr,SrvrLntr,ClntLntr,RLSproc,ProcMes,KPPI,Changer};
 
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  int z=0;
 for( ;z< ProcCLB1->Items->Count;)
   { ProcCLB1->Checked[z]=true ;
   z++;
    }
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::B1ProcClick(TObject *Sender)
{
 
     Label2BzLr->Enabled=false;
     Label3SrLr->Enabled=false;
     Label4CtLr->Enabled=false;
     Label5RLS ->Enabled=false;
     Label6Mes ->Enabled=false;
     Label7KPPI->Enabled=false;
     Label8Chgr->Enabled=false;
 
// начиная отсюда
 
HANDLE PHandle;
PROCESSENTRY32 ProcEntry;
BOOL Result;
Result=false;
PHandle = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS,0);
ProcEntry.dwSize = sizeof(PROCESSENTRY32);
for(a=0;a<ProcCLB1->Items->Count; a++)
 {
  Result = false;
  if(ProcCLB1->Checked[a])
  {
  if (!Process32First(PHandle, &ProcEntry))
   {
   if (ExtractFileName(ProcEntry.szExeFile) == masstrok[a] ||
       ExtractFileName(ProcEntry.szExeFile) == masstrok[a])
        Result = true;
   }
 
 while(Process32Next(PHandle, &ProcEntry))
      if (ExtractFileName(ProcEntry.szExeFile) == masstrok[a] ||
          ExtractFileName(ProcEntry.szExeFile) == masstrok[a])
      {
       Result = true;
      }
if(Result) // если нашли прячимся.
{
 
switch(a)
 {case 0 : Label2BzLr->Enabled=true;
          break;
  case 1 : Label3SrLr->Enabled=true;
          break;
  case 2 : Label4CtLr->Enabled=true;
          break;
  case 3 : Label5RLS ->Enabled=true;
          break;
  case 4 : Label6Mes ->Enabled=true;
          break;
  case 5 : Label7KPPI->Enabled=true;
           //Label2->Visible=true;
          break;
  case 6 : Label8Chgr->Enabled=true;
 
          break;
 
 }
 }
}
}  // заканчиваем здесь
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
}
//---------------------------------------------------------------------------
В данном случаее все компилиться и работает. Участотк кода , проверяющий наличие процессов, надо вынести в другой файл. Я подключал к проекту новый файл, переносил в него нужный код. При компиляции выдает ошибки
типа неизвестная переменная а, неизвестный массив и пр.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2009, 21:30
Ответы с готовыми решениями:

Как вынести функцию с++ в отдельный файл
Как вынести функцию в отдельный файл как в PHP например: Например есть функция int...

Определить наибольшие четный и нечетный элементы файла и поместить их в отдельный файл
№1 дан файл целых чисел,сформировать массив четных и нечетных чисел,определить наибольшие четный и...

Как создать функцию Randomize с выводом данных в отдельный файл Word
Уважаемые знатоки! Я давно хочу освойть VBA Excel, но не могу усесть по семейным...

Как поместить контрол в отдельный поток?
Привет. С потоками толком не работал, только пробовал. В UserControl постоянно засылаются данные,...

6
Почетный модератор
7328 / 2594 / 268
Регистрация: 29.07.2006
Сообщений: 13,583
27.08.2009, 21:52 2
Правильно и выдает. так как, переменная a у тебя объявлена в этом модуле. А переносить нужно так же как ты сделал, но учитывая, что у С++ есть синтаксис.
0
0 / 0 / 0
Регистрация: 27.08.2009
Сообщений: 17
27.08.2009, 22:01  [ТС] 3
Ок. С переменными ,массивом разобрался через extern. Как быть с компонентами (ChekListBox, Label)?

Добавлено через 1 минуту
Они тоже идут как неизвестные.
0
Почетный модератор
7328 / 2594 / 268
Регистрация: 29.07.2006
Сообщений: 13,583
27.08.2009, 22:14 4
Передай указатель на объекты в свою новую функцию. Лэйбл, чеклистбокс, без разницы. Или, если тебе нужны конкретные данные, то их и передавай. Например, для фора количество айтемлв. Почитай про создание функций в С++, про их параметры и т д.
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
28.08.2009, 10:18 5
Цитата Сообщение от serega77 Посмотреть сообщение
С переменными ,массивом разобрался через extern.
Я бы посоветовал не увлекаться глобальными переменными, массивами ...
Все переменные, используемые функцией, либо заводяться локально, либо передаются как параметры (тут несколько вариантов передачи), либо объявлены как члены класса (тут тоже масса вариантов).
Этим достигается защита данных.
0
0 / 0 / 0
Регистрация: 27.08.2009
Сообщений: 17
28.08.2009, 10:29  [ТС] 6
Переменная непроблема, массив нужен для других функций. Что делать с компонентами?
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
28.08.2009, 10:51 7
Цитата Сообщение от serega77 Посмотреть сообщение
Переменная непроблема, массив нужен для других функций. Что делать с компонентами?
Компоненты, которые Вы положили на форму есть __published-члены класса TForm1.
А массив можно сделать private-членом класса TForm1. И тогда все функции класса TForm1 (и только они) будут иметь доступ к этому массиву.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2009, 10:51

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

Как поместить алгоритм вычисления выражения в отдельный поток
Добрый вечер. Только начинаю работать с потоками. Приведите пример какой - нибудь пожалуйста....

Выделить функцию в отдельный файл
Никак не получается создать проект в нескольких файлах по этой программе Текст сообщения и...

Вынести функцию в отдельный файл. Настроить связь
Есть небольшой код. using System; namespace Game_3._1 { class Program { ...

Поместить функцию в другой файл
Пишу игру. Есть функция например: void CharacterMoveStay(){ Тут очень много текста: тысячи...


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

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

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