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

вызов неизвестной функции

22.02.2018, 12:06. Показов 813. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток.
столкнулся с проблемой (наверное даже глупой) но решить не могу.
делаю по методичке, такие требования. суть вопроса:
есть структура members и ее экземпляр member.
функция void Out(TZap, TMemo*); - должна выводить из текстового файла экземпляр структуры.
однако - ошибка:
[C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'member'
[C++ Error] Unit1.cpp(47): E2268 Call to undefined function 'Out'

код:


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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <io.h>
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct members
{
    char *country;
    char *team;
    char *fio;
    int number;
    int age;
    int weight;
} member;
int size = sizeof(members);
AnsiString nfile;   //file_zap = nfile
FILE *nf; //fz=st
void Out(member, *TMemo);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
OpenDialog1->Title="открыть файл";
if (OpenDialog1->Execute())
{
        nfile = OpenDialog1->FileName;
        if ((nf=fopen(nfile.c_str(),"rb"))==NULL)
        {
                ShowMessage("ошибка открытия файла!");
                return;
        }
Memo1->Lines->Add("--------- все данные из файла: ---------");
while(1)
{
    if(!fread(&member,size,1,nf)) break;
        Out(member, Memo1);
}
fclose(nf);
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.02.2018, 12:06
Ответы с готовыми решениями:

Как перейти к заранее неизвестной функции?
myobject.myfunction(); только - весь нюанс в том, что myfunction - ее имя станет известно только во время выполнения(но в коде сама...

Передача в функцию функции с неизвестной переменной
Можно ли на php реализовать передачу функции $y с переменными, которые объявляются внутри функции?) Что-то типа такого: $t =...

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

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
22.02.2018, 13:51
Во-первых, прототип функции Out написано неправильно, нужно не *TMemo, а TMemo*, и не member, а members. А во-вторых, где реализация этой функции?
0
0 / 0 / 0
Регистрация: 22.02.2018
Сообщений: 3
22.02.2018, 14:15  [ТС]
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <io.h>
#include <stdio.h>
struct members
{
    char *country;
    char *team;
    char *fio;
    int number;
    int age;
    int weight;
} member;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int size = sizeof(member);
AnsiString nfile;
FILE *nf;
void Out(members member)
{
        Form1->Memo1->Lines->Add(member);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
OpenDialog1->Title="открыть файл";
if (OpenDialog1->Execute())
{
        nfile = OpenDialog1->FileName;
        if ((nf=fopen(nfile.c_str(),"rb"))==NULL)
        {
                ShowMessage("не удается открыть файл!");
                return;
        }
Memo1->Lines->Add("--------- все данные ---------");
while(1)
{
    if(!fread(&member,size,1,nf)) break;
        Out(member);
}
fclose(nf);
}
}
//---------------------------------------------------------------------------
только что работало, но подправил какую то деталь, и ругается
[C++ Error] Unit1.cpp(27): E2034 Cannot convert 'members' to 'AnsiString'
[C++ Error] Unit1.cpp(27): E2342 Type mismatch in parameter 'S' (wanted 'const AnsiString', got 'members')
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
22.02.2018, 14:40
Цитата Сообщение от whonow0 Посмотреть сообщение
Form1->Memo1->Lines->Add(member);
Нельзя выводить весь member, нужно какое-то конкретное поле.
0
0 / 0 / 0
Регистрация: 22.02.2018
Сообщений: 3
22.02.2018, 14:55  [ТС]
я решил взять весь код из методички. работает. но ничего в мемо не выводит.
не понимаю почему.

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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <stdio.h>
#include <io.h>
struct TZap{
                char FIO[30];
                double s_b;
     } Zap;
int size = sizeof(TZap);
FILE *Fz;
AnsiString File_Zap;
void Out(TZap z, TMemo *Memo1)
{
     Form1->Memo1->Lines->Add(AnsiString(z.FIO)+ "  "+FloatToStrF(z.s_b, ffFixed,6,3));
}
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Title="открыть файл";
   if (OpenDialog1->Execute()) {
                File_Zap = OpenDialog1->FileName;
                if ((Fz=fopen(File_Zap.c_str(),"rb"))==NULL)  {
                        ShowMessage("не удалось октрыть файл!");
                        return;
                }
   }
   Memo1->Lines->Add("--------- все данные ---------");
   while(1){
    if(!fread(&Zap,size,1,Fz)) break;
            Out(Zap, Memo1);
   }
   fclose(Fz);
 
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2018, 14:55
Помогаю со студенческими работами здесь

Аппроксимация неизвестной бинарной вероятной функции
Имеется неизвестная функция четырёх переменных, которая в зависимости от значения этих переменных принимает положительное или отрицательное...

Вызов функции внутри другой функции с передачей локальной переменной по ссылке
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int...

Вызов функции из другой функции и обратно. Общие переменные функций
Всем привет. Заранее напишу, что я ещё только изучаю программирование В данной программе генирируются числа заполняющие одним...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель)
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Вызов функции визуал бейсика из функции явы скрипта
Как такое соорудить, есть например две наипростецкие функции: &lt;% function base() h11='123' base = h11 end function %&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru