Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
#1

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

18.10.2011, 11:04. Просмотров 1195. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 11:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему? (C++ Builder):

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

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

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

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

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

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

17
LK
Заблокирован
18.10.2011, 12:46 #2
потому, что путь здесь - юникодная строка, вместо UnicodeString напишите Ansi, хотя по этому огрызку кода сложно понять, где у вас там и что
1
nick42
Практикантроп
4119 / 2152 / 205
Регистрация: 23.09.2011
Сообщений: 4,600
18.10.2011, 13:10 #3
_ я думаю функция ExtractFileName() по разному организована в Билдере 6 и ХЕ (по части юникода). А может определять результат нужно не c_str, а как-то w_str ... .
1
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 13:10  [ТС] #4
Там и так Ansi

C++
1
2
if(strcmp(Procinfo.szExeFile,ExtractFileName(path).c_str())==0) i++;
} while (Process32Next(HS, &Procinfo));
w_str не помогло.
0
LK
Заблокирован
18.10.2011, 13:33 #5
покажите все, что относится к path - я уже два раза вам намека на "огрызки кода"
nick42, здесь проблема наоборот - оно уже имеет wchar_t:
Cannot convert 'wchar_t *' to 'const char *'
, т.е. не может из wchar_t сделать char
Samrisbe, вы про
C++
1
вместо UnicodeString напишите AnsiString
читали , или курить ходили ?
1
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 13:41  [ТС] #6
Вот весь код и я тут не нахожу 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
LK
Заблокирован
18.10.2011, 13:45 #7
расскажите своими словами, что вы здесь пытаетесь сделать:
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
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 13:55  [ТС] #8
Не знаю...
Знаю только результат.
Так как быть?
0
__bool
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 13:58 #9
Дайте ему AnsiString Да и все:

C++
1
if(strcmp(AnsiString(Procinfo.szExeFile).c_str(),AnsiString(ExtractFileName(path)).c_str())==0) i++;
2
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 22:13  [ТС] #10
Спасибо! Компилит.

Добавлено через 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
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 22:19 #11
Не int а фунция '__stdcall WinMain(void *,void *,char *,int) уже объявлена
(что вполне очевидно, так как эта функция запускается первой при запуске приложения(стандарт Windows))
Project | View Source
Она там..
Там и изменяйте ее
1
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 22:36  [ТС] #12
Здесь все похоже на другие приложения, чесно признаюсь врятли я сам пойму что здесь надо подправить.
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
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
18.10.2011, 22:39 #13
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
LK
Заблокирован
18.10.2011, 22:40 #14
копируешь туда отсутствующие строки их примера уважаемого LK в порядке очередности, в
C++
1
HWND hWnd = FindWindow( 0, "Project1");
пишешь название своей супер-пупер... то, что в строке заголовка, где кнопочки системные.
1
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
18.10.2011, 23:05  [ТС] #15
Убрал из проект оптионс 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)'
Может я чего не вижу вот фото на всякий случай.
0
Миниатюры
В buildere 6 ошибку не выдавало, а в Rad не компилит, подскажите почему?  
18.10.2011, 23:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 23:05
Привет! Вот еще темы с ответами:

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

Подскажите, пожалуйста, почему выбивает ошибку - Ruby
def prices (@real_prices - @real_prices*self.class.discount) + tax end выбивает ошибку undefined method `*' for nil:NilClass...

Пытаясь запустить программу .exe на другом (не на том, где писалась) компьютере, выдавало ошибку - Visual Basic
всем доброго времени суток. случайно столкнулся с одной проблемой. пытаясь запустить программу .exe на другом компьютере, выдавало ошибку,...

PyQt5 Подскажите, почему выдаёт ошибку при создании условия для содержимого QLineEdit? - Python
Помогите, пожалуйста, разобраться с PyQt5. Создаю условие if для текстового содержимого QLineEdit и если условие истинное - выдаёт...


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

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

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