Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lemanos
13 / 13 / 8
Регистрация: 02.04.2016
Сообщений: 106
1

Ошибка из-за разных версий VS или "Как вытащить работающий код из проекта"

24.04.2016, 15:41. Просмотров 287. Ответов 8
Метки нет (Все метки)

Здравствуйте.
Вот проект, который создавался для версий VS до 2008.
Я его переделал под свои нужны, пересохранил в версии 2013. У меня нормально работает, но теперь не могу запустить ее же в 2012. А т.к. приходится запускать в разных версиях в разных местах, смысла нет мне самому 2012 ставить и сохранять именно в ней, это не решит проблему.
Поэтому обращаюсь к знающим товарищам. Как то можно чисто код вытащить, чтобы он работал во всех версиях? Ибо другие задачки/программки никогда не конфликтовали. А при запуске этого конкретного кода (не проекта, а сам код если скопировать и вставить в 2013), выдает ошибку типа """c:\users\*****\documents\visual studio 2013\Projects\ConsoleApplication4\Release\ConsoleApplication4.exe"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Для продолжения нажмите любую клавишу . . ."

Сам код:
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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
 
string encode(long lSize, long * lKey, string fPath)
{
    long i, j;
    string text, line, encstr;
    ifstream ifs(fPath.c_str());
    if (!ifs)
        cout << "Error open file : " << fPath.c_str() << endl;
    else
    {
        while (getline(ifs, line))
            text += line;
        ifs.close();
        cout << "input string : " << text.c_str() << endl;
        for (i = 0; i < text.length(); i += lSize)
        {
            line = "";
            for (j = 0; j < lSize; j++)
                line += text[i + j];
            for (j = 0; j < lSize; j++)
                encstr += line[lKey[j]];
        }
    }
    return encstr;
}
 
string decode(long lSize, long * lKey, string fPath)
{
    long i, j;
    string text, line, decstr;
    ifstream ifs(fPath.c_str());
    if (!ifs)
        cout << "Error open file : " << fPath.c_str() << endl;
    else
    {
        while (getline(ifs, line))
            text += line;
        ifs.close();
        cout << "input string : " << text.c_str() << endl;
        decstr = text;
        for (i = 0; i < text.length(); i += lSize)
        {
            for (j = 0; j < lSize; j++)
                decstr[i + lKey[j]] = text[i + j];
        }
    }
    return decstr;
}
 
int main()
{
    char chr;
    long lKey[5] = { 0 };
    long i, lSize = sizeof(lKey) / sizeof(lKey[0]);
 
    bool bMenu = true;
    string text;
    fstream vix("new_encode.txt");
    while (bMenu)
    {
        cout << "***MENU***\n";
        cout << "E - encode\n";
        cout << "D - decode\n";
        cout << (chr = getch()) << endl;
        switch (toupper(chr))
        {
        case 'E':
            cout << "Enter key-block : \n";
            for (i = 0; i < lSize; i++)
            {
                cout << "KEY[" << i + 1 << "] = ";
                cin >> lKey[i];
            }
            text = encode(lSize, lKey, "encode.txt");
            cout << "Encoded text : " << text.c_str() << endl;
            break;
        case 'D':
            cout << "Enter key-block : \n";
            for (i = 0; i < lSize; i++)
            {
                cout << "KEY[" << i + 1 << "] = ";
                cin >> lKey[i];
            }
            text = decode(lSize, lKey, "new_encode.txt");
            cout << "Decoded text : " << text.c_str() << endl;
            break;
        default:
            cout << "Unsupported key is pressed\n";
            break;
        }
        cout << "Press Y for see MENU once again\n";
        cout << "Any other key - EXIT\n";
        cout << (chr = getch()) << endl;
        if (toupper(chr) != 'Y')
            bMenu = false;
        system("cls");
    }
    system("pause");
    return 0;
}
Выводная строка:
1>------ Сборка начата: проект: ConsoleApplication4, Конфигурация: Release Win32 ------
1> Перестановка 1.1.cpp
1>Перестановка 1.1.cpp(20): warning C4018: <: несоответствие типов со знаком и без знака
1>Перестановка 1.1.cpp(46): warning C4018: <: несоответствие типов со знаком и без знака
1>Перестановка 1.1.cpp(69): error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\conio.h(131): см. объявление "getch"
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Я так понимаю, проблема из-за "внешней зависимости", которая присутствует в проекте и не копируется с кодом? Ибо все остальное практически идентично.. Как-то можно избавиться от этого?

decenc_project.rar
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2016, 15:41
Ответы с готовыми решениями:

"Куча была повреждена" и "<Имя проекта> вызвал срабатывание точки останова" в самых разных местах программы
Причем точки останова в этом месте нет. Исходный код очень длинный. Кто знает, как это исправить?

В чем ошибка? Когда печатаю "а" или "б" все работает, а когда "А" или "Б" то он не меняет "А" на "Б"
{Программа заменяет буквы &quot;а&quot; на буквы &quot;б&quot; в введенном тексте} var stroka : string; i :...

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf"
Сделал многофайловую программу программу, вот она: //golf.h #include &lt;iostream&gt; #ifndef golg_h_...

Использование файлов ресурсов из "соседнего" или "выполняющего" проекта
Извиняюсь, если не правильно выразился! Суть состоит в том, что я сделал билдер, и у меня есть...

Как в sql реализован логич.тип?Как можно в sql сделать так,чтобы были только значения "0"и"1" или "да"и"Нет"?
Хочу использовать в таблице переменные логического типа, но не нашла ничего про логический тип в...

8
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
24.04.2016, 15:47 2
Замени getch() на _getch() - там же всё написано.
1
Lemanos
13 / 13 / 8
Регистрация: 02.04.2016
Сообщений: 106
24.04.2016, 16:10  [ТС] 3
nmcf,
Блин..
Я с _getch никогда не сталкивался.. Так, все работает. Лично вам большое спасибо.

И есть еще один вопрос.
Суть кода - шифрование и дешифрование методом перестановки (обычная подстановка).
Можно как-то без шифрования сразу дешифровать?
Т.е. как можно переделать код, чтобы из файла ему дать что-то типа:
h istso sien imutt pxft ere totginsaolg imthr
И задать ему только длину ключа. Оставить, скажем так, стандартную длину 5.
А программа перебирала бы все варианты перестановки 0 1 2 3 4, и на каждом шагу выдавала бы какой-то результат, а рядом - ключ, по которому и получен этот результат. И в выходной строке будет что-то типа:

this is some input text for testing algorithm 1 4 2 3 0

Добавлено через 6 минут
Получается, надо написать 5 for-ов друг в друге, чтобы все 5 элементов ключа перебрать? Не представляю нормальной реализации..
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
24.04.2016, 16:11 4
У тебя же там меню. Можешь сразу выбрать decode, если файл с данными есть.

Добавлено через 46 секунд
Цитата Сообщение от Lemanos Посмотреть сообщение
Получается, надо написать 5 for-ов друг в друге, чтобы все 5 элементов ключа перебрать?
Ну как вариант.
0
24.04.2016, 16:11
Lemanos
13 / 13 / 8
Регистрация: 02.04.2016
Сообщений: 106
24.04.2016, 16:15  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
У тебя же там меню. Можешь сразу выбрать decode, если файл с данными есть.
Ну да. Т.е. сделать цикл, который перебирает все варианты ключей, и в этот цикл запихнуть вызов decode.txt. и самой функции расшифровки.
Вы ведь об этом говорили?
Но не слишком ли мудреный метод?
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
24.04.2016, 16:26 6
Нет, надо функцию допилить, чтобы она внутри генерировала варианты.
1
Lemanos
13 / 13 / 8
Регистрация: 02.04.2016
Сообщений: 106
24.04.2016, 16:33  [ТС] 7
nmcf, а как? Есть предположения?
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
24.04.2016, 16:38 8
На основе decode. Генерацию ключа туда и для каждой комбинации цикл расшифровки. Только как ты будешь правильный вариант выбирать из всех?
1
Lemanos
13 / 13 / 8
Регистрация: 02.04.2016
Сообщений: 106
24.04.2016, 21:28  [ТС] 9
nmcf,
Я думал вручную... Мол, просмотрел все варианты, увидел, выбрал..
При длине ключа 5 "всего" 120 вариантов получается. Выбрать вручную вполне возможно... Это если потом при желании увеличить ключ до 7-8, тогда это будет крайне трудно. Поэтому изначально написал, что длина ключа не более 5.
Вроде получилось. Испытываю дальше.
0
24.04.2016, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2016, 21:28

Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "."
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и...

Завершение проекта или "а как запустить?"
Все просто до безумия, но ответ не очевиден. Есть законченный и работающий проект, т.е. в Visual...

Ошибка при создании проекта "Тип проекта не поддерживается этой копией программы"
Пытаюсь создать проект в C# Express 2008 XNA 3.1, выскакивает ошибка Не удается открыть файл...


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

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

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