Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DLL Mit mehreren Results (https://www.delphipraxis.net/101228-dll-mit-mehreren-results.html)

hedie 10. Okt 2007 09:20


DLL Mit mehreren Results
 
Hallo

Ist es möglich, das eine DLL Function Mehrere Resultate liefern kann?

Also zb so

Delphi-Quellcode:
function blabla(filenam:string):result1,result2:string;stdcall;

danke schonmal

DeddyH 10. Okt 2007 09:22

Re: DLL Mit mehreren Results
 
Keine Funktion kann mehrere Werte zurückgeben. Du könntest evtl. die Strings als Var-Parameter übergeben. Beachte aber die Hinweise von Delphi im Bezug auf Strings in DLLs.

Luckie 10. Okt 2007 09:23

Re: DLL Mit mehreren Results
 
Nein, warum sollte eine Funktion in einer DLL mehrere Rückgabewerte haben können, wenn das auch eine Funktion in einer normalen Anwendung nicht kann? Eine DLL ist eigentlich auch nichts anderes wie eine Exe-Datei mit kompilierten Code, aber eben nur nicht selbstständig ausführbar.

hedie 10. Okt 2007 09:25

Re: DLL Mit mehreren Results
 
Als Variablen hmmm

Ok ich weiss wie ich in der DLL Einer Variable einen Wert gebe und dan einfach noch den EXPORT "aktivieren"

Aber wie deklariere ich die Variable in der Anwendung?

Weil wenn ich ja
Delphi-Quellcode:
VAR bla, bl2, bl3:string
mache dann weiss die EXE ja nicht das die Vars aus der DLL Kommensollen

Wie muss ich die also angeben?

sirius 10. Okt 2007 09:27

Re: DLL Mit mehreren Results
 
Delphi-Quellcode:
procedure getsomethingmore(hinein:integer; var heraus1,heraus2:integer)
Edit: Aber keine Strings!!! Das macht nur Ärger. (Shortstring ist für den Anfang erstmal besser)

hedie 10. Okt 2007 09:28

Re: DLL Mit mehreren Results
 
ok danke

Ich werds mal testen :D

Ich hätt da noch ne kurze kleine Frage

Kann man bei der Angabe der DLL nicht alle zusammen nehmen?

also so muss es ja aussehen
Delphi-Quellcode:
procedure rid3(Filename: string);stdcall;
external 'ax_main.dll';
function ID3(Filename:string):string;stdcall;
external 'ax_main.dll';
Kann man das nicht irgendwie so machen:
Delphi-Quellcode:
procedure rid3(Filename: string);stdcall; , function ID3(Filename:string):string;stdcall;
external 'ax_main.dll';
Danke :D

SirThornberry 10. Okt 2007 09:38

Re: DLL Mit mehreren Results
 
wie bereits erwähnt kann eine funktion immer nur einwas zurück geben. Wenn einem das nicht genügt nimmt man Var parameter. Aber auch wenn eine Funktion nur einwas zurück geben kann, kann in diesem einen mehrere enthalten sein. Zum Beispiel kann eine Funktion einen Record zurück geben wo mehreres enthalten ist.

turboPASCAL 10. Okt 2007 09:38

Re: DLL Mit mehreren Results
 
Man kann mit einem Rutsch mehrere Werte aus einer Funktion oder Progcedure etc. zurückliefern.

Einfach einen eigennen Typ zB. ein Record basteln und los geht es.


Delphi-Quellcode:
type
  TMyRecResult = record
    a, b: Integer;
    c: Char;
  end;

function foo(x, y, z: Integer): TMyRecResult;
begin
 
  Result.a := x + y;
  Result.b := y + z;

  if a > b then Result.c := 'J' else Result.c := 'N';

end;


procedure foo2(x, y, z: Integer; var Schnipp: TMyRecResult);
begin
 
  Schnipp.a := x + y;
  Schnipp.b := y + z;

  if a > b then Schnipp.c := 'J' else Schnipp.c := 'N';

end;
Zitat:

Kann man bei der Angabe der DLL nicht alle zusammen nehmen?
Nö.

hedie 10. Okt 2007 09:39

Re: DLL Mit mehreren Results
 
Ok danke

Das hat mir geholfen :D

sirius 10. Okt 2007 09:42

Re: DLL Mit mehreren Results
 
Und, @turbopascal, foo und foo2 sieht im compilierten Code exakt gleich aus :mrgreen:

@hedie Denke bitte an die strings! Ansonstern wunder dich nicht über eine AV die wahllos im Programm auftaucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Seite 1 von 2  1 2      

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