Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

    Hallo zusammen,

    Ich bitte Sie hier um eine notwindige Hilfe, ich habe eine dll Datei gestellt (C++), die die Textfeldern von diesen tool lesen und überprüfen soll, aber bei jedes mal beim aufrufen zeigt mir diese Meldung
    ("Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.") was soll ich jetzt tun ??
    Danke im Voraus
    Nidal


    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. using System.Runtime.InteropServices;
    10. /*class PlatformInvokeTest
    11. {
    12. //First param is of course either in your PATH, or an absolute path:
    13. [DllImport("msvcrt.dll", EntryPoint = "puts", CallingConvention = CallingConvention.Cdecl)]
    14. public static extern int PutString(string c);
    15. [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
    16. internal static extern int _flushall();
    17. public static void Main()
    18. {
    19. PutString("Test");
    20. _flushall();
    21. }
    22. }*/
    23. namespace WindowsFormsApplication1
    24. {
    25. public partial class Form1 : Form
    26. {
    27. //[DllImport(@"C:\Users\Nidal\Desktop\MVZuers.dll")]
    28. // static extern void FindBZ(string pPLZ, string pOrt, string pStrasse, string pHN, string pOrtsteil);
    29. [DllImport(@"C:\Users\Nidal\Desktop\MVZuers_26_09\Release\MVZuers.dll")]
    30. static extern void GetGefahrenKlasse ([In] ref Form st);
    31. [DllImport(@"C:\Users\Nidal\Desktop\MVZuers_26_09\Release\MVZuers.dll")]
    32. static extern void GetBachzone(string pPLZ, string pOrt, string pStrasse, string pHN, string pOrtsteil);
    33. public int save()
    34. {
    35. string[] num;
    36. num = new string[5];
    37. num[0] = textBox1.Text;
    38. num[1] = textBox2.Text;
    39. num[2] = textBox3.Text;
    40. num[3] = textBox4.Text;
    41. num[4] = textBox5.Text;
    42. //this.x = textBox1.Text;
    43. return 0;
    44. }
    45. static string x, y, z, w, q;
    46. public Form1()
    47. {
    48. InitializeComponent();
    49. //save.num[0] = label8.Text;
    50. this.save();
    51. // string x, y, z, t, e;
    52. }
    53. private void button2_Click(object sender, EventArgs e)
    54. {
    55. Form sst= new Form();
    56. save();
    57. GetBachzone(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text );
    58. // textBox1.Text = Convert.ToString(GetGefahrenKlasse());
    59. }



    und hier ist die Export-Klasse von dem C++ code


    C-Quellcode

    1. char** GetBachzone(char** pArgs, long*, LPSTR, int){
    2. AFX_MANAGE_STATE(AfxGetStaticModuleState());
    3. ATLTRACE("Entered in BachZone\n");
    4. //CWnd *wnd = CWnd::FromHandle( ::GetForegroundWindow() );
    5. //wnd->MessageBox("Begin", "GetGefahrenKlasse", MB_OK | MB_ICONINFORMATION | MB_APPLMODAL);
    6. if(!bAppStarted){
    7. bAppStarted=true;
    8. CZuersSuchDlg dlg;
    9. LPSTR pBZ="";
    10. long lBZ=-1;
    11. CWaitCursor wait;
    12. // ZÜRS-Datei schließen (falls geöffnet)
    13. dlg.CloseZuersFile();
    14. // Ensp. ZÜRS-Datei öffnen (ZÜRS-Version)
    15. dlg.OpenZuersFile(pArgs[5]);
    16. // Init
    17. dlg.InitAdresse(pArgs[1], pArgs[2], pArgs[3], pArgs[4]);
    18. // GK ermitteln und setzen
    19. dlg.FindBZ();
    20. lBZ=dlg.GetBZ();
    21. // GK auswerten
    22. if(lBZ==-2) //Ort nicht gefunden
    23. dlg.DoModal();
    24. lBZ=dlg.GetBZ();
    25. if(lBZ==-4) //Ortsteil nicht gefunden
    26. dlg.DoOrtsteilModal();
    27. lBZ=dlg.GetBZ();
    28. if(lBZ==-3 && lBZ == -7) //Strasse nicht gefunden
    29. dlg.DoModal();
    30. lBZ=dlg.GetBZ();
    31. if(lBZ==-4) //Ortsteil nicht gefunden
    32. dlg.DoOrtsteilModal();
    33. lBZ=dlg.GetBZ();
    34. pBZ=new char[5];
    35. _itoa_s(lBZ, pBZ, 5, 10);
    36. ATLTRACE("BachZone:%s\n", pBZ);
    37. pResult[0] = new char[strlen(dlg.GetPLZ())+1];
    38. pResult[1] = new char[strlen(dlg.GetOrt())+1];
    39. pResult[2] = new char[strlen(dlg.GetStrasse())+1];
    40. pResult[3] = new char[strlen(dlg.GetHN())+1];
    41. pResult[4] = new char[strlen(pBZ)+1];
    42. pResult[5] = new char[strlen(dlg.GetOT()?dlg.GetOT():"")+1];
    43. strcpy_s(pResult[0], strlen(dlg.GetPLZ())+1, dlg.GetPLZ());
    44. strcpy_s(pResult[1], strlen(dlg.GetOrt())+1, dlg.GetOrt());
    45. strcpy_s(pResult[2], strlen(dlg.GetStrasse())+1, dlg.GetStrasse());
    46. strcpy_s(pResult[3], strlen(dlg.GetHN())+1, dlg.GetHN());
    47. strcpy_s(pResult[4], strlen(pBZ)+1, pBZ);
    48. strcpy_s(pResult[5], strlen(dlg.GetOT()?dlg.GetOT():"")+1, dlg.GetOT()?dlg.GetOT():"");
    49. pResult[6]=NULL;
    50. bAppStarted=false;
    51. wait.Restore();
    52. delete[] pBZ;
    53. return (char**)pResult;
    54. }else{
    55. pResult[0] = new char[strlen(pArgs[1])+1];
    56. pResult[1] = new char[strlen(pArgs[2])+1];
    57. pResult[2] = new char[strlen(pArgs[3])+1];
    58. pResult[3] = new char[strlen(pArgs[4])+1];
    59. pResult[4] = new char[strlen("")+1];
    60. strcpy_s(pResult[0], strlen(pArgs[1])+1, pArgs[1]);
    61. strcpy_s(pResult[1], strlen(pArgs[2])+1, pArgs[2]);
    62. strcpy_s(pResult[2], strlen(pArgs[3])+1, pArgs[3]);
    63. strcpy_s(pResult[3], strlen(pArgs[4])+1, pArgs[4]);
    64. strcpy_s(pResult[4], strlen("")+1, "");
    65. strcpy_s(pResult[5], strlen("")+1, "");
    66. pResult[6] = NULL;
    67. return (char**)pResult;
    68. }
    69. }



    ich bitte Sie es ist wirklich ganz wichtig...