Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi sysutils.FileSearch unter Windows2008R2x64 (https://www.delphipraxis.net/159847-sysutils-filesearch-unter-windows2008r2x64.html)

sven1810 15. Apr 2011 09:32

sysutils.FileSearch unter Windows2008R2x64
 
Hallo,ich habe in einem Delphi Programm die Funktion sysutils.FileSearch benutzt.
Diese funktionierte bisher auch immer einwandfrei.
Nun möchte ich das Programm welches diese Funktion nutzt auch unter Windows2008R2x64 nutzen, doch liefert mir die Funktion nun ein anderes Ergebnis zurück.
Starte ich z.b. das Programm unter WindowsXP:
sysutils.FileSearch('test.txt', 'c:\') --> Ergebnis: c:\test.txt

unter Windows2008R2x64 erhalte ich dann:
sysutils.FileSearch('test.txt', 'c:\') --> Ergebnis: test.txt

Auf beiden Systemen ist die Datei vorhaben. Genügend Rechte sind auch vorhanden.

Hat jemand einen Tipp für mich?

Gruß

Sven

Stevie 15. Apr 2011 09:41

AW: sysutils.FileSearch unter Windows2008R2x64
 
Das wird daran liegen, dass du auf Windows2008R2x64 dein Projekt im gleichen Verzeichnis liegen hast, wie die Datei.
Würdest du das bei WindowsXP machen, würd das gleiche kommen. Schau dir den Code von FileSearch an. Die erste Überprüfung wird ohne angegebene Verzeichnisse gemacht.

DeddyH 15. Apr 2011 09:44

AW: sysutils.FileSearch unter Windows2008R2x64
 
Ich habe mir gerade den Code von FileSearch angeschaut.
Zitat:

Delphi-Quellcode:
function FileSearch(const Name, DirList: string): string;
  ...
  Result := Name;
  if Result = '' then // nothing to do
    Exit;
  ...
  while True do
  begin
    if FileExists(Result) then Exit;

Falls die Datei also im aktuellen Verzeichnis gefunden wird, kommt lediglich der Dateiname zurück (sofern ich keinen Denkfehler mache). Du könntest nun also überprüfen, ob als Ergebnis ein kompletter Pfad zurückkommt und ggf. das aktuelle Verzeichnis davorschreiben, oder Du verwendest eine eigene Implementierung.

[edit] Zu spät, dafür ausführlicher (*grmpf* immer diese Haarbauern :tongue:) [/edit]

ChrisE 15. Apr 2011 09:46

AW: sysutils.FileSearch unter Windows2008R2x64
 
Hallo,

ich habe mir gerade die FileSearch-Sourcen angeschaut. Kann es sein, dass bei dem WinServer2008-Versuch
  • Die Anwendung im Suchpfad liegt?
  • CurrentDir derzeit auf diesen Pfad zeigt, in dem du suchst?
Es gibt da eben diese Abbruchbedingung in FileSearch, wenn FileExists(DerDateiname) TRUE zurück gibt. Und dann würde auch wie von dir beschrieben nur der Dateiname zurück gegeben werden.

Gruß, Chris

[Edit]Wo kommt jetzt der DeddyH her :shock:[/Edit]

himitsu 15. Apr 2011 10:29

AW: sysutils.FileSearch unter Windows2008R2x64
 
Welche Delphiversion nutzt du?
Und hast du mal vesucht die Delphi-Quellcodes zu debuggen?


spontan würde ich mal sagen, es liegt am Arbeitsverzeichnis deiner Anwendung.

Da wo "test.txt" rauskommt, dort existiert eine solche Datei im Arbeitsverzeichnis.

Zitat:

[Edit]Wo kommt jetzt der DeddyH her [/Edit]
Ich hätte wohl meine arbeit mal unterbrechen sollen und sofort hier antwortern :lol:

sven1810 15. Apr 2011 10:32

AW: sysutils.FileSearch unter Windows2008R2x64
 
Hallo, danke genau das ist es.
Ich starte das Programm aus dem Sendto Ordner. Also markiere Dateien und dann per Rechte Maustaste -> Sendto -> meinprogramm.

Somit hat sich der Verhalten von Windows geändert.
Das Problem hat ich mit setcurrentdir('anderes Verzeichnis') gelöst.

Gruß

Sven

ChrisE 15. Apr 2011 10:34

AW: sysutils.FileSearch unter Windows2008R2x64
 
Hallo Sven,

du hättest auch mit
Delphi-Quellcode:
<ergebnisstring> := ExpandFileName(<ergebnisString>);
erreichen können, dass immer ein absoluter Pfad in deinem Ergebnisstring ist. Doch dass nur anbei.

Gruß, Chris


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