Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von ati_sah
Thema: Übergabe von C# String-Array zum Füllen durch/an C++ Dll? AccessViloation
Am im Forum: Rund um die Programmierung

Hallo, vielen dank

1. Kopierfehler: [DllImport("myDLL.dll", CallingConvention = CallingConvention.Cdecl)]
2. public static extern void Test([In][Out][MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr)] string[] s, int count);
3. das Holen des bestehenden Arrays, ist das nicht mit Übergabe des gesamten strings Arrays erledigt ?

nun mekert er nicht mehr aber er liefert mir nur "0"'s dh nur das 1. Zeichen 1Zeichen zurück, wie kann ich nun alle Strings zurückgeben?:

void Test(wchar_t** s, int count)
{
  for(int i=0; i < count; i++)
  {
    swprintf(s[i], 6*sizeof(wchar_t), L"%02d:%02d\0", i, i+1);
   }
}

MFG

Thema: Übergabe von C# String-Array zum Füllen durch/an C++ Dll? AccessViloation
Am im Forum: Rund um die Programmierung

Hallo,

ich habe ein C# HauptProjekt mit C++ DLL UnterProjekt:
Im C# habe ich ein String[] Array Zeilen=6 und Feldbreite=6 Zeichen, die im C++ dll gefüllt wird und an C# zurückgegeben wird. Ich will den gesamten Array mit einem Zeiger übergeben.
Dabei kommt am C++ FunktionAufruf der Fehler

Fehler
AccessViolationException
und Array bleibt unverändert ?:


[DllImport("myDLL.dll", CallingConvention = CallingConvention.StdCall)]
public static extern void Test(/*[MarshalAs(UnmanagedType.LPArray, SizeConst = 2*6)]*/ string[] s, int count);

private void button4_Click(object sender, EventArgs e)
{
  /* C#: ArrayErgebnisAufbau:
  string[] strings = new[6]:
  strings [0]="00:01",
  strings [1]="01:02",
  strings [2]="02:03",
  strings [3]="03:04",
  strings [4]="04:05",
  strings [5]="05:06";*/

  string[] strings = new[6]; 

  // Füllung/Ausgabe: VorÄnderung
  for (int i = 0; i < 6; ++i)
  {
   strings[i] = String.Format("{0:00}:{1:00}", i, i+1);

   ListViewItem item = new ListViewItem();
   item.Text = i.ToString();

   item.SubItems.Add(strings[i].ToString());
   lv.Items.Add(item);
  }

  // Änderung
  Test(strings, strings.Length);

  // Ausgabe: NachÄnderung
  for (int i = 0; i < strings.Length; ++i)
  {
   ListViewItem item = new ListViewItem();
   item.Text = i.ToString();

   item.SubItems.Add(strings[i].ToString());
   lv.Items.Add(item);
  }
}

C++:
void Test(wchar_t** s, int count)
{
  wchar_t** wct = new wchar_t*[6*count];

  for(int i=0; i < count; i++)
  {
    swprintf(wct[i], 6*sizeof(wchar_t), L"%02d:%02d\0", i+1, i+2);
  }
}

MFG

Thema: FTP Helper Klasse zum Zugriff auf FTP-Server
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo,

im Dienst funktioniert er jetzt.

Frage: beim FTPDataProvider.DownloadFile(...); ändert er den Erstellungsdatum des gedownloadeten Datei, wie kann ich dies vermeiden, daß er den Erstellungsdatum nicht ändert ?

MFG

Thema: FTP Helper Klasse zum Zugriff auf FTP-Server
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo,

ich habe versucht diesen FTP in ein C# .Net Win-Form einzubauen, funktioniert wunderbar. Soweit ich ihn in Wind-Dienst einbaue, nachdem er in dem Ereignis OnStart() springt dann kommt er nicht wiederhin nach TimerZeit=1min Ablauf.

Hat jemand vielleicht eine Idee oder Erfahrung mit diesem FTPDataProvider

MFG
ati

Thema: C++ DllImport 2D Array Daten nach C# 2D Array ?
Am im Forum: Rund um die Programmierung

public struct TMP5
    {
      [MarshalAs(UnmanagedType.LPArray, SizeConst = 5 * 12)]
      public int[,] iFelder;
    } 

    TMP5 iTMJ = new TMP5();

    [DllImport("my.dll", EntryPoint = "Berechne", CallingConvention = System.Runtime.InteropServices.CallingConvention.C decl, CharSet = CharSet.Auto, SetLastError = true)]
    public static extern MP5 Berechne(int iM, int iJ); 


    iTMJ = Berechne(1, 2014);

Mit Marshaling kenne ich mich leider nicht aus.

MFG

Thema: C++ DllImport 2D Array Daten nach C# 2D Array ?
Am im Forum: Rund um die Programmierung


struct MP5{
     public fixed int iFelder[5, 12];
 }
 

Compilerfehler:
nach 5 beim ",": Syntaxfehler. ']' erwartet.
beim 12: Bezeichner erwartet.

MFG

Thema: C++ DllImport 2D Array Daten nach C# 2D Array ?
Am im Forum: Rund um die Programmierung

Hallo,

1. bei dem Kollegen Pdelvo gibt ein Compilerfehler.

2. beim Kollegen Weismat gibt's kein Absturz aber die Daten werden nicht in dem int [,] kopiert.

MFG

Thema: C++ DllImport 2D Array Daten nach C# 2D Array ?
Am im Forum: Rund um die Programmierung

Hallo,

ich habe ein my.dll (Borland C++), wo er ein 2D int iTMJ [5][12] Array mit Daten zurückliefert:

 extern "C" MP5 Berechne(int iM, int iJ);

 struct MP5
 {
    int iTMJ[5][12];
 };

 MP5 iTMJ;

 MP5 _export Berechne(int iM, int iJ)
 {
    ArrayFüllung...
    return(iTMJ);
 }

 public struct MP5 { public static int[,] iFelder = new int[5, 12];}

 MP5 iTMJ;

 [DllImport("my.dll", EntryPoint = "Berechne", CallingConvention = System.Runtime.InteropServices.CallingConvention.C decl, CharSet = CharSet.Auto, SetLastError = true)]
 public static extern MP5 Berechne(int iM, int iJ);
Am Ende rufe ich die im my.dll enthaltene Funktion auf und übergebe auch Daten:

 iTMJ = Berechne(12, 2013);

Bei der letzten Zeile, wo ich die Funktion aufgerufen wird, stürzt er ab und die 2D Daten werden nicht dem C# iTMJ zugewiesen warum ?

MFG