AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Klasseninstanz an DLL-Funktion übergeben (TStrings)
Thema durchsuchen
Ansicht
Themen-Optionen

Klasseninstanz an DLL-Funktion übergeben (TStrings)

Ein Thema von Sharky · begonnen am 1. Jan 2007 · letzter Beitrag vom 5. Jan 2007
 
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: Klasseninstanz an DLL-Funktion übergeben (TStrings)

  Alt 1. Jan 2007, 09:18
Zitat von Sharky:
Hai ihr,

ich bin nun "gezwungen" mich endlich mit DLLs zu beschäftigen ;-)

Immer lese ich das es Probleme gibt wenn man einen Delphi-String an eine DLL übergibt bzw. zurück bekommen möchte.
Bei TStrings dürfte das aber doch kein Problem sein oder? Nicht das ich da jetzt etwas mache und auf einmal fliegt es mir um die Flossen.
...

Ist das okay so oder habe ich da einen groben Fehler?
Hallo,

so allgemein für DLLs kann man das nicht sagen, aber Strings sind nun mal Pascal-spezifisch, in anderen Programmiersprachen, besonders die Cs, sind nullterminierte Zeichenfolgen üblich bzw. Pointer darauf. Die gibt es in Pascal als PChar auch schon lange, aber string und PChar sind getrennte Welten mit unterschiedlichen Funktionen.

Besonders das Win32 API benutzt ausschliesslich PChar, das hat auch technische Vorteile gegenüber der Übergabe von Pascal-Strings an/von DLLs. Du must eben immer umwandeln (der Compiler weist dich schon drauf hin), oder du schreibst dir "Wrapper" wie z.B.
Delphi-Quellcode:
function LoadLibrary_ss (LibPath : ShortString) : THandle;
var lparr : array [0..255] of char;
begin
StrPLCopy (lparr,LibPath,255);
Result := LoadLibrary (lparr);
end;
aber das lohnt sich nur, wenn du die Funktion oft brauchst.

Du hast etwas anders umgewandelt, aber das muss ebenfalls funktionieren. Je nach Aufgabe könnte man in Delphi auch ganz mit arrays und PChar programmieren, aber für Pascal-Strings gibt es mehr Funktionen.

Gruss Reinhard
  Mit Zitat antworten Zitat
 


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 00:29 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