AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DLL: ShortString oder ShareMem für String, WideString,...
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Helmi · begonnen am 19. Mai 2007 · letzter Beitrag vom 19. Mai 2007
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

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

  Alt 19. Mai 2007, 08:23
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.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 19. Mai 2007, 08:36
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.).
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

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

  Alt 19. Mai 2007, 08:43
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]
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 19. Mai 2007, 08:46
Jop. aber das s am Ende von PChar weg
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 19. Mai 2007, 08:51
Und im Programm beschreib ich ein PChar (ohne "s" ) wie einen String?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

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

  Alt 19. Mai 2007, 09:41
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).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

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

  Alt 19. Mai 2007, 10:13
Ich konvertier jetzt von String auf PChar mit
"PAnsiChar()"
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


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:07 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