Avatar billede You24Me1 Novice
13. januar 2016 - 17:52 Der er 6 kommentarer og
1 løsning

Der er ikke adgang til en lukket stream eller cannot access a closed stream.

Hej folkens.Jeg følger et kursus på YouTube om Visual C++ og i forbindelse med Tutorial 20: Windows Form Application: Encrypt data from single String, får jeg fejlen "Der er ikke adgang til en lukket stream". Kan nogen fortælle mig hvad jeg gør galt - jeg synes jeg har fulgt vejledningen. Min kode ser ud som følger:

private: System::Void btEnCrypt_Click(System::Object^  sender, System::EventArgs^  e) {
    cipherData = tbEnCrypt->Text;
    plain2Byte = Encoding::ASCII->GetBytes(cipherData);

    plainKey = Encoding::ASCII->GetBytes("0123456789abcdef");

    desObj->Key = plainKey;
    // choose Mode
    desObj->Mode = CipherMode::CBC;
    // choose Padding
    desObj->Padding = PaddingMode::PKCS7;

    MemoryStream^ ms = gcnew MemoryStream();
    CryptoStream^ cs = gcnew CryptoStream(ms, desObj->CreateEncryptor(),CryptoStreamMode::Write);
   
    cipherByte = ms->ToArray();
    ms->Close();

    cs->Write(plain2Byte,0,plain2Byte->Length);
    MessageBox::Show("Before Close cs");
    cs->Close();

    MessageBox::Show("Passing decrypted data to Form");
    tbDeCrypt->Text = Encoding::ASCII->GetString(cipherByte);

}

- det sidste jeg ser inden throw exception er "Before Close cs".

Kan nogen hjælpe?
Avatar billede arne_v Ekspert
13. januar 2016 - 18:08 #1
ms->Close();

skal vel ned under

cs->Close();
Avatar billede You24Me1 Novice
13. januar 2016 - 19:01 #2
Præcist men jeg får stadig ingen krypteret tekst ud på min form men det må jeg så prøve at rode lidt med - variablen cipherByte er blank. Måske lidt tåbeligt at bruge tid på netop kryptering når jeg ikke forstår ret meget af hvad koden gør. Men jeg har haft stor glæde af omtalte Tutorials indtil nu, bl.a. lært en del MySQL som jeg bedre forstår :-)
Avatar billede You24Me1 Novice
13. januar 2016 - 19:12 #3
Vil du smide et svar så jeg kan tildele nogle points og få lukket tråden. Tak for hjælpen (igen igen) :-)
Avatar billede arne_v Ekspert
13. januar 2016 - 19:15 #4
Proev og flyt:

cipherByte = ms->ToArray();

ned under:

cs->Write(plain2Byte,0,plain2Byte->Length);
Avatar billede arne_v Ekspert
13. januar 2016 - 19:15 #5
og svar
Avatar billede arne_v Ekspert
13. januar 2016 - 19:15 #6
Hvorfor ioevrigt laere C++/CLR og ikke enten C# eller ren C++?
Avatar billede You24Me1 Novice
13. januar 2016 - 19:32 #7
Jeg har lært grundlæggende C++ (meget basis) og vil gerne lave noget præsentation og her synes jeg at Windows Forms er nyttig og let at gå til. Jeg ved godt at man (Windows) helt ser C# anvendt til Forms men nu har jeg lige lært grundlæggende C++ så jeg synes at det er for tidligt at gå "videre" med C# - det vil jeg helt sikkert lære på et senere tidspunkt. Jeg bruger VS 2015 som IDE og jeg tror ikke længere at Windows supporterer Forms til ren C++ (managed/unmanaged kode?)så derfor C++/CLR.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester