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

Ошибка "no matching function for call to."

11.12.2020, 20:56. Показов 2107. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
При компилировании программы выдает ошибки
no matching function for call to 'strcmp'
no matching function for call to 'ExtractStrings'
Помогите исправить, пожалуйста

Код программы
BinaryTree.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
33
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------
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
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//Обработчик нажатия кнопки Загрузить
void __fastcall TForm1::LoadButtonClick(TObject *Sender)
{
  if (OpenDialog->Execute()) //Если ужалось выбрать файл
  {
    SourceMemo->Lines->LoadFromFile(OpenDialog->FileName); //Загрузить из него
                                                           //строки
  };
};
 
//Узел дерева
struct TMyTreeNode {
  int Data; //Данные - число
  TMyTreeNode* P; //Родитель
  TMyTreeNode* L; //Левый
  TMyTreeNode* R; //Правый
};
 
typedef TMyTreeNode* PMyTreeNode;
 
//---------------------------------------------------------------------------
//функция вставки узла со значением Value в дерево T родитель P
TMyTreeNode* InsertNode(const TMyTreeNode *T, TMyTreeNode *P, int Value)
{
  TMyTreeNode* N;
  if (T == NULL) //если дерева еще нет
  {
    N = (TMyTreeNode*)malloc(sizeof(TMyTreeNode)); //то выделить память для узла,
    if (N==NULL) //при неудаче выделения
      return NULL; //вернуть пустой указатель
    N->Data = Value; //Поместить в новый узел данные
    N->P = P; //присвоить родителя
    N->L = NULL; //левого узла нет
    N->R = NULL; //правого узла нет
    return N; //вернуть новый узел
  }
  else //иначе - узел существует
  {
    N = (TMyTreeNode*)T; //запоминаем его
    if (Value < N->Data) //если значение меньше данных узла
      N->L = InsertNode(T->L, N, Value); //то поместить в левый узел с текущим
                                         //родителем
    else //иначе - больше или равно
      if (Value > N->Data) //если больше
        N->R = InsertNode(T->R, N, Value); //то поместить в правый узел с
                                           //текущим родителем
  };
  return N; //вернуть указатель на узел
};
 
TMyTreeNode* Tree=NULL;
 
//Обработчик кнопки построить
void __fastcall TForm1::TreeButtonClick(TObject *Sender)
{
  //для каждой строки (из файла - уже в мемо)
  for (int i = 0; i < SourceMemo->Lines->Count; i++)
    //вставить ее значение в дерево
    Tree = InsertNode(Tree, NULL, StrToInt(SourceMemo->Lines->Strings[i]));
}
 
//---------------------------------------------------------------------------
//помещает в буфер s число пробелов d
void SpaceStr(char *s, int d)
{
  char* p = s; //Запоминаем начало буфера
 
  int i;
  for (i = 1; i < d + 1; i++, p++) //заданное количество раз
    *p = ' '; //записываем пробел с увеличением позиции
  *p = 0; //дописываем конец строки
  return;
}
 
//обработчик нажатия обход в ширину
void __fastcall TForm1::WidthButtonClick(TObject *Sender)
{
  PMyTreeNode ShirinaSt[16], ShirinaFi[16]; //Массив узлов (для обработки и
                                            //следующий)
  TTreeNode* P; //Узел
  int FilledSt = 0; //Число узлов в массиве входном
  int FilledFi = 1; //Число узлов в массиве выходном (корень помещаем сразу)
  char S1[128],S2[128]; //буфера для строк
 
  ShirinaFi[0] = Tree; //поместим корневой узел в выходной массив
  while (FilledFi > 0) //пока в выходном массиве есть узлы
  {
    //копируем их во входной массив
    for (int i = 0; i < FilledFi; i++)
      ShirinaSt[i] = ShirinaFi[i];
 
    FilledSt = FilledFi; //копируем их количество
    FilledFi = 0; //очищаем выходной массив
    S1[0] = 0; //в строке пусто
    for (int i = 0; i < FilledSt; i++) //для каждого узла входного массива
    {
      if (ShirinaSt[i]->P == NULL) //если узел корневой
        {
          //помещаем узел в компонент
          P = TreeView->Items->AddChild(NULL,itoa(ShirinaSt[i]->Data,S2,10));
 
          //без картинок
          P->ImageIndex = -1;
          P->SelectedIndex = -1;
        }
      else //иначе - не корневой
      {
        //ищем в компоненте узел, совпадающий с родительским
        for (int j = 0; j < TreeView->Items->Count; j++)
          //т.е. данные родительского в виде строки соответствуют данным узла
          //компонента
          if (strcmp(itoa(ShirinaSt[i]->P->Data,S2,10),
            TreeView->Items->Item[j]->Text.c_str()) == 0)
            {
              //помещаем в компонент узел, по умолчанию с картинкой R
              P = TreeView->Items->AddChild(TreeView->Items->Item[j],
                itoa(ShirinaSt[i]->Data,S2,10));
              //если узел на самом деле левый
              if (ShirinaSt[i] == ShirinaSt[i]->P->L)
                P->ImageIndex = 1; //меняем ему картинку
            }
      }
      if (ShirinaSt[i]->L != NULL) //если есть левый узел
      {
        ShirinaFi[FilledFi++] = ShirinaSt[i]->L; //то помещаем его в вых.массив
      }
      if (ShirinaSt[i]->R != NULL) //если есть правый узел
        ShirinaFi[FilledFi++] = ShirinaSt[i]->R; //то помещаем его в вых.массив
    };
  };
}
//---------------------------------------------------------------------------
//функция по адресу типа "LRL" возвращает число из соответствующего узла,
//0 - корень
int GetNodeValue(AnsiString address)
{
  TMyTreeNode* P;
  P = Tree; //запомнить корень дерева
  if (*(address.c_str()) == '0') //если адрес 0
    return Tree->Data; //вернуть данные корневого узла
  for (int i = 0; i < address.Length(); i++) //для каждого символа в строке
  {
    if (*(address.c_str()+i) == 'L') //если L
      P = P->L; //запомнить левую ветвь
    if (*(address.c_str()+i) == 'R') //если R
      P = P->R; //запомнить правую ветвь
  };
  //когда добрались до нужного узла, вернуть его данные
  return P->Data;
}
 
//Функция, возвращающая сумму (вида LRL+R)
int SumInTree(AnsiString address)
{
  TSysCharSet Tws, Delim;
  TStringList *SL = new TStringList;
  int Sum;
 
  Delim << '+'; //разделитель лексем - плюс
  SL->Clear(); //очистить список лексем
  ExtractStrings(Delim, Tws, address.c_str(), SL); //разобрать строку на лексемы
  Sum = GetNodeValue(SL->Strings[0]); //в итог поместить значение первой лексемы
  for (int i = 1; i < SL->Count; i++) //для всех последующих лексем
    Sum += GetNodeValue(SL->Strings[i]); //увеличить сумму на значение узла
  return Sum; //Вернуть почитанное
}
 
//Обработчик кнопки Сложить
void __fastcall TForm1::SumButtonClick(TObject *Sender)
{
  int Sum = 0;
  AnsiString S;
  char S1[128];
 
  S = UpperCase(FormulaLabeledEdit->Text); //преобразовать в верхний регистр
  FormulaLabeledEdit->Text = itoa(SumInTree(S), S1, 10); //посчитать и поместить
                                                         //сумму
//---------------------------------------------------------------------------
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2020, 20:56
Ответы с готовыми решениями:

Ошибка no matching function for call to 'fopen'
Полный текст ошибки: Unit3.cpp(115): no matching function for call to 'fopen' stdio.h(258): candidate function not viable: no known...

Ошибка no matching function for call to 'StrToFloat'
Всем привет. В общем столкнулся с такой ошибкой как: no matching function for call to 'StrToFloat' . Я хочу по нажатию на кнопку перевести...

Ошибка no matching function for call to 'MessageBoxW'
void __fastcall TForm1::MNewClick(TObject *Sender) { // открытие нового окна if(Memo1-&gt;Modified) // (1) { switch(MessageBox(NULL, ...

3
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
12.12.2020, 00:07
Информация к размышлению.
Я к вашему cpp-файлу допридумал заголовочный файл и dfm; кроме двух варнингов (на картинке) никаких замечаний не возникло <Borland CPP Builder ver5>. Проект собрался, запускается, кнопки работают.
??
Миниатюры
Ошибка "no matching function for call to."  
0
0 / 0 / 0
Регистрация: 19.12.2018
Сообщений: 13
13.12.2020, 16:51  [ТС]
nick42, можете, пожалуйста, скинуть проект?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
13.12.2020, 23:52
Конечно. Даже с исполняемым exe - файлом (на вирусы не проверял ).
Вложения
Тип файла: zip 58.ZIP (204.8 Кб, 8 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2020, 23:52
Помогаю со студенческими работами здесь

Ошибка: no matching function for call to 'CharToOemW'
Помогите найти исправить ошибку #pragma hdrstop #pragma argsused #include &lt;iostream&gt; #include &lt;tchar.h&gt; #include...

Ошибка: "no matching function for call to strcpy"
Ошибка на strcpy. Все перепробовал. В чем причина? //--------------------------------------------------------------------------- ...

no matching function for call to FindWindowW
Столкнулся с такой вот проблемой в 10м билдере. HWND h = FindWindow(NULL,&quot;Безымянный - Блокнот&quot;); if(h) { ...

Ошибка: no matching function for call
Добрый вечер! Только начинаю изучать с++, задали написать программу-пример, которая показывает что наследуемый класс имеет доступ с...

Ошибка: no matching function for call to
Здравствуйте. Вот такая ошибка: /usr/include/c++/4.8/bits/stl_algo.h:2235:62: required from ‘void...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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 с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru