У меня есть простой проект, написанный на c ++ builder 6. Он касается алгоритма шифрования RSA.Хотел конвертировать в c ++ builder 2010, но он выдает ошибки
, например, исходный код основного проекта
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UTForm.h"
#include "UTRSA.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
randomize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRSA a(Edit4->Text.ToInt());
char* tmp = a.KeyModul;
Edit1->Text = AnsiString(tmp);
tmp = a.OpenKey;
Edit2->Text = AnsiString(tmp);
tmp = a.SecretKey;
Edit3->Text = AnsiString(tmp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TNumber n(Edit1->Text.c_str());
TNumber e(Edit2->Text.c_str());
TNumber d(Edit3->Text.c_str());
THexString text;
text.AsCharString = Edit5->Text;
if (Edit3->Text != "")
{
TRSA a(n,e,d,Edit4->Text.ToInt());
a.PlainText = text;
Edit6->Text = a.CryptedText.AsHexString;
}
else
{
TRSA a(n,e,Edit4->Text.ToInt());
a.PlainText = text;
Edit6->Text = a.CryptedText.AsHexString;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TNumber n(Edit1->Text.c_str());
TNumber e(Edit2->Text.c_str());
TNumber d(Edit3->Text.c_str());
THexString text;
text.AsHexString = Edit6->Text;
if (Edit3->Text != "")
{
TRSA a(n,e,d,Edit4->Text.ToInt());
a.CryptedText = text;
Edit8->Text = a.PlainText.AsCharString;
}
else
{
TRSA a(n,e,Edit4->Text.ToInt());
a.CryptedText = text;
Edit8->Text = a.PlainText.AsCharString;
}
}
//---------------------------------------------------------------------------
ошибки:
Build
Checking project dependencies...
Compiling RSA.cbproj (Debug configuration)
[BCC32 Warning] UTHexString.cpp(92): W8012 Comparing signed and unsigned values
[BCC32 Warning] UTHexString.cpp(92): W8012 Comparing signed and unsigned values
[BCC32 Warning] UTForm.cpp(29): W8057 Parameter 'Sender' is never used
[BCC32 Error] UTForm.cpp(33): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Error] UTForm.cpp(34): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Error] UTForm.cpp(35): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Warning] UTForm.cpp(52): W8057 Parameter 'Sender' is never used
[BCC32 Error] UTForm.cpp(57): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Error] UTForm.cpp(58): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Error] UTForm.cpp(59): E2285 Could not find a match for 'TNumber::TNumber(wchar_t *)'
[BCC32 Warning] UTForm.cpp(76): W8057 Parameter 'Sender' is never used
Failed
Elapsed time: 00:00:01.5
Project Import
Upgrading project "D:\SOFTS\DELPHI and C++ Builder 2009\Cryptography\RSA\RSA\RSA.bpr"
Reading "D:\SOFTS\DELPHI and C++ Builder 2009\Cryptography\RSA\RSA\RSA.bpr"
Upgraded to "D:\SOFTS\DELPHI and C++ Builder 2009\Cryptography\RSA\RSA\RSA.cbproj"
Я думаю, что C ++ Builder 2010 имеетподдержка Unicode по умолчанию, поэтому я ошибаюсь?Когда я посмотрел на конструктор TNumber, у него было следующее:
//---------------------------------------------------------------------------
#ifndef UTNumberH
#define UTNumberH
//---------------------------------------------------------------------------
#include <assert.h>
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
class TNumber
{
private:
TNumber multdigit(int) const;
TNumber mult10(int) const;
char *vlstr;
int vlen;
int vlsign;
public:
TNumber(const char* = NULL);
TNumber(int);
TNumber(const TNumber &);
~TNumber();
operator int() const;
operator long() const;
operator double() const;
operator char*() const;
const TNumber& operator=(const TNumber&);
TNumber operator - () const;
TNumber operator ++ ();
TNumber operator ++ (int);
TNumber operator -- ();
TNumber operator -- (int);
TNumber operator += (const TNumber &);
TNumber operator -= (const TNumber &);
TNumber operator *= (const TNumber &);
TNumber operator /= (const TNumber &);
TNumber operator %= (const TNumber &);
friend TNumber operator + (const TNumber &, const TNumber &);
friend TNumber operator - (const TNumber &, const TNumber &);
friend TNumber operator * (const TNumber &, const TNumber &);
friend TNumber operator / (const TNumber &, const TNumber &);
friend TNumber operator % (const TNumber &, const TNumber &);
friend int operator == (const TNumber &, const TNumber &);
friend int operator != (const TNumber &, const TNumber &);
friend int operator < (const TNumber &, const TNumber &);
friend int operator <= (const TNumber &, const TNumber &);
friend int operator > (const TNumber &, const TNumber &);
friend int operator >= (const TNumber &, const TNumber &);
char* strrev(char *s) const;
friend TNumber abs(const TNumber &);
friend TNumber sqrt(const TNumber &);
friend TNumber pow(const TNumber &, const TNumber &);
friend double div(const TNumber &, const TNumber &);
friend ostream & operator << (ostream &, const TNumber &);
friend istream & operator >> (istream &, TNumber &);
friend TNumber rnd(const TNumber& from, const TNumber& to);
};
const TNumber zero = TNumber("0");
const TNumber one = TNumber("1");
const TNumber two = TNumber("2");
TNumber eae(TNumber u, TNumber v);
#endif
В чем я не прав?
Кроме того, найдите прикрепленный проект c ++ builder 6!