Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему?

18.10.2011, 11:04. Показов 1952. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форумчане!
В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему?

Подсвеченноя строка в обоих ошибках:
C++
1
if(strcmp(Procinfo.szExeFile,ExtractFileName(path).c_str())==0) i++;
Ошибка:
C++
1
2
[BCC32 Error] Unit1.cpp(50): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] Unit1.cpp(50): E2342 Type mismatch in parameter '__s2' (wanted 'const char *', got 'wchar_t *')
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2011, 11:04
Ответы с готовыми решениями:

Почему не компилит
#include <stdio.h> #include <stdlib.h> struct phone { int kod; int tel_stanc; int tel_abon; };

Dev-C++ нашёл ошибку и не компилит(
Здравствуйте. Я пишу всем известную игру Х/О. И я застрял в начале пути из-за того что не могу оприделить ошибку которую мне выдяёт...

Почему не компилит в чём ошибка
data:=Tstringlist.create; data.Add('email='+login); data.Add('password='+pass); data.Add('submit=Войти'); ...

17
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.10.2011, 12:46
потому, что путь здесь - юникодная строка, вместо UnicodeString напишите Ansi, хотя по этому огрызку кода сложно понять, где у вас там и что
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.10.2011, 13:10
_ я думаю функция ExtractFileName() по разному организована в Билдере 6 и ХЕ (по части юникода). А может определять результат нужно не c_str, а как-то w_str ... .
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 13:10  [ТС]
Там и так Ansi

C++
1
2
if(strcmp(Procinfo.szExeFile,ExtractFileName(path).c_str())==0) i++;
} while (Process32Next(HS, &Procinfo));
w_str не помогло.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.10.2011, 13:33
покажите все, что относится к path - я уже два раза вам намека на "огрызки кода"
nick42, здесь проблема наоборот - оно уже имеет wchar_t:
Cannot convert 'wchar_t *' to 'const char *'
, т.е. не может из wchar_t сделать char
Samrisbe, вы про
C++
1
вместо UnicodeString напишите AnsiString
читали , или курить ходили ?
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 13:41  [ТС]
Вот весь код и я тут не нахожу UnicodeString:
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
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 AnsiString PrepPath(AnsiString path);
 HANDLE hMutex;
 char z[500];
 AnsiString path;
 void RunProject1();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 AnsiString PrepPath(AnsiString path)
{
AnsiString temp="";
int tmp=0;
for(int i=0;i<path.Length();i++)
{
if((int)path.c_str()[i]==92) temp+=(char)92;
temp+=path.c_str()[i];
}
return temp;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int i=0;
HANDLE HS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 Procinfo;
Procinfo.dwSize = sizeof (PROCESSENTRY32);
if (Process32First(HS, &Procinfo))
do{
if(strcmp(Procinfo.szExeFile,ExtractFileName(path).c_str())==0) i++;
} while (Process32Next(HS, &Procinfo));
CloseHandle(HS);
}
//---------------------------------------------------------------------------
Ошибки:
C++
1
2
[BCC32 Error] Unit1.cpp(50): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] Unit1.cpp(50): E2342 Type mismatch in parameter '__s2' (wanted 'const char *', got 'wchar_t *')
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.10.2011, 13:45
расскажите своими словами, что вы здесь пытаетесь сделать:
AnsiString PrepPath(AnsiString path);
HANDLE hMutex;
char z[500];
AnsiString path;
C++
1
2
3
4
5
 UnicodeString path;
 UnicodeString PrepPath(path);
 HANDLE hMutex;
 wchar_t z[500];
 void RunProject1();
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 13:55  [ТС]
Не знаю...
Знаю только результат.
Так как быть?
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 13:58
Дайте ему AnsiString Да и все:

C++
1
if(strcmp(AnsiString(Procinfo.szExeFile).c_str(),AnsiString(ExtractFileName(path)).c_str())==0) i++;
2
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 22:13  [ТС]
Спасибо! Компилит.

Добавлено через 7 часов 58 минут
Перекидываю функции из програм которые в Builder 6 компилировались, и Rad выдал ошибку.

Вот код, уважаемого LK который забостовал:
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
USEFORM("Unit.cpp", FormMain);
const char *NamedMutex= "MySuperPuper{4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B}";
 
HANDLE CheckInstance(const char *Name)
{
        HANDLE Mutex = CreateMutex(NULL, true,Name);
        int er = GetLastError();
        if (er) return 0;
        return Mutex;
}
 
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) // строка с подсветкой ошибки
{
        HANDLE Mutex = CheckInstance(NamedMutex);
        if (!Mutex) {
        ReleaseMutex(Mutex);
        HWND hWnd = FindWindow( 0, "Project1");
        SetForegroundWindow(hWnd);
        return 1;}
    try
        {
        Application->Initialize();
        Application->Title = "Project1";
        Application->CreateForm(__classid(TFormMain), &FormMain);
        Application->Run();
        }
     catch (Exception &exception)
        {
        Application->ShowException(&exception);
        }
        catch (...)
         {
         try
         {
         throw Exception("");
         }
         catch (Exception &exception)
         {
         Application->ShowException(&exception);
         }
         }
         return 0;
}
//---------------------------------------------------------------------------
Ошибка:
C++
1
[BCC32 Error] Unit1.cpp(36): E2171 Body has already been defined for function '__stdcall WinMain(void *,void *,char *,int)'
Я понял так что int уже используется.
Что с этим делать не знаю, посоветуйте выход из положения.

Я понимаю что поднадоел, но увы и ах...
Я сегодня даже одну проблему сам решил...
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 22:19
Не int а фунция '__stdcall WinMain(void *,void *,char *,int) уже объявлена
(что вполне очевидно, так как эта функция запускается первой при запуске приложения(стандарт Windows))
Project | View Source
Она там..
Там и изменяйте ее
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 22:36  [ТС]
Здесь все похоже на другие приложения, чесно признаюсь врятли я сам пойму что здесь надо подправить.
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
#include <vcl.h>
#include <registry.hpp>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
USEFORM("Unit3.cpp", Form3);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 
 
        try
        {
                 Application->Initialize();
                 Application->Title = "Samrisbe";
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->CreateForm(__classid(TForm2), &Form2);
        Application->CreateForm(__classid(TForm3), &Form3);
        Application->Run();
 
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------
И почему именно в этом приложении ей не нравится это?
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 22:39
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
#include <vcl.h>
#include <registry.hpp>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
USEFORM("Unit3.cpp", Form3);
//---------------------------------------------------------------------------
const char *NamedMutex= "MySuperPuper{4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B}";
 
HANDLE CheckInstance(const char *Name)
{
                HANDLE Mutex = CreateMutex(NULL, true,Name);
                int er = GetLastError();
                if (er) return 0;
                return Mutex;
}
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
      HANDLE Mutex = CheckInstance(NamedMutex);
                if (!Mutex) {
                  ReleaseMutex(Mutex);
                  HWND hWnd = FindWindow( 0, "Project1");
                  SetForegroundWindow(hWnd);
                  return 1;
                }
 
        try
        {
                 Application->Initialize();
                 Application->Title = "Samrisbe";
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->CreateForm(__classid(TForm2), &Form2);
        Application->CreateForm(__classid(TForm3), &Form3);
        Application->Run();
 
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
//---------------------------------------------------------------------------
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.10.2011, 22:40
копируешь туда отсутствующие строки их примера уважаемого LK в порядке очередности, в
C++
1
HWND hWnd = FindWindow( 0, "Project1");
пишешь название своей супер-пупер... то, что в строке заголовка, где кнопочки системные.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 23:05  [ТС]
Убрал из проект оптионс samrisbe, дабы не мешал.
Вот код LK практический в оригинале:
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
USEFORM("Unit1.cpp", FormMain);
TForm1 *Form1;
 
const char *NamedMutex= "MySuperPuper{4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B}";
 
HANDLE CheckInstance(const char *Name)
{
    HANDLE Mutex = CreateMutex(NULL, true,Name);
    int er = GetLastError();
    if (er) return 0;
    return Mutex;
}
 
        WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        HANDLE Mutex = CheckInstance(NamedMutex);
        if (!Mutex) {
        ReleaseMutex(Mutex);
        HWND hWnd = FindWindow( 0, "Project1.exe");
        SetForegroundWindow(hWnd);
        return 1;
        }
        try
        {
        Application->Initialize();
        Application->Title = "Project1.exe";
        Application->CreateForm(__classid(TFormMain), &FormMain);
        Application->Run();
        }
        catch (Exception &exception)
        {
        Application->ShowException(&exception);
        }
        catch (...)
        {
        try
        {
        throw Exception("Project1.exe");
        }
        catch (Exception &exception)
        {
        Application->ShowException(&exception);
        }
    }
         return 0;
}
//---------------------------------------------------------------------------
Всеравно ошибка
C++
1
[BCC32 Error] Unit1.cpp(37): E2171 Body has already been defined for function '__stdcall WinMain(void *,void *,char *,int)'
Может я чего не вижу вот фото на всякий случай.
Миниатюры
В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему?  
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.10.2011, 23:16
вставлять надо не в юнит формы, а в юнит проекта: НазваниеТвоегоПроекта.срр , стандартно это Project1.cpp, и не вставлять строки, которые там уже есть
Миниатюры
В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему?  
1
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 23:37
Samrisbe внимательней!
Цитата Сообщение от __bool Посмотреть сообщение
Project | View Source
- раздел меню
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.10.2011, 23:47  [ТС]
Я все понял, не намного быстрей жирафа но, не будем вспоминать благородное животное...

Немного истории, первый раз когда я скомуниздил старый код LK, я сунул его в cpp. файл и он работал программа не запускалась повторно, теперь недавно я скомпилил прогу в Rad и там сунул тудаже и опяить все заработало нормально, теперь сегодня ваш покорный слуга третий раз пишет эту же функцию в cpp. файл компелятор меня остановил типа хватит немогу такое есть

по теме Lk, BOOL спасибо и мои извинения за тупняк!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2011, 23:47
Помогаю со студенческими работами здесь

Купил новый винт выдавало ошибку смарт
Купил новый винт выдавало ошибку смарт как она называется,поставил Windows , ошибки нет, это нормально?

Как написать данный код, что бы не выдавало ошибку?
System.out.println(&quot;a index is &quot; + (SCa = new Scanner(System.in).nextInt()));

Подскажите почему выдает ошибку?
#include &lt;iostream&gt; using namespace std; int main(){ int a,b,c,x1,x2,dx; cout&lt;&lt; &quot;Inter a=&quot;; cin &gt;&gt; a; cout&lt;&lt; &quot;Inter b=&quot;;...

подскажите, почему программа выдает ошибку?
задание примерное такое: на заданном интервале посчитать значение ряда Тейлора с заданным шагом и точностью. Исправьте, если сможете....

Подскажите, почему редактор показывает ошибку
редактор показывает ошибку на операторе Left. Подскажите в чем дело, уже второй день не могу найти решения Private Sub...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru