![]() |
Re: C++ DLL in Delphi einbinden
Zitat:
Delphi-Quellcode:
var
otrailer : string; tr: TRAB; erg : integer; begin // record tr mit Daten füllen .... // Speicher für otrailer anlegen SetLength(otrailer, 1000); // das sollte reichen erg := versacom(tr, PChar(otrailer)); // der Aufruf // string otrailer verkürzen bis zum 1. Auftreten von #0 otrailer := PChar(otrailer); // Auswertung von erg nicht vergessen ! end; |
Re: C++ DLL in Delphi einbinden
Moin!
Ich meine ebend nicht diesen TypeCast, da der bei der Weitergabe an die DLL Probleme machen kann (und bei mir auch meistens macht), daher habe ich nicht umsonst auf StrAlloc() verwiesen. Alloziiere den PChar mit StrAlloc()... MfG Muetze1 |
Re: C++ DLL in Delphi einbinden
Das Problem liegt ja in der Sache an sich:
- string[0] gibt ja die Länge des Strings und bracuht somit kein Abschlusszeichen - bei pchar geht der String bis zum Auftreten des Abschlusszeichens |
Re: C++ DLL in Delphi einbinden
Zitat:
Dagegen ist die Vorgehensweise, die ich vorgeschlagen habe "Delphi-Like". Es wird mit SetLength dynamisch Speicher reserviert. Denoch braucht sich der Programmierer nicht um die Freigabe des Speichers zu kümmern. Man darf bedenkenlos einen Zeiger auf den reservierten String in eine externe Funktion hineingeben und darauf vertrauen, dass die Funktion auf den Zeiger schreiben darf (solange die Länge nicht überschritten wird). Allerdings hätte ich vielleicht dazu sagen müssen, dass nur AnsiStrings erlaubt sind:
Delphi-Quellcode:
var
otrailer : AnsiString; // (auch als langer String bezeichnet) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz