Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arraywerte aus DLL holen (https://www.delphipraxis.net/44554-arraywerte-aus-dll-holen.html)

Masterof 20. Apr 2005 21:07


Arraywerte aus DLL holen
 
Hallo!!

ICh habe ein Programm mit einer Dll, in der ein Array mit Werten gefüllt wird, wie kann ich der Werte aus der Dll holen?
Quelltext der dll ist:
Delphi-Quellcode:
function getprinter(pliste: array of string): string; export;
var i : integer;
type TPrinter = record
      drucker: string;
end;
var druck : array of TPrinter;
begin
  for i := 0 to Pred(Printer.Printers.Count) do
   setlength(druck, length(druck)+1);
   with druck[high(druck)] do
   begin
     drucker:= Printer.Printers[i]
   end;
end;

exports
  getprinter name 'getprinter';
begin
end.
Wie übergebe ich die Werte aus Ducker so, das ich sie in meinem Programm erhalte?

Master

Speedmaster 20. Apr 2005 21:09

Re: Arraywerte aus DLL holen
 
Strings in DLL's sind ganz schlecht, ansonsten übergib einen Pointer auf den Array!

Masterof 20. Apr 2005 21:15

Re: Arraywerte aus DLL holen
 
Hallo!!

wo finde ich was über Pointer, da habe ich nämlich keine Ahnung

Master

Speedmaster 20. Apr 2005 21:21

Re: Arraywerte aus DLL holen
 
www.delphi-source.de oder in der Delphi-Hilfe!!

Cicaro 6. Apr 2006 15:38

Re: Arraywerte aus DLL holen
 
Es ist überaus sinnvoll aus DLLs nur primitive Daten, wie Integer und Char zu exportieren. Ansonsten ist es ratsam Zeiger auf kompliziertere Strukturen wie Arrays, Strings (in diesem fall PChar) und Klassen bzw. Objekte zurückzugeben.

Die WinAPI arbeitet ja auch mit Vorliebe mit Objekten.

himitsu 6. Apr 2006 15:51

Re: Arraywerte aus DLL holen
 
Möglich ist es aber dennoch, man benötigt einfach nur einen MemmoryManager, der Prozessübergreifend arbeitet.

Der DelphiMM verwaltet ja jeden Prozess (DLL/EXE...) einzeln und daher ist es nicht so leicht einen in einem Prozess erstellten Speicherbereich in einem anderem Prozess zu verwenden -.-''


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