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
und hier ist die Export-Klasse von dem C++ code
ich bitte Sie es ist wirklich ganz wichtig...
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
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Runtime.InteropServices;
- /*class PlatformInvokeTest
- {
- //First param is of course either in your PATH, or an absolute path:
- [DllImport("msvcrt.dll", EntryPoint = "puts", CallingConvention = CallingConvention.Cdecl)]
- public static extern int PutString(string c);
- [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
- internal static extern int _flushall();
- public static void Main()
- {
- PutString("Test");
- _flushall();
- }
- }*/
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- //[DllImport(@"C:\Users\Nidal\Desktop\MVZuers.dll")]
- // static extern void FindBZ(string pPLZ, string pOrt, string pStrasse, string pHN, string pOrtsteil);
- [DllImport(@"C:\Users\Nidal\Desktop\MVZuers_26_09\Release\MVZuers.dll")]
- static extern void GetGefahrenKlasse ([In] ref Form st);
- [DllImport(@"C:\Users\Nidal\Desktop\MVZuers_26_09\Release\MVZuers.dll")]
- static extern void GetBachzone(string pPLZ, string pOrt, string pStrasse, string pHN, string pOrtsteil);
- public int save()
- {
- string[] num;
- num = new string[5];
- num[0] = textBox1.Text;
- num[1] = textBox2.Text;
- num[2] = textBox3.Text;
- num[3] = textBox4.Text;
- num[4] = textBox5.Text;
- //this.x = textBox1.Text;
- return 0;
- }
- static string x, y, z, w, q;
- public Form1()
- {
- InitializeComponent();
- //save.num[0] = label8.Text;
- this.save();
- // string x, y, z, t, e;
- }
- private void button2_Click(object sender, EventArgs e)
- {
- Form sst= new Form();
- save();
- GetBachzone(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text );
- // textBox1.Text = Convert.ToString(GetGefahrenKlasse());
- }
und hier ist die Export-Klasse von dem C++ code
C-Quellcode
- char** GetBachzone(char** pArgs, long*, LPSTR, int){
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- ATLTRACE("Entered in BachZone\n");
- //CWnd *wnd = CWnd::FromHandle( ::GetForegroundWindow() );
- //wnd->MessageBox("Begin", "GetGefahrenKlasse", MB_OK | MB_ICONINFORMATION | MB_APPLMODAL);
- if(!bAppStarted){
- bAppStarted=true;
- CZuersSuchDlg dlg;
- LPSTR pBZ="";
- long lBZ=-1;
- CWaitCursor wait;
- // ZÜRS-Datei schließen (falls geöffnet)
- dlg.CloseZuersFile();
- // Ensp. ZÜRS-Datei öffnen (ZÜRS-Version)
- dlg.OpenZuersFile(pArgs[5]);
- // Init
- dlg.InitAdresse(pArgs[1], pArgs[2], pArgs[3], pArgs[4]);
- // GK ermitteln und setzen
- dlg.FindBZ();
- lBZ=dlg.GetBZ();
- // GK auswerten
- if(lBZ==-2) //Ort nicht gefunden
- dlg.DoModal();
- lBZ=dlg.GetBZ();
- if(lBZ==-4) //Ortsteil nicht gefunden
- dlg.DoOrtsteilModal();
- lBZ=dlg.GetBZ();
- if(lBZ==-3 && lBZ == -7) //Strasse nicht gefunden
- dlg.DoModal();
- lBZ=dlg.GetBZ();
- if(lBZ==-4) //Ortsteil nicht gefunden
- dlg.DoOrtsteilModal();
- lBZ=dlg.GetBZ();
- pBZ=new char[5];
- _itoa_s(lBZ, pBZ, 5, 10);
- ATLTRACE("BachZone:%s\n", pBZ);
- pResult[0] = new char[strlen(dlg.GetPLZ())+1];
- pResult[1] = new char[strlen(dlg.GetOrt())+1];
- pResult[2] = new char[strlen(dlg.GetStrasse())+1];
- pResult[3] = new char[strlen(dlg.GetHN())+1];
- pResult[4] = new char[strlen(pBZ)+1];
- pResult[5] = new char[strlen(dlg.GetOT()?dlg.GetOT():"")+1];
- strcpy_s(pResult[0], strlen(dlg.GetPLZ())+1, dlg.GetPLZ());
- strcpy_s(pResult[1], strlen(dlg.GetOrt())+1, dlg.GetOrt());
- strcpy_s(pResult[2], strlen(dlg.GetStrasse())+1, dlg.GetStrasse());
- strcpy_s(pResult[3], strlen(dlg.GetHN())+1, dlg.GetHN());
- strcpy_s(pResult[4], strlen(pBZ)+1, pBZ);
- strcpy_s(pResult[5], strlen(dlg.GetOT()?dlg.GetOT():"")+1, dlg.GetOT()?dlg.GetOT():"");
- pResult[6]=NULL;
- bAppStarted=false;
- wait.Restore();
- delete[] pBZ;
- return (char**)pResult;
- }else{
- pResult[0] = new char[strlen(pArgs[1])+1];
- pResult[1] = new char[strlen(pArgs[2])+1];
- pResult[2] = new char[strlen(pArgs[3])+1];
- pResult[3] = new char[strlen(pArgs[4])+1];
- pResult[4] = new char[strlen("")+1];
- strcpy_s(pResult[0], strlen(pArgs[1])+1, pArgs[1]);
- strcpy_s(pResult[1], strlen(pArgs[2])+1, pArgs[2]);
- strcpy_s(pResult[2], strlen(pArgs[3])+1, pArgs[3]);
- strcpy_s(pResult[3], strlen(pArgs[4])+1, pArgs[4]);
- strcpy_s(pResult[4], strlen("")+1, "");
- strcpy_s(pResult[5], strlen("")+1, "");
- pResult[6] = NULL;
- return (char**)pResult;
- }
- }
ich bitte Sie es ist wirklich ganz wichtig...