AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

String/Char-Pointer aus C# DLL korrekt auslesen

Ein Thema von Testsieger · begonnen am 2. Jan 2014 · letzter Beitrag vom 2. Jan 2014
Antwort Antwort
Seite 3 von 3     123
Testsieger

Registriert seit: 23. Nov 2013
22 Beiträge
 
#21

AW: String/Char-Pointer aus C# DLL korrekt auslesen

  Alt 2. Jan 2014, 14:04
Primär lag es an dem "out" im Funktionsaufruf.
Ich war mir vorher sicher, dass ich nur Daten aus der Funktion bekomme, wenn das "out" vor der jeweiligen Variablen steht.

Bei der stückweisen Anpassung des Programms kamen dann noch kleinere Fehler hinzu, wie bspw. ein falsche Dimensionierung der ansistring-Variablen (muss ja mind. Länge+1 sein wg. #0). Die 2. Funktion musste
auch umgestellt werden, ansonsten wurde die Variable aus der 1. Funktion nicht gefunden (dadurch war dann fehler>0).

Ich hatte lange an der Konvertierung ansistring/ansichar mit pchar, pwidechar, pansichar "rumgedoktert",
da zwischen den Funktionen immer fehler=0 war und somit alles richtig übergeben wurde, aber eben nicht zuverlässig.


Vielen Dank nochmal, so fängt das Jahr gut an!!!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.014 Beiträge
 
Delphi 12 Athens
 
#22

AW: String/Char-Pointer aus C# DLL korrekt auslesen

  Alt 2. Jan 2014, 14:41
OUT/VAR bedeutet, daß die "Variable" geändert werden kann, da eine Referenz auf den Speicher der Variable übergeben wird.

Das wird hier aber nur benötigt, wenn die Funktion den Speicher resserviert und dann den neuen Pointer zurückgeben muß.


Hier wird aber nur ein "unveränderlicher" Zeiger übergeben und nur der Inhalt der aufgezeigten Speichers verändert.
(Leider) kann man bei Pointern nicht angeben, ob der Inhalt des Speichers verändert wird (der Inhalt des referenzierten Speichers kann gelesen oder überschrieben werden), da IN/OUT/VAR/CONST nur eine Beziehung zur Variable selber haben.

Der "Wert" der Variable, also die Adresse des Speichers, wird ja nicht verändert.

Wenn man es genau nimmt, dann könnte eine procedure IchBinBöse(const S: string); dennoch den Inhalt des strings verändern. (auch wenn standardmäßig die Compilermagic und die Prüfungen des Compilers versuchen das zu verhindern, was man aber böswillig umgehen könnte)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Jan 2014 um 14:46 Uhr)
  Mit Zitat antworten Zitat
Testsieger

Registriert seit: 23. Nov 2013
22 Beiträge
 
#23

AW: String/Char-Pointer aus C# DLL korrekt auslesen

  Alt 2. Jan 2014, 15:30
Danke für deine Ausführungen himitsu. Das hilft mir auf jeden Fall weiter, da noch ein
paar weitere Routinen in der DLL enthalten sind, die ich auch brauche. Dann laufe ich nicht noch
mal in dieselbe Falle
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz