Krypteringsfejl (Giver fejl ved lang tekst)
Hej Eksperter!Jeg sidder og prøver at lave en krypteringsmekanisme. Krypteringen foregår fint, så længe den AnsiString jeg krypterer ikke er for lang (>300). Derefter kommer debuggeren med en fejl, som jeg har kopieret ind nederst.
Jeg bruger Borland Builder c++ version 6 på en XP maskine.
Venlig hilsen
Kasper
Min funktion ser således ud:
----------------------------------------------------------------
AnsiString __fastcall TForm1::Crypter(AnsiString text, AnsiString Key) {
int KeyLength = Key.Length();
unsigned char *encvalues;
encvalues = new unsigned char[KeyLength+1];
for (int i = 0; i < KeyLength; i++)
{
encvalues[i] = Key[i+1];
}
if(text.Length() <= 0)
{
return NULL;
}
if(Key.Length() <= 0)
{
return NULL;
}
if(text.SubString(text.Length()-1, 2) == "\r\n")
{
text = text.SubString(0, text.Length()-2);
}
if(text.SubString(text.Length()-2, 2) != "\0")
{
text = text + '\0';
}
encvalues[KeyLength] = '\0';
for(int i = 0; i < KeyLength; i++)
{
if(encvalues[i] < 128)
{
encvalues[i]+=127;
i--;
}
}
AnsiString result = "";
char ch;
int max = text.Length();
char *pointerThing;
pointerThing = new char[max+1];
pointerThing = "";
char *pointerThing2 = pointerThing;
int eindex = 0;
for(int i = 1; i <= max; i++) {
ch = text[i];
if (ch)
*pointerThing2++ = ch ^ encvalues[eindex++];
else
*pointerThing2 = '\0';
eindex %=KeyLength;
}
result = (AnsiString)pointerThing;
delete[] encvalues;
delete[] pointerThing;
return result;
}
-----------------------------------------------------------------
Debuggeren fortæller mig dette, som jeg ikke rigtigt kan tyde til andet end en fejl.
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address DAD9D4F0. Read of address DAD9D4F0'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------