AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL und übergabe von PChar

Ein Thema von ATS3788 · begonnen am 8. Mai 2014 · letzter Beitrag vom 9. Mai 2014
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DLL und übergabe von PChar

  Alt 8. Mai 2014, 12:14
Nein

Du lieferst einen Pointer auf ein Ansi-Zeichen zurück und gibts den Speicher auf den dieser Pointer verweist auch wieder frei.

Was denkst du, was unter dem Pointer nun zu finden ist?

So ist das leider nur ein Zufallsgenerator, der alles Mögliche produzieren kann.

So, Spaß beiseite ...

Der Aufrufer muss selber den Speicher für den Rückgabewert zur Verfügung stellen und sich um die Freigabe kümmern. Die Prozedur füllt dann einfach nur diesen Speicher.

Beispiele finden sich im MSDN
http://msdn.microsoft.com/de-de/libr...(v=vs.85).aspx

Dort wird ein (Pointer auf den) Buffer für die Rückgabe übergeben und auch die Größe des Buffers.
Die Funktion füllt dann den Buffer.

Hier ein Beispiel für den Aufruf
Delphi-Quellcode:

function GetEnvironmentVariable(const AEnvVar: string): string;
var
  Len: Integer;
begin
  Len:=Windows.GetEnvironmentVariable(Pchar(AEnvVar),nil,0) ;;
  if Len>0 then
  begin
    SetLength(Result, Len);
    Windows.GetEnvironmentVariable(Pchar(AEnvVar),PChar(Result), Len);
  end
  else
  begin
    Result:='';
    RaiseLastWin32Error;
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 8. Mai 2014 um 12:17 Uhr)
  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 13:37 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