Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL: ShortString oder ShareMem für String, WideString,... (https://www.delphipraxis.net/92403-dll-shortstring-oder-sharemem-fuer-string-widestring.html)

Helmi 19. Mai 2007 08:23


DLL: ShortString oder ShareMem für String, WideString,...
 
Hallo,

ich hab letztens wieder mit DLL´s gearbeitet und bin wieder über die Strings geflogen.
Leider ist mir immer noch nicht ganz klar, wann man ShareMem braucht und wann nicht.

Wenn ich das richtig verstanden habe, braucht man ShareMem wenn man die Delphi-Strings verwenden will (String, WideString, ...).
Mann/Frau braucht es aber nicht, wenn man ShortString verwendet.

Richtig oder falsch?

ShortStrings haben aber den Nachteil dass sie nur 255 Zeichen lang sind.

DGL-luke 19. Mai 2007 08:36

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Hallo,

da DLL und Exe sich den Speicherbereich teilen, wenn auch nicht unbedingt den Speichermanager, kannst du auch mit PChars arbeiten.

Das ist ein Pointer auf den ersten Char eines Strings.

Der String muss natürlich dann solange alloziiert bleiben, bis das andere Modul mit ihm durch ist (für Funktionsrückgaben etc.).

Helmi 19. Mai 2007 08:43

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Hallo,

wie würde eine Übergabe mit PChars funktionieren?

so z. B. DLL?:
Delphi-Quellcode:
function GetString(S: PChar): PChar; stdcall;
begin
  Result := S;
end;
[edit]
DGL-luke wollt ja umbedingt die "s" an den PChars weghaben :-)
[/edit]

DGL-luke 19. Mai 2007 08:46

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Jop. aber das s am Ende von PChar weg ;-)

Helmi 19. Mai 2007 08:51

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Und im Programm beschreib ich ein PChar (ohne "s" :-) ) wie einen String?

Apollonius 19. Mai 2007 09:41

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Du kannst einen PChar fast genau so verwenden wie einen String, allerdings sind die Funktionen length (dafür gibts strlen), pos, delete usw. für Ansistrings ausgelegt. Am besten macht man irgendwann eine Konvertierung in eine Ansistring (StrPas).

Helmi 19. Mai 2007 10:13

Re: DLL: ShortString oder ShareMem für String, WideString,..
 
Ich konvertier jetzt von String auf PChar mit
"PAnsiChar()"


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 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