Nugi89 hat geschrieben:
Und ja ich kann die Datei mit einem anderen Programm öffnen.
hab mal den Test gemacht. leider bekomme ich als Meldung das die Datei nicht existiert.
Das widerspricht sich. Bist du sicher, dass der Pfad der "mit einem anderen Program" geöffneten Datei exakt dem Wert der "path" Variable entspricht?
Falls ja, laufen beide Programme mit denselben user-Rechten? "c:\User\Admin\..." erscheint verdächtig, funkt da etwa ein Virenschutz hinein? Versuche doch einmal mit einem weniger geschützten Verzeichnis.
Ich kann dir zwar keine Datei an die Stelle kopieren und auch die Prüfung, ob der Pfad und der Dateiname korrekt ist, nicht machen, aber dir einen Ratschlag geben: ich würde dir empfehlen einen Dateinamen (FileName) auch als solchen zu benennen und nicht als Pfad (Path). Das schafft nur Verwirrung.
Falls wirklich eine Datei an diesem Ort mit diesem Namen existiert und du diese nicht öffnen kannst, liegt das evtl. an den unzureichenden Rechten deines Projektes. Du könntest noch probieren unter Projekt -> Projekteinstellungen -> Anwendung -> Ausführungsebene -> höchste verfügbare oder benötigt Administrator zu wählen.
Michl hat geschrieben:Ich kann dir zwar keine Datei an die Stelle kopieren und auch die Prüfung, ob der Pfad und der Dateiname korrekt ist, nicht machen, aber dir einen Ratschlag geben: ich würde dir empfehlen einen Dateinamen (FileName) auch als solchen zu benennen und nicht als Pfad (Path). Das schafft nur Verwirrung.
Bringt "OpenDialog1.FileName" lediglich den Dateinamen und keinen kompletten Pfad? Dann würde natürlich eine Datei ausserhalb des aktuellen Verzeichnisses nicht gefunden...
@Nugi89: Setze doch einen Breakpoint in die "if FileExists(path) = true then"-Zeile und prüfe ob der Wert der Variable "path" deinen Erwartungen entspricht.
Zuletzt geändert von mse am Mo 14. Sep 2015, 14:35, insgesamt 1-mal geändert.
es handelt sich hier nur um ein Programm. Sprich die zwei Prozeduren gehören in dieses Programm.
Eine andere Datei aus einem anderen Verzeichnis zu laden geht und ich kann bei dieser Datei auch die Zeilen zählen.
Nur aus dem Verzeichnis nicht, indem mein Projekt abgelegt ist welches ich dazu verwenden, kann zwar den Pfad laden aber nicht die Zeilen zählen.
mse hat geschrieben:Bringt "OpenDialog1.FileName" lediglich den Dateinamen und keinen kompletten Pfad? Dann würde natürlich eine Datei ausserhalb des aktuellen Verzeichnisses nicht gefunden...
Nein, brint den kompletten Filenamen, incl. Pfad. Für mich ist ein Pfad nur ein Pfad ohne Dateiname - daher der Hinweis (ich extrahiere regelmäßig mit aPath := ExtractFilePath(aOpenDialog.FileName) den entsprechenden Pfad).
mse hat geschrieben:@Nugi89: Setze doch einen Breakpoint in die "if FileExists(path) = true then"-Zeile und prüfe ob der Wert der Variable "path" deinen Erwartungen entspricht.
+1
Zuletzt geändert von Michl am Mo 14. Sep 2015, 14:40, insgesamt 1-mal geändert.
Michl hat geschrieben:Für mich ist ein Pfad nur ein Pfad ohne Dateiname - daher der Hinweis (ich extrahiere regelmäßig mit aPath := ExtractFilePath(aOpenDialog.FileName) den entsprechenden Pfad).
Das ist glaube ich nicht allgemeingültig. Für mich ist "path" eine vollständige Dateibezeichnung vom Wurzelverzeichnis bis zur Dateiendung.
Edit:
Falsch, das wäre "absolute path".
Zuletzt geändert von mse am Mo 14. Sep 2015, 15:44, insgesamt 1-mal geändert.
ich weis gerade nicht wie ich euch das verständlicher erklären kann
Deswegen versuch ich es von Neuem. ^^
Also mein Programm soll lediglich einen Dateipfad laden und bei der ausgewählten Datei die Zeilen zählen.
So wie ich es mittlerweile habe funktioniert es auch, nur ich kann bei den Dateien, welche in dem Verzeichnis des Programmes liegen nicht die Zeilen zählen. Warum?
ich hab es jetzt mal mit ExtractFilePath() versucht und mir den Inhalt mal ausgeben lassen. Da fehlt aber dann die eigentliche Datei die ich ausgewählt habe.
mse hat geschrieben:Das ist glaube ich nicht allgemeingültig. Für mich ist "path" eine vollständige Dateibezeichnung vom Wurzelverzeichnis bis zur Dateiendung.
procedure TForm1.Bt_CountClick(Sender: TObject);
var
anzahl : integer;
datei: TStringList;
begin
datei:= TStringList.Create;
if OpenDialog1.Execute then
begin
Edit_Path.Text:= OpenDialog1.FileName;
datei.LoadFromFile(path);
Edit_Anzahl.Text:= IntToStr(datei.Count);
end;
Datei.free;
end;
Das sollte eigentlich mit logischen und physikalischen Pfaden funktionieren.
mse hat geschrieben:
@Nugi89: Setze doch einen Breakpoint in die "if FileExists(path) = true then"-Zeile und prüfe ob der Wert der Variable "path" deinen Erwartungen entspricht.
Hab da noch eine Frage am Rande.
Wenn ich mit dem OpenDialog auf dem Desktop nach einer Datei suche und nach unten scrolle bekomme ich eine Exception:
RunError(217)
Gab es da irgendeine Problembehebung ?