Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#1

Exportieren eines TYPES einer "fremden" Unit

  Alt 14. Nov 2012, 18:56
Delphi-Version: 7
Hallo zusammen,

bitte entschuldigt den merkwürdigen Titel; mir wollte einfach kein besserer einfallen...

Es geht um Folgendes:
Für meine Bedürfnisse an "Dateisuche" habe ich mich für die Klasse "TFindFile" von DelphiArea entschieden. Kann einfach alles, was man sich so wünscht.
Für einfache Aufgaben wollte ich nun die Klasse ableiten, sodass z.B. ein Stringliste mit den Ergebnissen gefüllt wird, also:
Delphi-Quellcode:
  TFindFileListBasic = class(FindFile.TFindFile)
  private
    SL: TStringList;
    FStoreFullname: Boolean;
    FTotalFileSize: Int64;
    procedure OnFileMatchEvent(Sender: TObject; const FileInfo: TFileDetails);
  public
    constructor Create(AOwner: TComponent);
    destructor Destroy; override;
    function SearchForFiles: TStringList;
  published
    property StoreFullName: Boolean read FStoreFullname write FStoreFullname;
    property FileSizeOfList: Int64 read FTotalFileSize;
  end;
Der Aufruf sieht dann etwa so aus, um alle Verzeichnisse im Root von C: zu finden:
Delphi-Quellcode:
    var folderList: TStringList;

    with TFindFileListBasic.Create(Self) do begin
      Criteria.Files.Location := 'C:\';
      Criteria.Files.Subfolders := false; // Nur auf oberster Ebene suchen
      Criteria.Attributes.Directory := fsSet; // Nur Verzeichnisse suchen
      folderList := SearchForFiles; // Verzeichnisliste erstellen
      .
      .
      Free;
    end;
Mein Problem ist das Element fsSet, welches als Aufzählungstyp in der Original-Unit FileFind deklariert ist:
  TFileAttributeStatus = (fsIgnore, fsSet, fsUnset, fsAnySet, fsAnyUnset); Nur wegen dieses Typs muss ich (neben meiner Unit mit der abgeleiteten Klasse) auch noch die Original-Unit einbinden. Meine Versuche, das zu umgehen, sind leider gescheitert: Keine der beiden folgenden Zeilen in meiner Unit führen zum Erfolg:
Delphi-Quellcode:
  TFileAttributeStatus = FindFile.TFileAttributeStatus;
  // Fehler: Undeclared Identifier: 'fsSet'

  TFileAttributeStatus = (fsIgnore, fsSet, fsUnset, fsAnySet, fsAnyUnset);
  // Fehler: Incompatible types
Hat jemand eine Idee, wie ich in meiner Unit dieses Type "TFileAttributeStatus" bereitstellen kann, ohne in der Applikation die Unit "FileFind" einzubinden?

P.S. Klar, das ist nur Kosmetik. Mich würde nur interessieren, wie/ob man sowas machen kann, also einen Typ aus einer Unit übernehmen und exportieren...
  Mit Zitat antworten Zitat