![]() |
Problem beim Auslesen eines Ordners unter Win98
Hallo,
ich will unter Win98 alle Dateien eines Ordners auslesen und diese in einen String schreiben ich hab mir dafür eine Function geschrieben
Code:
Dieses Function funktioniert unter WinXP ohne Probleme - nur nicht unter Win98
function GiveAllDirFiles(Directory: String): String;
var SearchRec: TSearchRec; begin Result := ''; Directory := IncludeTrailingPathDelimiter(Directory); if (FindFirst(Directory + '*.*', faAnyFile, SearchRec) = 0) then repeat If FileExists(SearchRec.Name) then Result := Result + SearchRec.Name + '|'; until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; Weiss jemand vielleicht warum und was ich anders machen könnte? mfg Helmi |
Re: Problem beim Auslesen eines Ordners unter Win98
Moin Helmi,
Du müsstest bei
Delphi-Quellcode:
noch das Directory davorschreiben, da SearchRec.Name nur den Namen der Datei enthält, und FileExists dann im aktuellen Verzeichnis (Arbeitsverzeichnis) sucht.
If FileExists(SearchRec.Name) then
Dass es unter XP funktioniert hat muss Zufall gewesen sein. Ausserdem macht es nicht wirklich Sinn hier mit FileExists zu arbeiten, da sicher ist, dass SearchRec.Name eine Datei oder Verzeichnisnamen enthält. Mit Resourcenschutzblock könnte das so aussehen.
Delphi-Quellcode:
if (FindFirst(Directory + '*.*', faAnyFile, SearchRec) = 0) then
try repeat If (SearchRec.Attr and faDirectory) = 0 then Result := Result + SearchRec.Name + '|'; until FindNext(SearchRec) <> 0; finally FindClose(SearchRec); end; |
Re: Problem beim Auslesen eines Ordners unter Win98
Hallo Christian,
danke für die schnelle hilfe ich weiss, dass das FileExists nicht notwendig ist, aber ich habe es drin, weil ich so damit die ersten zwei Zeilen mit Punkten (".", "..") verhindere |
Re: Problem beim Auslesen eines Ordners unter Win98
Moin Helmi,
. und .. sind aber Directory Einträge, so dass die o.g. Lösung die auch nicht ausgibt. Wären es Dateien, würde Dir FileExists auch nicht helfen ;-) |
Re: Problem beim Auslesen eines Ordners unter Win98
jo - hast recht :-)
und wie heissts bei uns in Bayern: Wer recht hat, zahlt am Maß :-) danke für die Richtigstellung meines Code :-) |
Re: Problem beim Auslesen eines Ordners unter Win98
Hi!
Ich hab' mal zwei Fragen dazu: 1.) Wenn man die Zeile If (SearchRec.Attr and faDirectory) = 0 then aus dem Listing herausnimmt, dann funktioniert das Ganze bei einer beliebigen Partition der Festolatte oder bei CD/Floppy. Ist die Zeile vorhanden, funktioniert es nur auf C: ?!? :?: 2.) Was muß geändert werden, um auch die Verzeichnisnamen auszulesen? |
Re: Problem beim Auslesen eines Ordners unter Win98
Moin Rockycat,
Delphi-Quellcode:
Jede Datei hat einige grundlegende Attribute, die in TSearchRec.Attr übergeben werden.
If (SearchRec.Attr and faDirectory) = 0 then
Mit SearchRec.Attr and faDirectory wird der ausgelesene Wert mit der Maske faDirectory verknüpft, so dass man entscheiden kann, ob es sich bei dem gefundenen Wert um ein Verzeichnis handelt, oder nicht.
Delphi-Quellcode:
// Wahr, wenn kein Verzeichnis
If (SearchRec.Attr and faDirectory) = 0 then
Delphi-Quellcode:
Um nun also die Verzeichnisnamen auszulesen müsstest Du also nur die Abfrage weglassen.
// Wahr, wenn Verzeichnis
If (SearchRec.Attr and faDirectory) = faDirectory then // ginge auch, grundsätzlich wäre die obere Variante sicherer (bei zusammengesetzten Masken) If (SearchRec.Attr and faDirectory) <> 0 then Zudem solltest Du mit den Suchbegriffen ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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