![]() |
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 ? |
Re: Der richtige Rückgabewert
Man könnte dafür eine TStringList nehmen oder einen dynamischen Array of string.
MfG Binärbaum |
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.
|
Re: Der richtige Rückgabewert
schreib doch die Suchfunktion einfach in ne eigene Unit, wenn sie so lang ist!
|
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] |
Re: Der richtige Rückgabewert
Oder du nutzt Threads 8-)
|
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 ? |
Re: Der richtige Rückgabewert
vorher einen eigenen Typ deklarieren:
Delphi-Quellcode:
type
PMeinArray = ^TMeinArray; TMeinArray = array of TIrgendwas; ... function test: PMeinArray; begin ... end; ... |
Re: Der richtige Rückgabewert
Zitat:
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. |
Re: Der richtige Rückgabewert
Mein obiger Funktionscode:
Delphi-Quellcode:
Wenn ich dann die Dimension des Arrays festlegen und Werte übergeben möchte will, kommen die Fehlermeldungen:
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 "[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 00:52 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