AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirstFile NIL übergeben?

Ein Thema von Pseudemys Nelsoni · begonnen am 28. Jun 2004 · letzter Beitrag vom 28. Jun 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#11

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 14:29
Zitat von MathiasSimmack:
So ähnlich sieht die Funktion bei Borland aus:
Delphi-Quellcode:
function fileexists(const szFilename: string): boolean;
var
  Handle : THandle;
  FindData : TWin32FindData;
begin
  Handle := FindFirstFile(pchar(szFilename),FindData);
  Result := (Handle <> INVALID_HANDLE_VALUE);

  if(Result) then Windows.FindClose(Handle);
end;
Funktioniert auch für Ordner.
Hi Mathias,

nicht ganz! Die Funktion von Borland prüft, ob FileAge(FileName) <> -1 ist.

Ich nehme aber an, dass das (bei Dateien zumindest) keinen Unterschied macht.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 14:36
@mirage: Deswegen schrieb ich ja auch:
Zitat von MathiasSimmack:
So ähnlich sieht die Funktion bei Borland aus:
Wenn du nämlich auf den Kram mit dem letzten Dateizugriff verzichten kannst, und auch auf die Einschränkung, dass nur Dateien berücksichtigt werden, dann kannst du "fileexists" auf die o.g. 3 Zeilen zusammenkürzen.

@Christian: Meinst du die Implementierung von Borland, oder den von mir o.g. Weg? Von ersterer habe ich mir den Quellcode noch nicht angesehen (gleich mal machen, muss bloß zum Schrank ... die CD holen), bei letzterer wüsste ich im Moment jetzt keinen Grund warum es nicht gehen sollte.


@Luckie: Damit wären wir wieder beim Thema. Pseudemys Nelsoni gehört zu denen, die das Rad ständig neu erfinden müssen ...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 14:44
Moin Mathias,

ja, ich meine die von Borland.
Nachdem ich die durch eine eigene Variante ersetzt hatte ging's.

Sieht fast genau so aus wie Deine, nur mit CreateFile.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#14

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 14:51
guck ich mir an luckie.


Zitat:
Pseudemys Nelsoni gehört zu denen, die das Rad ständig neu erfinden müssen ...
Wie meinste denn das? ich kenn keine fileexists function die ohne VCL funzt
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 14:57
Also, ich habe eben mal nachgeschaut. In D5 benutzt Borland die API-Funktion "GetFileAttributes":
Delphi-Quellcode:
function DirectoryExists(const Name: string): Boolean;
var
  Code: Integer;
begin
  Code := GetFileAttributes(PChar(Name));
  Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0);
end;
Jetzt wäre aber die Frage, warum das bei Windows ME nicht klappen soll. Im PSDK finden sich jedenfalls keine speziellen Hinweise zu ME. Bei Delphi 7 sieht die Funktion aber genauso aus wie oben gezeigt. Demzufolge müsste ein D7-Programm das gleiche Problem haben. Hat jemand ME und kann das bestätigen?

Ansonsten würde ich, wenn´s unbedingt eine eigene Funktion für Verzeichnisse sein soll, folgendes vorschlagen:
Delphi-Quellcode:
function DirectoryExists(const Directory: string): boolean;
var
  Handle : THandle;
  FindData : TWin32FindData;
begin
  Handle := FindFirstFile(pchar(Directory),FindData);
  Result := (Handle <> INVALID_HANDLE_VALUE) and
    (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0);

  if(Handle <> INVALID_HANDLE_VALUE) then
    Windows.FindClose(Handle);
end;
@Pseudemys Nelsoni: Doch, denn "FileExists" hat nichts mit der VCL zu tun. Du kannst die SysUtils- und ähnliche Units auch in nonVCL/Konsolenprojekte einbinden. Es ist eben nur so, dass das Programm dadurch etwas größer wird, weil im Hintergrund bestimmte Dinge initialisiert werden, usw.
Wenn du auch auf die SysUtils usw. verzichten willst, dann kommst du um die API-Funktionen nicht herum.

Und mit "Rad neu erfinden" meine ich, dass du bspw. Fragen stellst, die ich (bei Kenntnis der Win32-API-Tutorials als Beispiel) nicht stellen würde, weil du dort schon die Antworten findest. Zudem liegen bei den Samples der Tutorials ebenfalls diverse erweiterte bzw. gepatchte Units bei. Eine davon enthält auch die o.g. "fileexists"-Funktion.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#16

Re: FindFirstFile NIL übergeben?

  Alt 28. Jun 2004, 15:17
Zitat:
@Pseudemys Nelsoni: Doch, denn "FileExists" hat nichts mit der VCL zu tun. Du kannst die SysUtils- und ähnliche Units auch in nonVCL/Konsolenprojekte einbinden. Es ist eben nur so, dass das Programm dadurch etwas größer wird, weil im Hintergrund bestimmte Dinge initialisiert werden, usw.
genau das wollte ich auch vermeiden
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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