Форум программистов, компьютерный форум CyberForum.ru

добавила аргументы, а все равно выдает ошибки - C++

Восстановить пароль Регистрация
 
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 00:02     добавила аргументы, а все равно выдает ошибки #1
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
char seps[] = ":";
    char seps0[] = " ";
    char *token;
    char load_string[1000] = "none";
    FILE *file;
 
void CMFCApplication6Dlg::OnBnClickedread()
{
       
        char* file_name = "C:\\my.txt";
        char* Arrow[50]; int k=0;
        file = fopen_s(file_name, "r" );
        if( file != 0 ) fgets( load_string, 1000 , file );
        else
        {
            MessageBoxA(NULL, "Не могу открыть файл БД",  MB_OK | MB_SYSTEMMODAL);
            return;
        }
        fclose(file);
        token = strtok(load_string, seps);
        while( token != NULL )
        {
            Arrow[k] = token; k++;
            token = strtok( NULL, seps);
        }
}
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
добавляла каждый аргумент, но не один не принимает ничего!
аргумент типа "long" несовместим с параметром типа "LPCSTR"
Я не понимаю почему ни один аргумент не принимается? И почему мало аргументов? (вроде 4 ноль, текст, ок и сис)

И file_name тоже подчеркивает хотя во всех примерах так написано.

Помогите пожалуйста!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 00:02     добавила аргументы, а все равно выдает ошибки
Посмотрите здесь:

C++ Компилятор выдает ошибки
Выдает ошибки. C++
C++ Программа выдает ошибки
с++ командная строка, Вывести все нечисловые аргументы, но выводит все аргументы чего-то, C++
C++ Компилятор выдает бредовые ошибки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
spamer
3 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 5
27.12.2013, 00:08     добавила аргументы, а все равно выдает ошибки #2
Там (http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx) ниже есть пример:
C++
1
2
3
4
5
6
MessageBox(
        NULL, // 1
        (LPCWSTR)L"Resource not available\nDo you want to try again?", // 2
        (LPCWSTR)L"Account Details", // 3
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
    );
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 00:22  [ТС]     добавила аргументы, а все равно выдает ошибки #3
spamer,
я так пробовала
Кликните здесь для просмотра всего текста
1>------ Построение начато: проект: MFCApplication6, Конфигурация: Debug Win32 ------
1> MFCApplication6Dlg.cpp
1>c:\users\guru\documents\visual studio 2012\projects\mfcapplication6\mfcapplication6\mfcapplication6dlg.cpp(169): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(218): см. объявление "fopen"
1>c:\users\guru\documents\visual studio 2012\projects\mfcapplication6\mfcapplication6\mfcapplication6dlg.cpp(178): error C2664: MessageBoxA: невозможно преобразовать параметр 2 из "LPCWSTR" в "LPCSTR"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


fopen заменяла на fopen_s выдает ошибку аргументов

Добавлено через 10 минут
spamer, Как сделать одинаковые типы данных??(из "LPCWSTR" в "LPCSTR")
spamer
3 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 5
27.12.2013, 00:23     добавила аргументы, а все равно выдает ошибки #4
Две функции есть - одна принимает ansi строку (MessageBoxA), другая unicode строку (MessageBoxW). Уберите приведение типа тогда вовсе, либо укажите LPCSTR.
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 00:40  [ТС]     добавила аргументы, а все равно выдает ошибки #5
spamer,
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
char seps[] = ":";
    char seps0[] = " ";
    char *token;
    char load_string[1000] = "none";
    FILE *file, *stream;
    char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
 
void CMFCApplication6Dlg::OnBnClickedread()
{
       
        char* file_name = "C:\\my.txt";
        char* Arrow[50]; int k=0;
        errno_t err;
 
   // Open for read (will fail if file "crt_fopen_s.c" does not exist)
   err  = fopen_s( &stream, "crt_fopen_s.c", "r" );
   if( err == 0 )
        if( file != 0 ) fgets( load_string, 1000 , file );
        else
        {
            MessageBoxA(
        NULL, // 1
        (LPCSTR)L"Resource not available\nDo you want to try again?", // 2
        (LPCSTR)L"Account Details", // 3
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
    );
            return;
        }
        fclose(file);
        token = strtok_s(load_string, seps, &next_token1);
        while( token != NULL )
        {
            Arrow[k] = token; k++;
            token = strtok_s( NULL, seps, &next_token1);
        }
}
получилось так, но теперь при нажатий на клавишу выдает ошибку
Кликните здесь для просмотра всего текста
добавила аргументы, а все равно выдает ошибки
это наверно потому что он не знает куда вывести инфу?
Как прописать что бы текст файла выходил в ListControl? я присвоила переменную m_ListControl а что прописать не знаю((
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 16:48  [ТС]     добавила аргументы, а все равно выдает ошибки #6
spamer, Эту ошибку я исправила)))
Кликните здесь для просмотра всего текста
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
char seps[] = ":";
    char seps0[] = " ";
    char *token;
    char load_string[1000] = "none";
    FILE *file, *stream;
    char *next_token1 = NULL;
 
void CMFCApplication6Dlg::OnBnClickedread()
{
       
        char* file_name = "C:\\my.txt";
        char* Arrow[50]; int k=0;
        errno_t err;
        
        
        // Open for read (will fail if file "crt_fopen_s.c" does not exist)
        err  = fopen_s( &stream, "C:\\my.txt", "r" );
        if( err == 0 )
            if( file != 0 ) fgets( load_string, 1000 , file );
            else
            {
                MessageBoxA(
                    NULL, // 1
                    (LPCSTR)L"База не наедена", // 2
                    (LPCSTR)L"Ошибка", // 3
                    MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
                    );
                return;
            }
            
            fclose(file);
            token = strtok_s(load_string, seps, &next_token1);
            while( token != NULL )
            {
                Arrow[k] = token; k++;
                token = strtok_s( NULL, seps, &next_token1);
            }
}


пробовала так, но тут нет связи с переменной(( не пониаю
Кликните здесь для просмотра всего текста
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
char seps[] = ":";
    char seps0[] = " ";
    char *token;
    char load_string[1000] = "none";
    FILE *file, *stream;
    char *next_token1 = NULL;
 
void CMFCApplication6Dlg::OnBnClickedread()
{
       
        char* file_name = "C:\\my.txt";
        char* Arrow[50]; int k=0;
        errno_t err;
        
        
        // Open for read (will fail if file "crt_fopen_s.c" does not exist)
        err  = fopen_s( &stream, "C:\\my.txt", "r" );
        if( err == 0 )
            if( fopen_s( &stream, "C:\\my.txt", "r" ) == 0 )
            {
                if( fgets( load_string, 100, stream ) == NULL)
                    printf( "fgets error\n" );
                else
                    printf( "%s", load_string);
                fclose( stream );
            }
            else
            {
                MessageBoxA(
                    NULL, // 1
                    (LPCSTR)L"База не наедена", // 2
                    (LPCSTR)L"Ошибка", // 3
                    MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
                    );
                return;
            }
            
            fclose(file);
            token = strtok_s(load_string, seps, &next_token1);
            while( token != NULL )
            {
                Arrow[k] = token; k++;
                token = strtok_s( NULL, seps, &next_token1);
            }
}


но теперь не получается вывести информацию в ListControl
Выше в этом же файле прописала
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
m_ListControl.InsertColumn(1, L"фио", LVCFMT_LEFT, 200);
    m_ListControl.InsertColumn(2, L"оценка", LVCFMT_LEFT, 200);
 
    CString nName;
    nName.Format(L"Студент %d", i+1);
    m_ListControl.InsertItem(0, nName, -1);


Но это всего лишь добавляет нужные столбцы и если там написать в цикле то будет прописывать допустим 10 студентов, но как вывести информацию из txt не пойму
переменная.команда=m_ListControl.InsertItem
а куда написать?

Добавлено через 27 минут
Помогите !!!!
пробовала добавить тут функцию как в уроке на youtube, но там используется класс из которого берется инфа, а что мне написать?

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void CMFCApplication6Dlg::FillList(void)
{
 
    m_ListControl.DeleteAllItems();
 
    "ЧТО ПИСАТЬ?" *st = .GetFirst();
 
    while (st !=NULL)
        int nItem = m_ListControl.InsertItem(m_ListControl.GetItemCount), st =>GetName(), -1;
 
    CString aMark;
    aMark.Format(L"%q", st=>GetMark());
 
    m_ListControl.SetItemText(nItem, 1, aMark);


Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
m_ListControl.InsertColumn(1, L"фио", LVCFMT_LEFT, 200);
    m_ListControl.InsertColumn(2, L"оценка", LVCFMT_LEFT, 200);
 
    for(int i=0; i<10; ++i)
    {
        CString nName;
        nName.Format(L"Студент %d", i+1);
        
        "ЧТО ПИСАТЬ?" st;
        st.SetName(nName);
        st.SetName(rand() % 100+1);
    }
    FillList();


теперь только ошибку выдает которую задала
добавила аргументы, а все равно выдает ошибки
правда странный текст)
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
27.12.2013, 17:48     добавила аргументы, а все равно выдает ошибки #7
Цитата Сообщение от Nassta Посмотреть сообщение
правда странный текст)
Параметры (второй и третий) функции MessageBoxA : LPCSTR. Попробуйте написать:

C++
1
2
3
4
5
6
MessageBoxA(
        NULL, // 1
        "Resource not available\nDo you want to try again?", // 2
        "Account Details", // 3
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
    );
Добавлено через 10 минут
Цитата Сообщение от Nassta Посмотреть сообщение
пробовала добавить тут функцию как в уроке на youtube, но там используется класс из которого берется инфа, а что мне написать?
C++
1
2
m_ListControl.InsertItem( 0, _T("hello") );// добавим строку 
m_ListControl.InsertItem( 1, _T("my list-control") );// добавим ещё одну строку
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 22:10  [ТС]     добавила аргументы, а все равно выдает ошибки #8
Alex5, Написала так
Цитата Сообщение от Alex5 Посмотреть сообщение
LPCSTR. Попробуйте написать:
Но все равно не помогло так же выдает((

А этот код добавила ниже
Цитата Сообщение от Alex5 Посмотреть сообщение
од C++
1
2
m_ListControl.InsertItem( 0, _T("hello") );// добавим строку
m_ListControl.InsertItem( 1, _T("my list-control") );// добавим ещё одну строку
Этого
C++
1
2
m_ListControl.InsertColumn(1, L"фио", LVCFMT_LEFT, 200);
    m_ListControl.InsertColumn(2, L"оценка", LVCFMT_LEFT, 200);
Выдает просто в списке эти строки, а мне нужно что бы выдавалась информация из txt/
Нужно что бы я нажимала на клавишу read и я указал файл txt и listcontrol заполнился.
или автоматический при нажатий на read добавлялась инфа автоматический из файла лежащего в определенном месте
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
27.12.2013, 22:58     добавила аргументы, а все равно выдает ошибки #9
Цитата Сообщение от Nassta Посмотреть сообщение
C++
1
2
3
err = fopen_s( &stream, "C:\\my.txt", "r" );
 if( err == 0 )
 if( file != 0 ) fgets( load_string, 1000 , file );
Здесь Вы при открытии используете переменную stream. А когда читаете, переменную file( которая остаётся равной нулю). Вы это исправили?
Цитата Сообщение от Nassta Посмотреть сообщение
но как вывести информацию из txt
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// открываем файл 
FILE * f = fopen( имя_файла, режим_доступа );
 
// цикл, пока файл не закончился 
while( ! feof( f ) )
{
    // читаем строку из файла
 
    // записываем в list-control
}
 
//закрываем файл 
fclose(f);
Здесь возникают вопросы. Прочитали из файла строку. Её целиком записать в 1-й столбец? Или разбить на слова, удалить пробелы, отдельные слова записать в разные столбцы? Или как-то иначе?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2013, 23:21     добавила аргументы, а все равно выдает ошибки
Еще ссылки по теме:

C++ Студия выдает ошибки
C++ Выдает ошибки
Выдает ошибки C++

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

Или воспользуйтесь поиском по форуму:
Nassta
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 7
27.12.2013, 23:21  [ТС]     добавила аргументы, а все равно выдает ошибки #10
Alex5,
Так что ли?
Кликните здесь для просмотра всего текста
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
char seps[] = ":";
    char seps0[] = " ";
    char *token;
    char load_string[1000] = "none";
    FILE *file;
    char *next_token1 = NULL;
 
void CMFCApplication6Dlg::OnBnClickedread()
{
       
        char* file_name = "C:\\my.txt";
        char* Arrow[50]; int k=0;
        errno_t err;
        
        
        // Open for read (will fail if file "crt_fopen_s.c" does not exist)
        err  = fopen_s( &file, "C:\\my.txt", "r" );
        if( err == 0 )
        if(file !=0) fgets( load_string, 1000, file );              
    FILE * f = fopen("my.txt", "r");
 
    while(! feof (f))
    {
        printf("%s", str);
        fputs(str, f);
        fputs("\n", f);
        fclose(f);
    }
            {
                MessageBoxA(
                    NULL, // 1
                    "Do you want to try again?", // 2
                    "Ошибка", // 3
                    MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 // 4
                    );
                return;
            }
            
            fclose(file);
            token = strtok_s(load_string, seps, &next_token1);
            while( token != NULL )
            {
                Arrow[k] = token; k++;
                token = strtok_s( NULL, seps, &next_token1);
            }
}


Там должно выдаваться допустим
Колонки:
фио адрес сколько квадратов цена
в них инфа(в текстовом наверно записано так, там вроде через точку нужно)
иванов.квартира 35.89.350руб
через точку это другой столбец
Yandex
Объявления
27.12.2013, 23:21     добавила аргументы, а все равно выдает ошибки
Ответ Создать тему
Опции темы

Текущее время: 06:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru