![]() |
Herausfinden ob eine Datei existiert
Hallo allerseits,
ich habe gerade ein Brett vor dem Kopf. Bei der Abfrage, ob eine Datei existiert, bekomme ich immer die Rückmeldung dass diese eben nicht da ist. Im Beispiel ist es die Datei 'Fragen.txt', die definitiv da ist. Es wird immer die showmessage Nachricht ausgegeben, was eigentlich nicht der Fall sein dürfte, weil die Datei ja existiert. 1. Versuch: if FileExists ( 'C:\Users\leo-jschm\Documents\Delphi Programme\QA\QA_v1\Fragen.txt' ) = False then begin showmessage ('Die Datei mit den Fragen kann nicht gefunden werden!'); Exit; end; 2. Versuch mit Variation: if FileExists ( 'C:\Users\leo-jschm\Documents\Delphi Programme\QA\QA_v1\Fragen.txt' ) = False then begin showmessage ('Die Datei mit den Fragen kann nicht gefunden werden!'); Exit; end; VG JimmyB |
AW: Ich glaube die Frage ist einfach aber.....
FileExist liefert dir bereits einen Boolean, daher ist die doppelte Boolean mit False unnötig. Schreib so Sachen, die einen Boolean liefern besser so:
Delphi-Quellcode:
Das ändert aber nichts an deinem Problem. Versuche mal die Datei in eine TStringList zu laden (StringList.LoadFromFile(xy)). Da müsstest du eigentlich einen Fehler erhalten, denn ich vermute, dass dein Programm keinen Zugriff auf diese Datei hat. Was passiert denn, wenn du mal im CMD (Eingabeaufforderung) notepad "C:\Users\leo-jschm\Documents\Delphi Programme\QA\QA_v1\Fragen.txt" eingibst? Wird das ohne Problem geladen oder bekommst du da einen Fehler?
if not FileExists ( 'C:\Users\leo-jschm\Documents\Delphi Programme\QA\QA_v1\Fragen.txt' ) then
begin showmessage ('Die Datei mit den Fragen kann nicht gefunden werden!'); Exit; end; |
AW: Ich glaube die Frage ist einfach aber.....
Wenn so einfach, warum sagt dann der "Titel" nichts darüber aus, worum es hier geht?
Was ist der Unterschied zwischen Variante 1 und 2? (ich seh irgendwie nichts) Und wenn du
Delphi-Quellcode:
in das obere Edit des Explorers kopierst und [Enter] drückst, dann geht die Datei auf?
C:\Users\leo-jschm\Documents\Delphi Programme\QA\QA_v1\Fragen.txt
[add] Zugriff auf die Datei ist egal, aber kein Lesezugriff auf das Verzeichnis ... ja, das könnte sein. |
AW: Ich glaube die Frage ist einfach aber.....
Alternativ mal mit einem OpenFileDialog an die Sache rangehen. Vielleicht ist ja wie Rolf schon schrieb keine Berechtigung vorhanden oder Du hast einen Tippfehler in deinem Hardcodet string drinn.
|
AW: Herausfinden ob eine Datei existiert
// ich habe mal den Titel der Frage angepasst.
|
AW: Herausfinden ob eine Datei existiert
Dann hättest Du aber auch gleich noch die Delphi-Tags einfügen können :mrgreen:
|
AW: Herausfinden ob eine Datei existiert
Hallo allerseits,
vielen Dank für die vielen Tipps. Ich habe die Textdatei ins gleiche Verzeichnis kopiert, wie die Projektdatei liegt, bzw. die .exe Datei und siehe es funktioniert. Der Zugriff auf andere Verzeichnisse war in der Tat ein Rechteproblem. vg JimmyB |
AW: Ich glaube die Frage ist einfach aber.....
Zitat:
ganz generell .. OpenFileDialog ... und ähnliche Dialoge: (nur mal noch so als persönliche Bemerkung:) Also den Nutzer bei der Pfadsuche unterstützend finde ich ja gut. Daß sie auch dem Programmierer ermöglichen den korrekten Pfad zu ermitteln und sicherzustellen, daß der Pfad auch konform angegeben wurde (kein 'C;\' oder 'C:\\Dokumente\' oder "C:\Dokumente", wenn man als Programmierer später zum Speichern an 'C:\Dokumente' noch 'Datei1.txt' für 'C:\Dokumente\Datei1.txt' dranhängen möchte. Wenn man sich als Nutzer aber durch einen Pfad zum richigen Ordner 'C:\Dokumente\Nutzer\Karl\privat\Chor3\Vorstand\in terna\Kassenwart\Planung\2022\September\22\Abends\ Fahrt\Busreise\Vorkasse\' als Tree 16x klicken muß, statt einfach den Pfad per copy&paste direkt eingeben kann, (falls man den zur Hand hat), nur weil der Programmierer den Pfad nicht auf Fehler ('C:\pfad'+'datei.txt', 'C:\\da' s.o.) checken möchte ist das manchmal für den Anwender eine Tortur, v.a. wenn das Programm des Mal beim Speichern oder Laden wieder den Dialog bei 'C:\' beginnen läßt ... Keepass, xmediaRecode und noch einige andere machen das so. Und man hat keine Möglichkeit jedes Mal den langen Pfad aus der Zwischenablage einzugeben ... Man sollte auch an den Nutzer denken, der evtl. auch erfahrener ist und ggf. mehrmals Pfade zum Speichern eingeben zum schnelleren Navigieren möchte und das Laden und Speichern ggf. freundlicher gestalten. oder per Ini Pfade editierbar vorgeben können. nur mal so nebenbei ... LG |
AW: Herausfinden ob eine Datei existiert
Delphi-Quellcode:
und zusätzlich noch einen Button/Doppelklick mit dem TFileOpenDialog
DragAcceptFiles(Self.Handle, True); // mit WM_DROPFILES (oder nur an Edit/Panel)
SHAutoComplete(FilenameEdit.Handle, SHACF_FILESYSTEM or SHACF_FILESYS_ONLY or SHACF_FILESYS_DIRS or SHACF_AUTOSUGGEST_FORCE_ON or SHACF_AUTOAPPEND_FORCE_ON); ![]() |
AW: Herausfinden ob eine Datei existiert
Hallo allerseits,
mir ist noch aufgefallen, dass diese Textdatei, die mein Programm nicht finden konnte, unter "Pfad zum Delphi Programm\Win32\debug" stehen muss. Die Pfadangabe von mir, die ich im Code platziert habe, interessiert das Delphi Programm nicht die Bohne. Sehr seltsam! Wie dem auch sei, die Werte werden jetzt eingelesen und in einem Richtext Objekt zur Anzeige gebracht. Jetzt ist der Plan aber das jede einzelen Zeile für sich in einem ----Checkbox1 ----Checkbox2 ----Checkbox3 zur Anzeige gebracht wird. Ich habe dazu Versuche mit einem Label Objekt und einem Checkbox Objekt gemacht Ich dachte für CheckBox1 wird nur die erste Zeile angezeigt. Ist aber nicht so, weil die Schleife die Textdatei durchgeht und die letzte Zeile aus der Textdatei, im Caption des Objekts zur Anzeige bringt. Mit einer Schleife, welche die Checkbox1, Checkbox2, Checkbox3 usw durchgeht, wäre eine Variable - Checkboxi.Caption (i soll hier die laufende Nummer als Variable genutzt werden ggf. ein Weg. Ich scheitere gerade an der Schleife, oder den Variabletypen. vg JimmyB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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 by Thomas Breitkreuz