Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 05.11.2010
Сообщений: 43

Классы в C++ Builder

26.11.2014, 19:19. Показов 931. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс для массива. Файл класса Unit2.h
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
const int Nmax=100;
class mas{
private:
int FN;
int FA[Nmax];
public:
 
void FNN(int r){FN=r;};
 
void chit()
{
int i,j;
FN=0;
for(i=0;i<Form1->StringGrid1->ColCount;i++)
for(j=0;j<Form1->StringGrid1->RowCount;j++)
{
if(Form1->StringGrid1->Cells[i][j]!="")
{
FN++;
FA[j-1]=StrToInt(Form1->StringGrid1->Cells[i][j]);
}}
};
 
void minzn()
{
int min=FA[0];
for(int k=1;k<FN;k++)
if (FA[k]<min)
min=FA[k];
Form1->Label1->Caption="Мінімальне значення: "+IntToStr(min);
};
 
void zapoln()
{
for(int i=0;i<Nmax;i++)
{
FA[i]=0;
}
};
 
void file(String f)
{
TStringList * Lst = new TStringList;
Lst->LoadFromFile(f);
FN=StrToInt(Lst->Strings[0])+1;
int Index=0;
for(int i=0;i<Form1->StringGrid1->ColCount;i++)
for(int j=1;j<Form1->StringGrid1->RowCount;j++)
{
Index++;
if(Index<FN)
Form1->StringGrid1->Cells[i][j]=Lst->Strings[Index];
}
};
 
mas()
{
zapoln();
};
 
mas(String i)
{
FNN(0);
file(i);
};
 
~mas(){};
};
Главный файл Unit1.cpp
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
mas M;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
M.chit();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
M.minzn();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//M.file("C:\\masiv.txt");
mas M("masiv.txt");
}
Надо описать этот класс без использования "Form1->StringGrid1->", то есть без указания на готовые элементы builder, что бы его можно было использовать в независимости от названия элементов (например если бы было бы StringGrid2, а не StringGrid1, то выдавало бы ошибку). Не могу понять как это сделать. Прошу помощи!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2014, 19:19
Ответы с готовыми решениями:

Классы в С++ Builder
Програмка, в общем, из лабораторной работы. Уже сил нет разбираться в том, почему оно не желает отображать результаты. Помогите,...

Классы в Builder
Подскажите пж в чем может быть ошибка! Код написала как в практической было)) Ощибку вот здесь выдает class Plus: public Telement{ ...

классы в С++ builder
помогите пожалуйста решить вот такую задачку. Построить систему классов для описания плоских геометрических фигур: круг, квадрат,...

4
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
27.11.2014, 00:01
Сделай у класса св-во StringGrid. При создании объекта класса в StringGrid записываешь Form1->StringGrid1 или Form1->StringGrid2 и т.д. И класс работает только со своим св-вом StringGrid
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 05:33
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void chit(TStringGrid *MyStringGrid)
{
 
int i,j;
FN=0;
for(i=0;i<MyStringGrid->ColCount;i++)
for(j=0;j<MyStringGrid->RowCount;j++)
{
if(MyStringGrid->Cells[i][j]!="")
{
FN++;
FA[j-1]=StrToInt(MyStringGrid->Cells[i][j]);
}}
}
C++
1
2
chit(Form1->StringGrid2);
chit(Form7->StringGrid6);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33393 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
27.11.2014, 11:07
Угу, а в file() - продолжать использовать Form1->StringGrid1, да?

Нет уж:
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
const int Nmax = 100;
 
class mas
{
private:
    TStringGrid *FGrid;
    int FN;
    int FA[Nmax];
 
public:
 
    void FNN(int r)
    {
        FN = r;
    };
 
    void chit()
    {
        int i, j;
        FN = 0;
        for (i = 0; i < FGrid->ColCount; i++)
            for (j = 0; j < FGrid->RowCount; j++)
            {
                if (FGrid->Cells[i][j] != "")
                {
                    FN++;
                    FA[j - 1] = StrToInt(FGrid->Cells[i][j]);
                }
            }
    };
 
    void minzn(TLabel *label)
    {
        int min = FA[0];
        for (int k = 1; k < FN; k++)
            if (FA[k] < min)
                min = FA[k];
        label->Caption = "Мінімальне значення: " + IntToStr(min);
    };
 
    void zapoln()
    {
        for (int i = 0; i < Nmax; i++)
        {
            FA[i] = 0;
        }
    };
 
    void file(String f)
    {
        TStringList * Lst = new TStringList;
        Lst->LoadFromFile(f);
        FN = StrToInt(Lst->Strings[0]) + 1;
        int Index = 0;
        for (int i = 0; i < FGrid->ColCount; i++)
            for (int j = 1; j < FGrid->RowCount; j++)
            {
                Index++;
                if (Index < FN)
                    FGrid->Cells[i][j] = Lst->Strings[Index];
            }
    };
 
    mas(TStringGrid *grid) : FGrid(grid)
    {
        zapoln();
    };
 
    mas(String i, TStringGrid *grid) : FGrid(grid)
    {
        FNN(0);
        file(i);
    };
 
    ~mas()
    {
    };
};
, и передавать в конструктор нужный грид, и в minzn() - куда выводить результат:
C++
1
2
3
    mas M(StringGrid2);
    M.chit();
    M.minzn(Label1);
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.11.2014, 11:28
linkoln09, а откуда ты знаешь, что StringGrid не превысит ту самую сотню? Она задана на этапе разработки и в процессе исполнения размер не меняется? Тогда зачем обращаешься к RowCount? А иначе надо юзать динамический массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2014, 11:28
Помогаю со студенческими работами здесь

Custom классы в Builder'е
Люди умные, подскажите пожалуйста чем в Builder'e отличаются классы VCL T*** от TCustom***; например TForm И TCustomForm; и зачем одни...

Классы MSVS в С++ Builder
Здравствуйте, есть проблема. Написал класс(частично стырил) для работы с памятью процесса под MSVS13, и хочу этот класс запихнуть в...

Непонятна тема (Классы содержащие другие классы, как данные члены )
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void...

Работа с файловой системой: классы Directory и Filе и классы DirectoryInfo и FileInfo
Уважаемые форумчане помогите пожалуйста с практической работой. Программным путем: В папке С:\temp создайте папки К1 и К2. В...

Определить классы абстрактного выражения и классы для различных типов выражений
помогите Реализовать объектно-ориентированную модель, определяет математическое выражение, представлен в виде дерева. Определить классы...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru