Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Der richtige Rückgabewert (https://www.delphipraxis.net/39507-der-richtige-rueckgabewert.html)

bscreator 3. Feb 2005 16:59


Der richtige Rückgabewert
 
Hi Leute,

mein Programm wird mit einem kleinen Dateimanager ausgestattet. Da meinen Routinen für die Dateisuche zwar funktionieren, allerdings auch ziemlich lang sind, möcht ich diese in einer DLL unterbringen.

Jetzt zu meinen Fragen:
Der Code der Funktion soll alle Dateinamen, die er gefunden hat, in einer Art Liste zurückliefert, damit ich diese dann bequem in meiner ListBox übernehmen kann.

1. Welchen Rückgabewert muss ich für solch eine Funktion verwenden ?

Binärbaum 3. Feb 2005 17:02

Re: Der richtige Rückgabewert
 
Man könnte dafür eine TStringList nehmen oder einen dynamischen Array of string.

MfG
Binärbaum

Luckie 3. Feb 2005 17:22

Re: Der richtige Rückgabewert
 
Warum willst du den Code in eine DLL auslagern nur weil er viele Zeilen hat? DLLs bringen zusätzlichen Overhead mit sich ganz zu schweigen von den Problemen, wenn es darum geht Strings, StringArrays oder gar Objekte zurückzugeben.

mr47 3. Feb 2005 17:25

Re: Der richtige Rückgabewert
 
schreib doch die Suchfunktion einfach in ne eigene Unit, wenn sie so lang ist!

bscreator 3. Feb 2005 19:24

Re: Der richtige Rückgabewert
 
Ich verwende ein dynamisches Array. Das Erstellen, befüllen und Freigeben ist kein Problem.

Wie muss ich eine Funktion oder Prozedur definieren, die einen Zeiger auf ein dynamisches Array zurückgibt ?

function GetFiles(Verzeichnis : String):[Zeiger auf dynamisches Array]

Aike 3. Feb 2005 19:47

Re: Der richtige Rückgabewert
 
Oder du nutzt Threads 8-)

bscreator 4. Feb 2005 17:16

Re: Der richtige Rückgabewert
 
Nein, keine Threads, die sind ja noch komplizierter.
Erst mal versuch ichs mit nem dynamischen Array.

Nur weiß ich nicht, wie man das als Rückgabewert in einem Funktionskopf deklariert ?

Thunderman 4. Feb 2005 17:22

Re: Der richtige Rückgabewert
 
vorher einen eigenen Typ deklarieren:
Delphi-Quellcode:
type
  PMeinArray = ^TMeinArray;
  TMeinArray = array of TIrgendwas;
...
function test: PMeinArray;
begin
  ...
end;
...

Oxmyx 4. Feb 2005 17:41

Re: Der richtige Rückgabewert
 
Zitat:

Zitat von Luckie
Warum willst du den Code in eine DLL auslagern nur weil er viele Zeilen hat? DLLs bringen zusätzlichen Overhead mit sich ganz zu schweigen von den Problemen, wenn es darum geht Strings, StringArrays oder gar Objekte zurückzugeben.

Wieso sollte eine DLL Overhead mitbringen? Der einzige Overhead den ich mir vorstellen kann, ist die Zeit, bis die DLL in den Speicher geladen ist. Danach ist es so, als ob der Code direkt in der ausführbaren Programmdatei gestanden hätte, es gibt keinen Geschwindigkeitsunterschied.
Vielleicht liefert die Jump Prediction im Prozessor öfters ein falsches Ergebnis, aber das ist nur eine Vermutung, ich glaube nicht dass das wirklich messbar ist.

bscreator 4. Feb 2005 18:41

Re: Der richtige Rückgabewert
 
Mein obiger Funktionscode:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
   PMeinArray = ^TMeinArray;
   TMeinArray = Array of String;

var
  Form1: TForm1;

  function CreateArray:TMeinArray; //Die Array-Funktion
Wenn ich dann die Dimension des Arrays festlegen und Werte übergeben möchte will, kommen die Fehlermeldungen:
"[Fehler] Unit1.pas(33): '(' erwartet, aber ',' gefunden"
"[Fehler] Unit1.pas(34): '(' erwartet, aber ',' gefunden"
"[Fehler] Unit1.pas(35): '(' erwartet, aber ',' gefunden"


Die Funktion CreateArray:

Delphi-Quellcode:
function CreateArray:TMeinArray;
begin
    SetLength(TMeinArray,9); //Array mit 9 Elementen erstellen (0-8)
    TMeinArray[0] := 'Hallo'; //Element 0 mit 'Hallo' befüllen
    Result := TMeinArray;    //Rückgabewert ist das Array;
end;

Wo liegt der Fehler ?


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