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 prüfen ob String ein Ordner-Pfad ist (https://www.delphipraxis.net/69398-pruefen-ob-string-ein-ordner-pfad-ist.html)

Helmi 14. Mai 2006 20:51


prüfen ob String ein Ordner-Pfad ist
 
Hallo,

wie kann ich prüfen ob der Inhalt eines Strings ein Ordner ist?

Ich hab mir das so in etwa gedacht:

Delphi-Quellcode:
var
  S: String;
  b_Ist_Ordner, b_Ordner_vorhanden: Boolean;

begin

  S := 'C:\Temp;

  //Hier bräucht ich eine Funktion:
  b_Ist_Ordner := STRING_IST_ORDNER(S);

  If b_Ist_Ordner then
    b_Ordner_vorhanden := DirectoryExists(S);
Also ich möchte nicht prüfen ob der Ordner vorhanden ist, sondern nur ob der String ein Ordner ist oder eine Datei (also eigentlich nur ob er ein Ordner ist).

Gibts für so was eine fertige Function von Delphi oder muss man sich so was selber zusammenbauen?

ichbins 14. Mai 2006 21:09

Re: prüfen ob String ein Ordner-Pfad ist
 
Bastel dir einfach selber was:


Delphi-Quellcode:
function isdirname(s:string):boolean;
var
  i:integer;
begin
  result:=false;
  if length(s)<2 then exit;
  if not ((pos(s[1],'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')>0) and (s[2]=':')) then exit;
  result:=true;
  if length(s)=2 then exit;
  result:=result and (s[3]='\');
  for i:=4 to length(s) do
    result:=result and (pos(s[i],'alle gültigen Zeichen eben'+'\')>0);
end;

jim_raynor 14. Mai 2006 21:20

Re: prüfen ob String ein Ordner-Pfad ist
 
Zitat:

Zitat von ichbins
Delphi-Quellcode:
  if not ((pos(s[1],'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')>0) and (s[2]=':')) then exit;

Das geht auch einfacher und schneller mit:

Delphi-Quellcode:
  if (not (s[1] in ['a'..'z','A'..'Z'])) and (s[2]=':')) then exit;

SirThornberry 14. Mai 2006 21:27

Re: prüfen ob String ein Ordner-Pfad ist
 
ein ordner muss nicht unbedingt einen ":" im Namen haben. Er kann auch in einem Netzwerkpfad vorhanden sein. Zusätzlich müsste noch geprüft werden das keine weiteren Sonderzeichen im Pfad sind.

nat 14. Mai 2006 22:06

Re: prüfen ob String ein Ordner-Pfad ist
 
also es kommt natürlich auf deinen fall an, aber wenn die eingaben (der string)
nur dateien oder ordner bezeichnen können (keinen willkürlichen text in dem evtl ein \ vorkommt)
dann kannst du das eigentlich so unterschieden.

Delphi-Quellcode:
if ExtractFilePath(myString) = '' then
  //ist ein Ordner
else
  //ist eine Datei

Hawkeye219 14. Mai 2006 22:16

Re: prüfen ob String ein Ordner-Pfad ist
 
Zitat:

Zitat von Helmi
Also ich möchte nicht prüfen ob der Ordner vorhanden ist, sondern nur ob der String ein Ordner ist oder eine Datei (also eigentlich nur ob er ein Ordner ist).

Ohne eine "echte" Prüfung dürfte das wohl unmöglich sein.

Code:
C:\Daten\WasBinIch
Wie willst du feststellen, ob es eine Datei oder ein Ordner ist, ohne im Dateisystem nachzusehen? Dateinamen müssen keine Extension enthalten, Ordner dürfen eine enthalten. Also gibt es in unserem Beispiel zwei Möglichkeiten:

1.) es ist die Datei "WasBinIch" im Ordner "C:\Daten"
2.) es ist der Ordner "C:\Daten\WasBinIch"

Gruß Hawkeye

Ben 14. Mai 2006 22:29

Re: prüfen ob String ein Ordner-Pfad ist
 
Hallo,

wie wäre es mit
Delphi-Quellcode:
if DirectoryExists(S)
  // S ist ein Verzeichnis

else if FileExists(S)
  // S ist eine Datei

else
  // S ist irgendwas anderes
?

Mit freundlichen Grüßen,
Ben

SirThornberry 14. Mai 2006 22:31

Re: prüfen ob String ein Ordner-Pfad ist
 
nach seinem ausgangspost will er ja erst auf existieren des Ordners prüfen wenn er weiß das es ein Ordner sein könnte/ist

lizardking 14. Mai 2006 22:35

Re: prüfen ob String ein Ordner-Pfad ist
 
Zitat:

Zitat von Ben
Hallo,

wie wäre es mit
Delphi-Quellcode:
if DirectoryExists(S)
  // S ist ein Verzeichnis

else if FileExists(S)
  // S ist eine Datei

else
  // S ist irgendwas anderes
?

Mit freundlichen Grüßen,
Ben

Er moechte auch herausfinden, ob es sich um ein Verzeichnis oder eine Datei ist, wenn diese(s) nicht existiert. Der Ansatz mit ExtractFilePath und ExtractFileName ist denke ich schon der richtige.

ABER: Dabei sollte beachtet werden, dass man per Definition nicht eindeutig sagen kann, ob in einem String ein Verzeichnis oder eine Datei angegeben ist.

'C:\WINDOWS\HelloWorld'

Das koennte z.B. eine Datei oder ein Verzeichnis sein.

Gruesse,

Lizzy

nat 14. Mai 2006 22:40

Re: prüfen ob String ein Ordner-Pfad ist
 
dann definiert man halt für sein eigenes programm, dass dateien ohne ext.
als ordner angesehen werden. es kommt halt immer auf den kontext an.
wie willst du es anders machen ohne ins dateisys zu schaun.
besser als mit ExtractFilePath / ExtractFilename gehts nich (meiner meinung nach).


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